このページの内容は Apigee と Apigee ハイブリッドに該当します。
Apigee Edge のドキュメントを表示する。
概要
アクセス トークンに関連付けられたカスタム属性を追加または更新できます。カスタム属性には、部門名、顧客 ID、セッション ID などを使用できます。トークンと認証コードのカスタマイズもご覧ください。
このポリシーを使用して追加または変更できるのは、カスタム属性のみです。scope、status、expires_in、developer_email、client_id、org_name、refresh_count などのフィールドをこのポリシーで変更することはできません。属性がすでに存在する場合、このポリシーによって更新されます。存在していなければ、このポリシーによって属性が追加されます。参照するアクセス トークンが有効であり、承認された状態になっている必要があります。
このポリシーは拡張可能なポリシーです。Apigee ライセンスによっては、このポリシーの使用によって費用や使用量に影響する場合があります。ポリシータイプと使用量への影響については、ポリシータイプをご覧ください。
サンプル
基本的な例
以下に、OAuth 2.0 アクセス トークンを更新するために使用するポリシーの例を示します。この例では、リクエスト メッセージでアクセス トークンを見つけるために、access_token
という名前のクエリ パラメータを検索します。クライアント アプリがアクセス トークンを提示している場合、このポリシーはクエリ パラメータに含まれるアクセス トークンを特定し、そのアクセス トークンのプロファイルを更新します。department.id
という名前のカスタム プロパティをプロファイルに追加します。
<SetOAuthV2Info name="SetOAuthV2Info"> <AccessToken ref="request.queryparam.access_token"></AccessToken> <Attributes> <Attribute name="department.id" ref="request.queryparam.department_id"></Attribute> </Attributes> </SetOAuthV2Info>
要素リファレンス
要素リファレンスでは、SetOAuthV2 ポリシーの要素と属性について説明します。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <SetOAuthV2Info async="false" continueOnError="false" enabled="true" name="SetOAuthV2Info-1"> <DisplayName>Set OAuth v2.0 Info 1</DisplayName> <AccessToken ref={some-variable}></AccessToken> <Attributes/> </SetOAuthV2Info> </xml>
<SetOAuthV2Info> 属性
<SetOAuthV2Info async="false" continueOnError="false" enabled="true" name="Set-OAuth-v20-Info-1">
次の表に、すべてのポリシーの親要素に共通する属性を示します。
属性 | 説明 | デフォルト | 要否 |
---|---|---|---|
name |
ポリシーの内部名。 管理 UI プロキシ エディタで |
なし | 必須 |
continueOnError |
ポリシーが失敗したときにエラーを返す場合は、 ポリシーが失敗した後もフローの実行を続行する場合は、 |
false | 省略可 |
enabled |
ポリシーを適用するには、 ポリシーを無効にするには、 |
true | 省略可 |
async |
この属性は非推奨となりました。 |
false | 非推奨 |
<DisplayName> 要素
管理 UI プロキシ エディタで name
属性と一緒に使用して、ポリシーのラベルに使用する自然言語名を指定します。
<DisplayName>Policy Display Name</DisplayName>
デフォルト |
なし この要素を省略した場合、ポリシーの |
---|---|
要否 | 省略可 |
タイプ | 文字列 |
<AccessToken> 要素
アクセス トークンが格納される変数を指定します。たとえば、アクセス トークンがクエリ パラメータとしてリクエスト メッセージで使用されている場合は、request.queryparam.access_token
を指定します。トークンを参照する有効な変数を使用できます。まれなケースですが、リテラル トークン文字列を渡すこともできます。
<AccessToken ref="request.queryparam.access_token"></AccessToken>
デフォルト: | なし |
要否: | 必須 |
型: | 文字列 |
属性
属性 | 説明 | デフォルト | プレゼンス |
---|---|---|---|
ref |
アクセス トークン変数。通常、フロー変数から取得します。 |
なし | 省略可 |
<Attributes> 要素
変更または拡張される、アクセス トークン プロファイル内の一連の属性。
デフォルト: | なし |
要否: | 必須 |
型: | なし |
<Attributes>/<Attribute> 要素
更新する個々の属性。
name 属性で、更新するアクセス トークンのカスタム プロパティを指定します。次の例に、参照先変数の値と静的な値を使用する方法を示します。
<Attributes> <Attribute name="department.id" ref="request.queryparam.department_id"></Attribute> <Attribute name="foo">bar</Attribute> </Attributes>
デフォルト: | なし |
プレゼンス: | 省略可 |
型: | なし |
属性
属性 | 説明 | デフォルト | 要否 |
---|---|---|---|
name | 追加または変更するプロファイル属性の名前。 | なし | |
ref |
プロファイル属性に割り当てる値。 |
なし | 省略可 |
フロー変数
成功すると、次のフロー変数が設定されます。
oauthv2accesstoken.{policyName}.access_token
oauthv2accesstoken.{policyName}.client_id
oauthv2accesstoken.{policyName}.refresh_count
oauthv2accesstoken.{policyName}.organization_name
oauthv2accesstoken.{policyName}.expires_in //--in seconds
oauthv2accesstoken.{policyName}.refresh_token_expires_in //--in seconds
oauthv2accesstoken.{policyName}.issued_at
oauthv2accesstoken.{policyName}.status
oauthv2accesstoken.{policyName}.api_product_list
oauthv2accesstoken.{policyName}.token_type
oauthv2accesstoken.{policyName}.{custom_attribute_name}
スキーマ
各ポリシータイプは XML スキーマ(.xsd
)によって定義されます。参照用のポリシー スキーマは GitHub から入手できます。
エラー リファレンス
このセクションでは、このポリシーによってエラーがトリガーされたときに返される障害コードとエラー メッセージ、Apigee によって設定される障害変数について説明します。これは、障害に対処する障害ルールを作成するうえで重要な情報です。詳細については、ポリシーエラーについて知っておくべきことと障害の処理をご覧ください。
ランタイム エラー
このエラーは、ポリシーの実行時に発生することがあります。
障害コード | HTTP ステータス | 原因 |
---|---|---|
steps.oauth.v2.access_token_expired |
500 |
ポリシーに送信されたアクセス トークンが期限切れになっています。 |
steps.oauth.v2.invalid_access_token |
500 |
ポリシーに送信されたアクセス トークンが無効です。 |
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound |
401 |
このエラーのトラブルシューティングについては、Oauth2.0 Access Token Verification throws "Invalid API call as no apiproduct match found" error をご覧ください。 |
デプロイエラー
デプロイエラーについては、UI で報告されるメッセージを参照してください。
障害変数
次の変数は、このポリシーでランタイム エラーが発生したときに設定されます。
変数 | 説明 | 例 |
---|---|---|
fault.name="fault_name" |
fault_name は、上記のランタイム エラーの表に記載されている障害の名前です。障害名は、障害コードの最後の部分です。 | fault.name = "invalid_access_token" |
oauthV2.policy_name.failed |
policy_name は、障害が発生したポリシーのユーザー指定の名前です。 | oauthV2.SetTokenInfo.failed = true |
oauthV2.policy_name.fault.name |
policy_name は、障害が発生したポリシーのユーザー指定の名前です。 | oauthV2.SetTokenInfo.fault.name = invalid_access_token |
oauthv2.policy_name.fault.cause |
policy_name は、障害が発生したポリシーのユーザー指定の名前です。 | oauthV2.SetTokenInfo.cause = Invalid Access Token |
エラー レスポンスの例
{ "fault": { "faultstring": "Invalid Access Token", "detail": { "errorcode": "keymanagement.service.invalid_access_token" } } }
障害ルールの例
<FaultRule name=SetOAuthV2Info Faults"> <Step> <Name>AM-InvalidTokenResponse</Name> <Condition>(fault.name = "invalid_access_token")</Condition> </Step> <Condition>(oauthV2.failed = true) </Condition> </FaultRule>