このページの内容は Apigee と Apigee ハイブリッドに該当します。
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 アクセス トークンを取り消すには、OAuth 2.0 ポリシーを構成してトークンにユーザー ID を含める必要があります。トークンにエンドユーザー ID が含まれるように、ポリシーを構成すると、以下に示すように、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 のトークンを取り消すには、まず OAuth 2.0 ポリシーを構成してユーザー ID をアクセス トークンに追加します。エンドユーザー 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 を提供するフロー変数を使用する