토큰 취소 및 승인

이 페이지는 ApigeeApigee Hybrid에 적용됩니다.

Apigee Edge 문서 보기

토큰 취소 이해

경우에 따라 앱에서 개별 토큰을 명시적으로 취소하거나 무효화해야 합니다. 일반적인 경우는 사용자가 OAuth 지원 앱에서 로그아웃하는 경우입니다. 취소된 토큰은 더 이상 승인에 유용하지 않습니다. 토큰이 취소된 후 앱에서 API 프록시에 이 토큰을 제공하면 VerifyAccessToken 작업이 있는 OAuthV2 정책이 해당 토큰을 거부합니다.

토큰 취소 표준은 IETF RFC 7009, OAuth 2.0 토큰 취소 사양으로 정의됩니다.

특정 토큰을 취소하는 대신 클라이언트 ID나 전체 개발자 앱을 취소할 수 있습니다. 자세한 내용은 개발자 앱 키 취소 및 승인을 참조하세요. 개별 토큰 취소와 비교하여 클라이언트 ID나 개발자 앱을 취소하면 영향이 더욱 광범위해집니다. 클라이언트 ID나 개발자 앱을 취소하면 Apigee는 해당 클라이언트 ID나 개발자 앱과 연결된 모든 토큰을 거부하고 더 이상 해당 클라이언트 ID나 개발자 앱의 새 토큰을 발급하지 않습니다.

액세스 토큰 또는 갱신 토큰 중 하나를 취소한 후에 언제든지 만료되기 전에 토큰을 선택적으로 다시 승인할 수 있습니다. 토큰을 다시 승인하면 Apigee OAuthV2 정책에서 토큰이 만료될 때까지 해당 토큰을 다시 승인합니다. 토큰 만료는 토큰의 승인 또는 취소 상태와 관계가 없습니다. ValidateAccessToken 작업이 있는 Apigee OAuthV2 정책은 토큰이 승인되고(또는 취소되지 않음) 만료되지 않은 경우에만 액세스 토큰을 허용합니다. 마찬가지로 RefreshAccessToken 작업이 포함된 Apigee OAuthV2 정책은 토큰이 승인되고(또는 취소되지 않음) 만료되지 않은 경우에만 갱신 토큰을 허용합니다.

토큰을 취소하는 데 사용할 수 있는 정책에는 두 가지가 있습니다.

OAuthV2 정책은 한 번에 단일 토큰을 취소하고 복구할 수도 있습니다. RevokeOAuthV2 정책은 앱 ID나 최종 사용자 ID를 통해 토큰 여러 개를 한 번에 취소할 수 있다는 점에서 보다 유연합니다. 이 페이지의 나머지 부분에서는 OAuthV2 정책을 사용하여 토큰을 취소하거나 이전에 취소된 토큰을 복구하는 방법을 설명합니다.

액세스 권한 및 갱신 토큰 취소

다음은 InvalidateToken 작업을 사용하는 OAuthV2 정책 구성의 예시입니다. 이 경우 Token 요소의 cascade 속성이 true이므로 Apigee에서 액세스 토큰과 관련 갱신 토큰을 모두 취소합니다.

  <OAuthV2 name="InvalidateToken">
    <Operation>InvalidateToken</Operation>
    <Tokens>
      <Token type="accesstoken" cascade="true">request.queryparam.token</Token>
    </Tokens>
  </OAuthV2>
  

cascade 플래그 작동 방식에 대한 자세한 내용은 토큰 요소 속성에 대한 다음 섹션을 참조하세요.

<Tokens>/<Token> 요소

취소할 토큰을 지정하는 흐름 변수를 식별합니다. 예를 들어 개발자가 access_token이라는 쿼리 매개변수를 사용하여 취소 요청을 제출할 경우 올바른 흐름 변수는 request.queryparam.access_token입니다. 예를 들어 HTTP 헤더의 토큰을 요구하려면 이 값을 request.header.access_token으로 설정합니다.

JWT 형식의 액세스 토큰을 취소할 수는 없습니다. 또한 OAuthV2 정책을 사용하여 JWT 형식의 액세스 토큰과 연결된 갱신 토큰을 취소할 수 없습니다. 여기에 지정된 컨텍스트 변수가 JWT 액세스 토큰 또는 JWT 액세스 토큰과 연결된 갱신 토큰을 참조하면 런타임 오류가 발생합니다. RevokeOAuthV2 정책을 사용하여 JWT 액세스 토큰과 연결된 갱신 토큰을 취소할 수 있습니다.

