토큰 인트로스펙션 (Token introspection)이란?
토큰 인트로스펙션 (Token introspection)은 RFC 7662 에 정의된 OAuth 2.0 확장 기능으로, 클라이언트 가 인증 서버 (Authorization server) 에게 질의하여 액세스 토큰을 검증하고 그 메타데이터를 가져올 수 있도록 합니다. 이 확장 기능은 다음과 같은 경우에 유용합니다:
- 클라이언트가 실시간으로 액세스 토큰의 유효성을 확인하고자 할 때.
- 액세스 토큰이 불투명 토큰 일 경우(자체 포함되지 않음) 인가 서버를 통해 검증이 필요할 때.
토큰 인트로스펙션 (Token introspection)은 어떻게 작동하나요?
다음은 토큰 인트로스펙션 요청의 비표준 예시입니다:
POST /introspect HTTP/1.1
Host: authorization-server.example.com
Content-Type: application/x-www-form-urlencoded
token=random-token-value
&token_type_hint=access_token
token_type_hint
매개변수는 선택사항이며, 인트로스펙션할 토큰의 유형으로 설정해야 합니다. 액세스 토큰이 유효하면, 인가 서버는 토큰의 메타데이터를 응답으로 반환합니다:
HTTP/1.1 200 OK
Content-Type: application/json
{
"active": true,
"scope": "read write",
"client_id": "client-id",
"username": "johndoe",
"token_type": "Bearer",
"exp": 1634020800,
"iat": 1634017200
}
모든 인가 서버가 토큰 인트로스펙션을 지원하는 것은 아니며, 모든 토큰이 인트로스펙션 가능하지도 않습니다. 인증 서버 (Authorization server) 는 다양한 요인에 따라 토큰 인트로스펙션 사용을 제한할 수 있습니다. 예를 들어, 일부 인가 서버는 JWT 에 대한 인트로스펙션을 지원하지 않을 수 있습니다.
토큰 인트로스펙션 요청의 주요 매개변수
토큰 인트로스펙션 요청의 주요 매개변수는 다음과 같습니다:
token
: 인트로스펙션할 토큰.token_type_hint
: 인트로스펙션할 토큰의 유형.access_token
또는refresh_token
일 수 있습니다.