本頁適用於 Apigee 和 Apigee Hybrid。
查看
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 |
政策的內部名稱。 您可以選擇使用 |
不適用 | 必填 |
continueOnError |
將其設為 將其設為 |
false | 選用 |
enabled |
設為 設為 |
是 | 選用 |
async |
此屬性已淘汰。 |
false | 已淘汰 |
<DisplayName> 元素
除了 name
屬性之外,您也可以在管理 UI 代理程式編輯器中使用不同的自然語言名稱標示政策。
<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>
預設值: | 不適用 |
外觀狀態: | 選用 |
類型: | 不適用 |
屬性
屬性 | 說明 | 預設 | 存在必要性 |
---|---|---|---|
名稱 | 要新增或變更的設定檔屬性名稱。 | 不適用 | |
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 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則,就必須瞭解這項資訊。如需更多資訊,請參閱「關於政策錯誤的相關資訊」和「處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。
錯誤代碼 | HTTP 狀態 | 原因 |
---|---|---|
steps.oauth.v2.access_token_expired |
500 |
傳送至政策的存取權權杖已過期。 |
steps.oauth.v2.invalid_access_token |
500 |
傳送至政策的存取權杖無效。 |
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound |
401 |
如要瞭解如何排解這項錯誤,請參閱 「Oauth2.0 存取權杖驗證會擲回『找不到相符的 apiproduct,因此 API 呼叫無效』錯誤」一文。 |
部署錯誤
請參閱 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>