<ph type="x-smartling-placeholder"></ph>
현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서. 정보
개요
개발자 앱 ID, 앱 최종 사용자 ID 또는 둘 다와 연결된 OAuth2 액세스 토큰을 취소합니다.
OAuthv2 정책을 사용하여 OAuth 2.0 액세스 토큰을 생성합니다. Apigee 생성 토큰 형식은 다음과 같습니다.
{ "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
요소에는 토큰과 연결된 개발자 앱 ID가 포함됩니다.
기본적으로 Apigee는 토큰에 최종 사용자 ID를 포함하지 않습니다. OAuthv2 정책에 <AppEndUser>
요소를 추가하면 Apigee가 최종 사용자 ID를 포함하도록 구성할 수 있습니다.
<OAuthV2 name="GenerateAccessTokenClient"> <Operation>GenerateAccessTokenV/Operation> ... <AppEndUser>request.queryparam.app_enduser</AppEndUser> </OAuthV2>
이 예시에서는 최종 사용자 ID를 app_enduser
라는 쿼리 매개변수의 OAuthv2 정책에 전달합니다.
그러면 최종 사용자 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와 연결된 OAuth2 액세스 토큰을 취소합니다. Apigee에서 생성한 모든 OAuth2 액세스 토큰에는 토큰과 연결된 개발자 앱의 ID가 포함됩니다. 그러면 앱 ID에 따라 토큰을 취소할 수 있습니다.
Developer apps API를 사용하여 특정 개발자의 앱 ID 목록을 가져옵니다.
Developer apps API를 사용할 수도 있습니다. 앱에 대한 세부정보를 확인할 수 있습니다.
앱 최종 사용자 ID로 취소
특정 앱 최종 사용자의 ID에 연결된 OAuth2 액세스 토큰을 취소합니다. 이 토큰은 토큰이 발급된 사용자의 ID와 연결됩니다.
기본적으로 OAuth 액세스 토큰에는 최종 사용자 ID 필드가 없습니다. 최종 사용자 ID별로 OAuth 2.0 액세스 토큰 취소를 사용 설정하려면 위와 같이 토큰에 사용자 ID가 포함되도록 OAuthv2 정책을 구성해야 합니다.
앱 최종 사용자 ID를 가져오려면 다음을 사용합니다. 개발자 앱 API.
샘플
다음 샘플에서는 OAuth V2 정책 취소를 사용하여 OAuth2 액세스 토큰을 취소합니다.
개발자 앱 ID
개발자 앱 ID로 액세스 토큰을 취소하려면 정책에서 <AppId>
요소를 사용합니다.
다음 예시는 app_id
라는 쿼리 매개변수에서 액세스 토큰의 개발자 앱 ID를 찾으려고 합니다.
<RevokeOAuthV2 continueOnError="false" enabled="true" name="MyRevokeTokenPolicy"> <DisplayName>Revoke OAuth v2.0-1</DisplayName> <AppId ref="request.queryparam.app_id"></AppId> </RevokeOAuthV2>
개발자 앱 ID가 지정되면 정책은 액세스 토큰을 취소합니다.
이전 타임스탬프 취소
특정 날짜와 시간 이전에 생성된 개발자 앱 ID로 액세스 토큰을 취소하려면 정책의 <RevokeBeforeTimestamp>
요소를 사용합니다. <RevokeBeforeTimestamp>
는 UTC 에포크 시간을 밀리초 단위로 지정합니다. 이 시간 이전에 발급된 모든 토큰은 취소됩니다.
다음 예시는 2019년 7월 1일 이전에 만든 개발자 앱의 액세스 토큰을 취소합니다.
<RevokeOAuthV2 continueOnError="false" enabled="true" name="MyRevokeTokenPolicy"> <DisplayName>Revoke OAuth v2.0-1</DisplayName> <AppId ref="request.queryparam.app_id"></AppId> <RevokeBeforeTimestamp>1561939200000</RevokeBeforeTimestamp> </RevokeOAuthV2>
<RevokeBeforeTimestamp>
요소는 1970년 1월 1일 자정(UTC) 이후부터 경과된 밀리초 수를 나타내는 64비트(긴) 정수를 취합니다.
요소 참조
요소 참조는 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> <AppId ref="variable"></AppId> <EndUserId ref="variable"></EndUserId> <RevokeBeforeTimestamp ref="variable"></RevokeBeforeTimestamp> <Cascade>false</Cascade> </RevokeOAuthV2>
<RevokeOAuthV2> 속성
<RevokeOAuthV2 continueOnError="false" enabled="true" name="Revoke-OAuth-v20-1">
다음 표는 모든 정책 상위 요소의 공통 속성에 대해 설명합니다.
속성 | 설명 | 기본값 | 현재 상태 |
---|---|---|---|
name |
정책의 내부 이름입니다. 원하는 경우 |
해당 없음 | 필수 |
continueOnError |
정책이 실패할 경우 오류가 반환되도록 하려면 정책이 실패해도 흐름 실행이 계속되도록 하려면 |
거짓 | 선택사항 |
enabled |
정책을 시행하려면 정책을 중지하려면 |
참 | 선택사항 |
async |
이 속성은 지원이 중단되었습니다. |
거짓 | 지원 중단됨 |
<DisplayName> 요소
name
속성 외에도 이 요소를 사용하여 관리 UI 프록시 편집기의 정책에 다른 자연어 이름으로 라벨을 지정합니다.
<DisplayName>Policy Display Name</DisplayName>
기본값 |
해당 없음 이 요소를 생략하면 정책 |
---|---|
현재 상태 | 선택사항 |
유형 | 문자열 |
<AppId> 요소
취소할 토큰의 개발자 앱 ID를 지정합니다. 앱 ID나 리터럴 앱 ID가 포함된 변수를 전달합니다.
<AppId>appIdString</AppId> or: <AppId ref="request.queryparam.app_id"></AppId>
기본값 |
|
---|---|
접속 상태 |
선택사항 |
유형 | 문자열 |
유효한 값 |
앱 ID 문자열이 포함된 흐름 변수 또는 리터럴 문자열 |
<Cascade> 요소
true
이고 기존의 비공개 액세스 토큰이 있는 경우 <AppId>
또는 <EndUserId>
가 일치하면 갱신 토큰과 액세스 토큰이 모두 취소됩니다.
false
인 경우 액세스 토큰만 취소되고 갱신 토큰은 변경되지 않습니다. 비공개 액세스 토큰에만 동일한 동작이 적용됩니다.
<Cascade>false<Cascade>
기본값 |
거짓 |
---|---|
접속 상태 |
선택사항 |
유형 | 부울 |
유효한 값 | true 또는 false |
<EndUserId> 요소
취소할 토큰의 앱 최종 사용자 ID를 지정합니다. 사용자 ID나 리터럴 토큰 문자열이 포함된 변수를 전달합니다.
<EndUserId>userIdString</EndUserId> or: <EndUserId ref="request.queryparam.access_token"></EndUserId>
기본값 |
|
---|---|
접속 상태 |
선택사항 |
유형 | 문자열 |
유효한 값 |
사용자 ID 문자열이 포함된 흐름 변수나 리터럴 문자열 |
<RevokeBeforeTimestamp> 요소
타임스탬프 이전에 발행된 토큰을 취소합니다. 이 요소는 <AppId>
및 <EndUserId>
와 함께 작동하여 특정 시간 전에 토큰을 취소할 수 있습니다.
기본값은 정책이 실행되는 시간입니다.
<RevokeBeforeTimestamp>timeStampString</RevokeBeforeTimestamp> or: <RevokeBeforeTimestamp ref="request.queryparam.revoke_since_timestamp"></RevokeBeforeTimestamp>
기본값 |
정책이 실행되는 타임스탬프입니다. |
---|---|
접속 상태 |
선택사항 |
유형 | 1970년 1월 1일 자정(UTC) 이후 경과된 밀리초 수를 나타내는 64비트 정수입니다. |
유효한 값 |
타임스탬프가 포함된 흐름 변수 또는 리터럴 타임스탬프. 타임스탬프는 미래 날짜일 수 없으며 2014년 1월 1일 이전일 수 없습니다. |
흐름 변수
RevokeOAuthV2 정책은 흐름 변수를 설정하지 않습니다.
오류 참조
이 섹션에서는 반환되는 오류 코드, 오류 메시지, 그리고 이 정책이 오류를 트리거할 때 Edge에서 설정하는 오류 변수를 설명합니다. 오류를 처리하기 위해 오류 규칙을 개발 중인 경우, 이 정보는 중요합니다. 자세한 내용은 정책 오류에 대해 알아야 할 사항 및 오류 처리를 참조하세요.
런타임 오류
이러한 오류는 정책이 실행될 때 발생할 수 있습니다. 아래의 오류 이름은 오류가 발생할 때 fault.name
변수에 할당되는 문자열입니다. 자세한 내용은 아래의 오류 변수 섹션을 참조하세요.
오류 코드 | HTTP 상태 | 원인 |
---|---|---|
steps.oauth.v2.InvalidFutureTimestamp |
500 | 타임스탬프는 미래일 수 없습니다. |
steps.oauth.v2.InvalidEarlyTimestamp |
500 | 타임스탬프는 2014년 1월 1일 이전일 수 없습니다. |
steps.oauth.v2.InvalidTimestamp |
500 | 타임스탬프가 잘못되었습니다. |
steps.oauth.v2.EmptyAppAndEndUserId |
500 | AppdId 및 EndUserId 모두 비워 둘 수 없습니다. |
배포 오류
배포 오류에 대한 자세한 내용은 UI에 보고된 메시지를 참조하세요.
오류 변수
이러한 변수는 이 정책이 런타임 시 오류를 트리거할 때 설정됩니다.
변수 | 위치 | 예 |
---|---|---|
fault.name="fault_name" |
fault_name은 위의 런타임 오류 표에 나열된 오류 이름입니다. 오류 이름은 오류 코드의 마지막 부분입니다. | fault.name Matches "IPDeniedAccess" |
oauthV2.policy_name.failed |
policy_name은 오류를 발생시킨 정책의 사용자 지정 이름입니다. | oauthV2.GetTokenInfo.failed = true |
oauthV2.policy_name.fault.name |
policy_name은 오류를 발생시킨 정책의 사용자 지정 이름입니다. | oauthV2.GetToKenInfo.fault.name = invalid_client-invalid_client_id |
oauthV2.policy_name.fault.cause |
policy_name은 오류를 발생시킨 정책의 사용자 지정 이름입니다. | oauthV2.GetTokenInfo.cause = ClientID is Invalid |
오류 응답 예시
{ "fault":{ "faultstring":"Timestamp is in the future.", "detail":{ "errorcode":"steps.oauth.v2.InvalidFutureTimestamp" } } }
오류 규칙 예시
<FaultRule name="RevokeOAuthV2 Faults"> <Step> <Name>AM-InvalidTimestamp</Name> </Step> <Condition>(fault.name = "InvalidFutureTimestamp")</Condition> </FaultRule>