<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 が含まれません。エンドユーザー ID が含まれるように Apigee を構成するには、<AppEndUser>
要素を OAuthv2 ポリシーに追加します。
<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 アクセス トークンを取り消せるようにするには、上記で説明するように、OAuthv2 ポリシーを構成してトークンにユーザー ID を組み込む必要があります。
アプリのエンドユーザー ID を取得するには、次のコマンドを使用します。 Developer apps API。
サンプル
以下のサンプルでは、Revoke 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 日午前 0 時(UTC)からの経過時間(ミリ秒)を表す 64 ビット(long 型)の整数の値を取ります。
要素リファレンス
要素リファレンスでは、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 |
ポリシーの内部名。 管理 UI プロキシ エディタで |
なし | 必須 |
continueOnError |
ポリシーが失敗した場合にエラーを返すには、 ポリシーが失敗した後もフローの実行を続行する場合は、 |
false | 省略可 |
enabled |
ポリシーを適用するには、 ポリシーを無効にするには、 |
true | 省略可 |
async |
この属性は非推奨となりました。 |
false | 非推奨 |
<DisplayName> 要素
管理 UI プロキシ エディタで name
属性と一緒に使用して、ポリシーのラベルに使用する自然言語名を指定します。
<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>
デフォルト |
false |
---|---|
要否 |
省略可 |
型 | ブール値 |
有効な値 | 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 日の午前 0 時(UTC)からの経過時間(ミリ秒)を表す 64 ビット(long 型)の整数。 |
有効な値 |
タイムスタンプを含むフロー変数、またはリテラルのタイムスタンプ。 タイムスタンプの値は未来、または 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>