本頁面適用於 Apigee,但不適用於 Apigee Hybrid。
查看
Apigee Edge 說明文件。
總覽
使用 VerifyIAM,根據 Google Cloud IAM 強制執行 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 |