本頁內容適用於 Apigee,但不適用於 Apigee Hybrid。
查看
Apigee Edge 說明文件。
總覽
根據 Google Cloud IAM,使用 VerifyIAM 對 API 存取權強制執行授權檢查。這是 OAuthv2 政策和 VerifyAPIKey 政策的替代方案。如要瞭解如何在以 IAM 為基礎的存取權控管解決方案中加入 VerifyIAM,請參閱「以 IAM 為基礎的 API 驗證總覽」。
這項政策屬於標準政策,可部署至任何環境類型。如要瞭解各環境類型適用的政策類型和可用性,請參閱「政策類型」。
元素參考資料
本參考資料說明 VerifyIAM 政策的元素和屬性。
<VerifyIAM async="false" continueOnError="false" enabled="true" name="MyVerifyIAMPolicy"> <DisplayName>Custom label used in UI</DisplayName> <CredentialSource>flow_variable_name_containing_credential_value</CredentialSource> </VerifyIAM>
<VerifyIAM> 屬性
<VerifyIAM async="false" continueOnError="false" enabled="true" name="MyVerifyIAMPolicy">
下表說明所有政策父項元素的共同屬性:
屬性 | 說明 | 預設 | 存在必要性 |
---|---|---|---|
name |
政策的內部名稱。 您可以選擇使用 |
不適用 | 必填 |
continueOnError |
將其設為 將其設為 |
false | 選用 |
enabled |
設為 設為 |
是 | 選用 |
async |
此屬性已淘汰。 |
false | 已淘汰 |
<DisplayName> 元素
除了 name
屬性之外,您也可以在管理 UI 代理程式編輯器中使用不同的自然語言名稱標示政策。
<DisplayName>Policy Display Name</DisplayName>
預設 |
不適用 如果省略這個元素,系統會使用政策的 |
---|---|
存在必要性 | 選用 |
類型 | 字串 |
<CredentialSource> 元素
<CredentialSource>flow_variable_name_containing_credential_value</CredentialSource>
這個元素會指定含有憑證值的流程變數,並具有下列特徵:
- 一般來說,用戶端會透過查詢參數、HTTP 標頭或表單參數傳送值。字串必須以
request.queryparam.token
形式指定對應的流程變數。 - 從參照讀取時,預期會得到直接值。例如,前置字元不應為「Bearer」。
- 如果省略,政策執行會假設值位於授權標頭中,且採用標準格式「Bearer xyz」。
預設 | 不適用 |
---|---|
存在必要性 | 選用 |
類型 | 流程變數 |
範例:
<VerifyIAM async="false" continueOnError="false" enabled="true" name="Verify-IAM-Permissions-1"> <DisplayName>VerifyIAM policy for flow 1</DisplayName> <CredentialSource>request.queryparam.token</CredentialSource> </VerifyIAM>
錯誤參考資料
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則,就必須瞭解這項資訊。詳情請參閱「政策錯誤的相關資訊」和「處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。
錯誤代碼 | HTTP 狀態 | 原因 |
---|---|---|
steps.verifyiam.CredentialSourceRefUnresolved |
400 |
無法解析憑證來源內提供的流程變數。 |
steps.verifyiam.CredentialValueNotProvided |
400 |
找不到憑證。如果未提供憑證來源參照,我們會查看預設位置,例如授權標頭。 |
steps.verifyiam.Forbidden |
403 |
因權限不足、缺少存取範圍或其他相關問題,無法轉送要求。 |
steps.verifyiam.MiscellaneousAuthorizationConfigurationError |
500 |
向 IAM 提出驗證要求時發生問題。API 製作者必須根據錯誤回應中的詳細資料修正這項錯誤。 |
steps.verifyiam.Unauthorized |
401 |
憑證有問題,例如值無效或已過期。 |
steps.verifyiam.UnexpectedAuthorizationInfrastructureError |
500 |
內部錯誤。 |
部署錯誤
這項政策不會傳回任何政策專屬的部署錯誤。
錯誤變數
當這項政策在執行階段觸發錯誤時,系統會設定這些變數。
變數 | 地點 | 範例 |
---|---|---|
fault.name="fault_name" |
fault_name 是錯誤名稱,如上方「執行階段錯誤」表格所列。錯誤名稱是錯誤代碼的最後一個部分。 | fault.name="Unauthorized" |
verifyiam.policy_name.failed |
policy_name 是擲回錯誤的政策的使用者指定名稱。 | verifyiam.Verify-IAMToken.failed = true |