Skip to main content

OAuth 2.0 Authorization Code Flow with PKCE

소개

OAuth 2.0은 애플리케이션의 스코프에 대한 더 큰 제어와 여러 디바이스에 걸친 승인 흐름을 허용하는 산업 표준 승인 프로토콜입니다. OAuth 2.0을 사용하면 사용자를 대신하여 특정 권한을 부여하는 세분화된 스코프를 선택할 수 있습니다. 앱에서 OAuth 2.0을 활성화하려면 Developer Console의 앱 설정 섹션에서 찾을 수 있는 앱의 인증 설정에서 활성화해야 합니다.

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

기본적으로 Authorization Code Flow with PKCE를 통해 생성하는 액세스 토큰은 offline.access 스코프를 사용하지 않는 한 두 시간 동안만 유효합니다.

Refresh token

Refresh token을 사용하면 애플리케이션이 refresh token 흐름을 통해 사용자에게 프롬프트하지 않고 새 액세스 토큰을 얻을 수 있습니다. offline.access 스코프가 적용되면 OAuth 2.0 refresh token이 발급됩니다. 이 refresh token으로 액세스 토큰을 얻을 수 있습니다. 이 스코프가 전달되지 않으면 refresh token이 생성되지 않습니다. 새 액세스 토큰을 얻기 위해 refresh token을 사용하는 요청의 예는 다음과 같습니다:

앱 설정

앱의 인증 설정을 OAuth 1.0a 또는 OAuth 2.0으로 선택할 수 있습니다. 또한 앱이 OAuth 1.0a와 OAuth 2.0 모두에 액세스하도록 활성화할 수 있습니다. OAuth 2.0은 X API v2에서만 사용할 수 있습니다. OAuth 2.0을 선택한 경우 앱의 Keys and Tokens 섹션에서 Client ID를 볼 수 있습니다.

Confidential client

Confidential client는 자격 증명을 승인되지 않은 당사자에게 노출하지 않고 안전한 방식으로 보유할 수 있으며, 승인 서버와 안전하게 인증하여 client secret을 안전하게 유지합니다. Public client는 일반적으로 브라우저나 모바일 디바이스에서 실행되고 client secret을 사용할 수 없습니다. Confidential client인 앱 유형을 선택하면 client secret이 제공됩니다. Developer Console에서 confidential client인 클라이언트 유형을 선택한 경우, Client Secret도 볼 수 있습니다. 옵션은 Native App, Single page App, Web App, Automated App 또는 bot입니다. Native App과 Single page App은 public client이고 Web App과 Automated App 또는 bot은 confidential client입니다. 유효한 Authorization Header가 있는 confidential client의 경우 client id가 필요하지 않습니다. public client의 요청에는 여전히 요청 본문에 Client Id를 포함해야 합니다.

스코프

스코프를 사용하면 앱에 대한 세분화된 액세스를 설정할 수 있으므로 앱은 필요한 권한만 가집니다. 어떤 스코프가 어떤 엔드포인트에 매핑되는지 자세히 알아보려면 인증 매핑 가이드를 확인하세요.

Rate limit

대부분의 경우, rate limit은 Tweet lookup과 Users lookup을 제외하고 OAuth 1.0a로 인증하는 것과 동일합니다. Tweet lookup과 user lookup에 OAuth 2.0을 사용할 때 App당 제한을 15분당 300에서 900 요청으로 늘리고 있습니다. 자세히 알아보려면 rate limits 문서를 확인하세요.

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을 사용하면 authorize URL을 생성하여, X의 “Sign In”과 유사한 인증 흐름을 통해 사용자가 인증할 수 있도록 할 수 있습니다. 생성하는 URL의 예는 다음과 같습니다:
이 URL이 작동하려면 적절한 인코딩이 필요하며, 퍼센트 인코딩에 대한 문서를 반드시 확인하세요.