Skip to main content

PKCE를 사용하는 OAuth 2.0 권한 부여 코드 플로우

소개

OAuth 2.0은 애플리케이션의 범위(scope)와 여러 기기에 걸친 인가 플로우를 보다 세밀하게 제어할 수 있게 해 주는 업계 표준 인가 프로토콜입니다. OAuth 2.0을 사용하면 사용자 대신 특정 권한을 부여하는 세분화된 범위를 선택할 수 있습니다.  App에서 OAuth 2.0을 사용하려면 개발자 콘솔의 App 설정 섹션에 있는 App 인증 설정에서 OAuth 2.0을 활성화해야 합니다.

내 자격 증명은 얼마나 오래 유효한가요?

기본적으로 PKCE를 사용하는 Authorization Code Flow를 통해 발급한 access token은 offline.access scope를 사용하지 않은 경우 2시간만 유효합니다.

리프레시 토큰

리프레시 토큰을 사용하면 리프레시 토큰 플로를 통해 사용자에게 다시 동의를 요청하지 않고도 애플리케이션이 새 액세스 토큰을 발급받을 수 있습니다. 요청에 offline.access 스코프가 포함되면 OAuth 2.0 리프레시 토큰이 발급됩니다. 이 리프레시 토큰을 사용해 액세스 토큰을 발급받을 수 있습니다. 이 스코프가 포함되지 않으면 리프레시 토큰은 생성되지 않습니다. 리프레시 토큰을 사용해 새 액세스 토큰을 발급받기 위해 수행하는 요청 예시는 다음과 같습니다.

App 설정

App의 인증 설정을 OAuth 1.0a 또는 OAuth 2.0으로 구성할 수 있습니다. App이 OAuth 1.0a와 OAuth 2.0 둘 다를 사용하도록 설정할 수도 있습니다. OAuth 2.0은 X API v2와만 함께 사용할 수 있습니다. OAuth 2.0을 선택한 경우 App의 Keys and Tokens 섹션에서 Client ID를 확인할 수 있습니다. 

기밀 클라이언트

기밀 클라이언트는 자격 증명을 무단 당사자에게 노출하지 않고 안전하게 보관할 수 있으며, 인증 서버와 안전하게 통신하여 클라이언트 시크릿을 보호할 수 있습니다. 반면 Public 클라이언트는 일반적으로 브라우저나 모바일 기기에서 실행되므로 클라이언트 시크릿을 안전하게 사용할 수 없습니다. App 유형에서 기밀 클라이언트를 선택하면 Client Secret이 제공됩니다.  개발자 콘솔에서 클라이언트 유형으로 기밀 클라이언트를 선택한 경우, Client Secret도 확인할 수 있습니다. 선택 가능한 옵션은 Native App, Single page App, Web App, Automated App, 또는 bot입니다. Native App과 Single page App은 Public 클라이언트이며, Web App과 Automated App 또는 bot은 기밀 클라이언트입니다. 유효한 Authorization 헤더를 사용하는 기밀 클라이언트의 경우 client id는 필요하지 않습니다. Public 클라이언트로 요청을 보낼 때는 요청 본문에 Client Id를 포함해야 합니다. 

Scopes

Scopes를 사용하면 App에 대해 세분화된 액세스 권한을 설정하여, App이 필요한 권한만 갖도록 할 수 있습니다. 각 scope가 어떤 endpoint에 매핑되는지 자세히 알아보려면 인증 매핑 가이드를 확인하세요.

요청 한도

대부분의 경우 요청 한도는 OAuth 1.0a로 인증할 때와 동일하지만, Tweet 조회와 사용자 조회는 예외입니다. Tweet 조회 및 사용자 조회에 OAuth 2.0을 사용하는 경우, App당 요청 한도를 15분당 300건에서 900건으로 상향합니다. 자세한 내용은 요청 한도에 대한 문서를 참고하세요.

Grant types

이번 초기 출시에서는 지원되는 grant typesPKCE를 사용하는 authorization coderefresh token만 지원합니다. 앞으로 더 많은 grant type을 지원할 수 있습니다.

OAuth 2.0 플로우

OAuth 2.0는 현재 OAuth 1.0a에서 사용하고 있는 것과 유사한 플로우를 따릅니다. 이 주제에 대한 다이어그램과 자세한 설명은 관련 문서에서 확인할 수 있습니다. 

용어 사전

매개변수

OAuth 2.0 authorize URL을 구성하려면 authorization URL에 다음 매개변수들이 포함되어 있는지 확인해야 합니다. 

Authorize URL

OAuth 2.0를 사용하면 사용자가 X의 “Sign In”과 유사한 인증 플로를 통해 인증할 수 있도록 사용할 authorize URL을 생성합니다.  생성할 URL의 예시는 다음과 같습니다:
이 URL이 올바르게 작동하려면 적절한 인코딩이 필요합니다. 퍼센트 인코딩 관련 문서를 반드시 확인하십시오.