속성

  • type(필수, 문자열): 지정된 변수로 식별된 토큰 유형입니다. 지원되는 값은 accesstokenrefreshtoken:입니다.
    • 액세스 토큰을 취소하려면 accesstoken 유형을 지정합니다.
    • 액세스 토큰과 갱신 토큰을 모두 취소하려면 refreshtoken 유형을 지정합니다. refreshtoken 유형이 나타나면 Apigee는 토큰이 갱신 토큰이라고 가정합니다. 갱신 토큰을 찾으면 취소됩니다. 갱신 토큰을 찾을 수 없다면 Apigee는 액세스 토큰인지 확인합니다. 액세스 토큰이 존재하는 경우 취소됩니다.

      참고: 이미 무효화된 토큰을 InvalidateToken 정책에 전달하면 오류가 반환될 것으로 생각할 수도 있지만 정책은 오류를 반환하지 않습니다. 이러한 작업은 아무런 영향을 미치지 않습니다.
  • cascade(선택사항, 부울, 기본값: true) 이 속성의 기본 용도는 연결된 액세스 토큰을 취소하지 않고 갱신 토큰을 취소하는 것입니다. 다음 사례를 참조하세요.
    • 갱신 토큰만 취소하고 관련 액세스 토큰은 취소하지 않습니다. 이렇게 하려면 <Token> 유형을 refreshtoken으로 설정하고 cascade를 false로 설정합니다.
    • 액세스 토큰과 갱신 토큰을 모두 취소합니다. 이렇게 하려면 <Token> 유형을 accesstoken으로 설정합니다. cascade의 값은 true(기본값) 또는 false가 될 수 있습니다. 이를 true로 설정하면 액세스 토큰과 갱신 토큰이 모두 취소됩니다. 이를 false로 설정하면 액세스 토큰이 취소되고 갱신 토큰을 사용할 수 없게 됩니다. 자세한 설명은 아래 참고 사항을 참조하세요.
    • 액세스 토큰을 취소하고 관련 갱신 토큰은 취소하지 않습니다. 이 작업은 지원되지 않습니다. 자세한 설명은 아래 참고 사항을 참조하세요.

참고: 보안상의 이유로 액세스 토큰을 취소하면 관련 갱신 토큰도 함께 취소됩니다. 따라서 cascade 속성을 사용하여 액세스 토큰만 취소할 수는 없습니다. 예를 들어 <Token> 유형을 accesstoken으로 설정하고 cascade=false를 설정하면 액세스 토큰이 예상대로 취소되지만 관련 갱신 토큰은 사용할 수 없습니다. 취소된 액세스 토큰을 갱신하는 데 사용할 수 없습니다. cascade 속성의 기본 사용 사례는 갱신 토큰만 취소하려는 경우입니다. 이 경우 <Token> 유형을 refreshtoken으로 설정하고 cascade=false를 설정합니다. 갱신 토큰은 취소되지만 관련 액세스 토큰은 만료되거나 취소되기 전까지 유효합니다. 자세한 내용은 커뮤니티의 포럼 토론을 참조하세요.

액세스 권한 및 갱신 토큰 승인

ValidateToken 작업을 사용하여 취소된 토큰을 '다시 승인'합니다. 즉, 이 작업을 적용하면 대상 액세스 토큰 또는 갱신 토큰의 상태가 '취소됨'에서 '승인됨'으로 변경됩니다. 취소된 토큰이 아직 만료되지 않았다면 승인할 수 있습니다.

<OAuthV2 name="ValidateToken">
  <Operation>ValidateToken</Operation>
  <Tokens>
    <Token type="refreshtoken" cascade="true">flow.variable</Token>
  </Tokens>
</OAuthV2>

<Tokens>/<Token> 요소

승인할 토큰을 지정하는 흐름 변수를 식별합니다. 예를 들어 개발자가 access_token이라는 쿼리 매개변수를 사용하여 승인 요청을 제출해야 할 경우 올바른 흐름 변수는 request.queryparam.access_token입니다. 예를 들어 HTTP 헤더의 토큰을 요구하려면 이 값을 request.header.access_token으로 설정합니다.

속성

  • type(필수, 문자열) 지정된 변수로 식별된 토큰 유형입니다. 지원되는 값은 accesstokenrefreshtoken입니다.
  • cascade (선택사항, 부울): 기본적으로 이 옵션은 true로 설정되며 승인이 관련 토큰에도 적용되도록 만듭니다. 따라서 갱신 토큰에 적용하면 연결된 액세스 토큰도 승인됩니다. 액세스 토큰에 적용한 경우 해당 갱신 토큰도 승인됩니다. 이를 false로 설정하면 지정된 액세스 토큰 또는 갱신 토큰만 승인됩니다.