한국어
  • oauth 2.0
  • token introspection
  • access token
  • refresh token
  • opaque token

OAuth 2.0 토큰 검사

이 기사는 OAuth 2.0 토큰 검사에 대해 탐구하며, 보호된 리소스가 인증 서버에 토큰 메타데이터를 쿼리하여 액세스 토큰이나 갱신 토큰이 유효한지 여부를 결정하는 방법에 대해 설명합니다.

Darcy Ye
Darcy Ye
Developer

OAuth 2.0 토큰 검사는 권한이 부여된 보호된 리소스가 OAuth 클라이언트가 제공한 특정 토큰(액세스 토큰 또는 갱신 토큰)에 관련된 메타데이터를 결정하기 위해 인증 서버에 쿼리할 수 있는 방법을 정의합니다. 특정 토큰의 메타데이터를 기반으로, 리소스 소유자는 보호된 리소스에 접근할 수 있습니다.

이 메타데이터에는 다음이 포함됩니다:

  • 토큰이 현재 활성 상태인지 (또는 만료되었거나 취소되었는지)
  • 액세스 토큰이 부여하는 권한 (일반적으로 OAuth 2.0 스코프를 통해 전달됨)
  • 토큰이 부여된 인증 컨텍스트 (누가 토큰을 승인했는지 및 어떤 클라이언트에게 발급되었는지 포함)

토큰 검사는 보호된 리소스가 토큰 자체에 이 정보가 포함되어 있는지 여부에 관계없이 이 정보를 쿼리할 수 있게 합니다.

액세스 토큰은 인코딩 방식에 따라 두 가지 유형이 있습니다:

  • 식별자 기반: 토큰은 인증 서버의 데이터베이스에서 권한과 관련된 무작위의 추측하기 어려운 식별자를 나타냅니다.
  • 자체 포함: 권한은 토큰 자체 내에서 인코딩되며, 변조를 방지하기 위해 암호화로 보호됩니다. JSON Web Token (JWT)은 이 방법의 일반적인 표준입니다.

자체 포함 토큰의 경우, 권한 관련 메타데이터는 액세스 토큰에서 직접 구문 분석할 수 있습니다. 그러나 식별자 기반 토큰의 경우에는 인증 서버의 토큰 검사 기능을 사용하여 메타데이터를 확인/검색해야 합니다.

토큰 검사 요청

식별자 기반 액세스 토큰을 사용하려면 네트워크 요청을 통해 인증 서버에게 확인을 받아야 합니다. 이를 위해 OAuth 2.0 토큰 검사 (RFC 7662)라는 표준 프로토콜이 있습니다.

보호된 리소스는 토큰을 인증 서버의 검사 엔드포인트에 POST하며, 그 결과 토큰의 매개변수를 포함하는 JSON 객체를 받습니다.

검사 요청은 임의로 시작될 수 없으며, 다음 조건 중 하나를 충족해야 합니다:

  • 자격 증명을 사용한 인증 (인증 서버에 사전 등록해야 함), 또는
  • 액세스 토큰을 사용한 인증.

결과적으로, 이 특정 상호 작용에서 보호된 리소스는 OAuth 클라이언트가 되고, 인증 서버는 보호된 리소스가 됩니다.

아래는 보호된 리소스가 OAuth 클라이언트로 인증 서버에 등록한 후 얻은 클라이언트 ID와 클라이언트 비밀을 사용하여 인증하는 검사 요청의 예입니다.

아래는 액세스 토큰을 직접 사용하는 검사 요청의 예입니다. 액세스 토큰은 등록된 머신 대 머신 앱의 자격 증명과 client_credentials 승인 유형을 사용하여 /token 엔드포인트에서 직접 얻을 수 있습니다.

토큰 검사 응답

가장 중요한 매개변수는 active인데, 이는 불리언 값입니다. true이면 토큰이 유효함을 나타내며, JSON 객체에는 범위 값과 같은 다른 토큰 세부 정보가 포함됩니다. false이면 토큰이 유효하지 않거나 만료된 것으로, 보호된 리소스는 invalid_token 오류 코드와 함께 401 미인증 응답을 반환해야 합니다.

다음은 유효한 토큰의 응답 예제입니다:

active를 제외하고, 모든 다른 매개변수는 선택 사항입니다.

보호된 리소스는 JWT 액세스 토큰을 구문 분석하고 검증하는 것과 유사하게 이러한 추가 필드를 사용하여 접근 권한을 결정할 수 있습니다.