이 페이지는 Apigee 및 Apigee Hybrid에 적용됩니다.
Apigee Edge 문서 보기
RevokeOAuthV2 정책을 사용하여 최종 사용자 ID, 앱 ID 또는 둘 다의 OAuth 2.0 액세스 토큰을 취소할 수 있습니다. 최종 사용자는 API를 호출하는 앱의 사용자를 의미합니다.
사용자 ID를 액세스 토큰에 저장하는 경우
사용자 ID는 기본적으로 액세스 토큰에 포함되어 있지 않습니다. 간혹 사용자 ID를 액세스 토큰에 저장하는 것이 유용할 수 있습니다. 예를 들면 다음과 같습니다.
- 웹사이트 또는 앱에서 사용자는 승인된 타사 앱을 확인할 수 있고 이러한 앱에 대한 액세스 권한을 취소할 수 있는 옵션을 제공합니다.
- 승인된 사용자가 특정 개발자 앱과 연결된 모든 액세스 토큰을 취소할 수 있습니다.
OAuth 액세스 토큰 정보
기본적으로 Apigee에서 OAuth 2.0 액세스 토큰을 생성하며 토큰 형식은 다음과 같습니다.
{ "issued_at" : "1421847736581", "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a", "scope" : "READ", "status" : "approved", "api_product_list" : "[PremiumWeatherAPI]", "expires_in" : "3599", //--in seconds "developer.email" : "tesla@weathersample.com", "organization_id" : "0", "token_type" : "BearerToken", "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP", "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL", "organization_name" : "myorg", "refresh_token_expires_in" : "0", //--in seconds "refresh_count" : "0" }
다음에 유의하세요.
- application_name 필드에는 토큰과 연결된 앱의 UUID가 포함되어 있습니다. 앱 ID별로 OAuth 2.0 액세스 토큰을 취소할 수 있으면 이 앱 ID가 사용됩니다.
- access_token 필드에는 OAuth 2.0 액세스 토큰 값이 포함되어 있습니다.
- 기본 OAuth 액세스 토큰에는 최종 사용자 ID 필드가 없습니다.
최종 사용자 ID별로 OAuth 2.0 액세스 토큰을 취소하려면 토큰에 사용자 ID가 포함되도록 OAuth 2.0 정책을 구성해야 합니다. 토큰에 최종 사용자 ID가 포함되도록 정책을 구성하면 다음과 같이 app_enduser
필드로 포함됩니다.
{ "issued_at" : "1421847736581", "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a", "scope" : "READ", "app_enduser" : "6ZG094fgnjNf02EK", "status" : "approved", "api_product_list" : "[PremiumWeatherAPI]", "expires_in" : "3599", //--in seconds "developer.email" : "tesla@weathersample.com", "organization_id" : "0", "token_type" : "BearerToken", "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP", "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL", "organization_name" : "myorg", "refresh_token_expires_in" : "0", //--in seconds "refresh_count" : "0" }
정책 구성
사용자 ID별로 토큰을 취소하려면 먼저 사용자 ID가 액세스 토큰에 추가되도록 OAuth 2.0 정책을 구성해야 합니다. 액세스 토큰에 최종 사용자 ID가 포함되면 최종 사용자 ID별로 토큰을 취소할 수 있습니다.
액세스 토큰에 최종 사용자 ID가 포함되도록 정책을 구성하려면 최종 사용자 ID가 포함된 입력 변수를 지정해야 합니다. <AppEndUser>
태그를 사용하여 변수를 지정합니다.
<OAuthV2 async="false" continueOnError="false" enabled="true" name="GenerateAccessTokenClient"> <DisplayName>OAuth 2.0.0 1</DisplayName> <ExternalAuthorization>false</ExternalAuthorization> <Operation>GenerateAccessToken</Operation> <SupportedGrantTypes> <GrantType>client_credentials</GrantType> </SupportedGrantTypes> <GenerateResponse enabled="true"/> <GrantType>request.queryparam.grant_type</GrantType> <AppEndUser>request.header.appuserID</AppEndUser> <ExpiresIn>960000</ExpiresIn> </OAuthV2>
다음 예시는 EndUserId
에 의해 액세스 권한이 취소되도록 구성된 RevokeOAuthV2
정책입니다.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RevokeOAuthV2 continueOnError="false" enabled="true" name="GetOAuthV2Info-1"> <DisplayName>Get OAuth v2.0 Info 1</DisplayName> <EndUserId ref="request.header.appuserID"></EndUserId> <Cascade>false</Cascade> </RevokeOAuthV2>
OAuth V2 정책 취소도 참조하세요.
다음 예시 명령어는 토큰을 생성하고 appuserID
헤더에 사용자 ID를 전달합니다.
curl -H "appuserID:6ZG094fgnjNf02EK" \ -H "Content-Type: application/x-www-form-urlencoded" \ -H "Authorization: Basic c3FIOG9vSGV4VHo4QzAyg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ" \ -X POST "https://apitest.acme.com/oauth/token" \ -d "grant_type=client_credentials"
다른 방법으로 정보를 요청의 일부로 전달할 수 있습니다. 예를 들어 다음을 수행할 수 있습니다.
- 양식 매개변수 변수 request.formparam.appuserID를 사용합니다.
- 최종 사용자 ID를 제공하는 흐름 변수를 사용합니다.