本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 IAM 對 SAML 聯合進行疑難排解
使用此處的資訊,來協助您針對在使用 SAML 2.0 和 AWS Identity and Access Management的聯合身分時所可能遇到的問題,進行故障診斷與排除。
主題
錯誤:您的請求包含無效的 SAML 回應。若要登出,請按一下這裡。
當身分提供者的 SAML 回應不包含 Name
設定為 https://aws.amazon.com/SAML/Attributes/Role
的屬性時,可能會發生此錯誤。該屬性必須包含一個或多個 AttributeValue
元素,每個元素都包含逗號分隔的字串對:
-
使用者可以映射到角色的 ARN
-
SAML 供應商的 ARN
如需更多詳細資訊,請參閱 為身分驗證回應設定 SAML 聲明。若要在瀏覽器中查看 SAML 回應,請按照 在瀏覽器中檢視 SAML 回應 中列出的步驟操作。
錯誤:在 AuthnResponse 中需要 RoleSessionName (服務:AWSSecurityTokenService;狀態代碼:400;錯誤代碼:InvalidIdentityToken)
當身分提供者的 SAML 回應不包含 Name
設定為 https://aws.amazon.com/SAML/Attributes/RoleSessionName
的屬性時,可能會發生此錯誤。屬性值是使用者的識別符,通常是使用者 ID 或電子郵件地址。
如需更多詳細資訊,請參閱 為身分驗證回應設定 SAML 聲明。若要在瀏覽器中查看 SAML 回應,請按照 在瀏覽器中檢視 SAML 回應 中列出的步驟操作。
錯誤:未獲授權,無法執行 sts:AssumeRoleWithSAML (服務:AWSSecurityTokenService;狀態代碼:403;錯誤代碼:AccessDenied)
如果 SAML 回應中指定的 IAM 角色拼寫錯誤或不存在,則會發生此錯誤。請務必使用與您角色完全相同的名稱,因為角色名稱區分大小寫。修正 SAML 服務供應商組態中角色的名稱。
只有當您的角色信任政策包含 sts:AssumeRoleWithSAML
動作時,才允許您存取。如果您的 SAML 聲明設定為使用 PrincipalTag 屬性,則您的信任政策也必須包含 sts:TagSession
動作。如需有關工作階段標籤的詳細資訊,請參閱 在 AWS STS 中傳遞工作階段標籤。
如果您的角色信任政策中沒有 sts:SetSourceIdentity
許可,此錯誤可能發生。如果您的 SAML 聲明設定為使用 SourceIdentity 屬性,則您的信任政策也必須包含 sts:SetSourceIdentity
動作。如需來源身分的詳細資訊,請參閱 監控並控制使用擔任角色所採取的動作。
如果聯合身分使用者沒有擔任該角色的許可,也會發生此錯誤。該角色必須具有任政策,該政策將 IAM SAML 身分提供者的 ARN 指定為 Principal
。該角色還包含控制哪些使用者可以擔任該角色的條件。確認您的使用者滿足條件的要求。
如果 SAML 回應不包括其中包含 NameID
的 Subject
,也會發生此錯誤。
如需詳細資訊,請參閱在 AWS 中為聯合身分使用者建立許可和 為身分驗證回應設定 SAML 聲明。若要在瀏覽器中查看 SAML 回應,請按照 在瀏覽器中檢視 SAML 回應 中列出的步驟操作。
錯誤:在 AuthnResponse 中的 RoleSessionName 必須符合 [a-zA-Z_0-9+=,.@-]{2,64} (服務:AWSSecurityTokenService;狀態代碼:400;錯誤代碼:InvalidIdentityToken)
如果 RoleSessionName
屬性值太長或包含無效的字元,則會發生此錯誤。最大有效長度為 64 個字元。
如需更多詳細資訊,請參閱 為身分驗證回應設定 SAML 聲明。若要在瀏覽器中查看 SAML 回應,請按照 在瀏覽器中檢視 SAML 回應 中列出的步驟操作。
錯誤:來源身分必須符合 [a-zA-Z_0-9+=,.@-]{2,64} 並以 "aws:"
開始 (服務:AWSSecurityTokenService;狀態代碼:400;錯誤代碼:InvalidIdentityToken)
如果 sourceIdentity
屬性值太長或包含無效的字元,則會發生此錯誤。最大有效長度為 64 個字元。如需來源身分的詳細資訊,請參閱 監控並控制使用擔任角色所採取的動作。
如需建立 SAML 聲明的詳細資訊,請參閱 為身分驗證回應設定 SAML 聲明。若要在瀏覽器中查看 SAML 回應,請按照 在瀏覽器中檢視 SAML 回應 中列出的步驟操作。
錯誤:回應簽章無效 (服務:AWSSecurityTokenService;狀態代碼:400;錯誤代碼:InvalidIdentityToken)
當身分提供者的聯合中繼資料與 IAM 身分提供者的中繼資料不相符時,則會發生此錯誤。例如,身分服務供應商的中繼資料檔案可能已變更以更新過期的憑證。從身分服務供應商處下載更新的 SAML 中繼資料檔案。然後使用aws iam update-saml-provider
跨平台 CLI 命令或 Update-IAMSAMLProvider
PowerShell cmdlet,在您在 IAM 中定義的 AWS 身分提供者實體中更新它。
錯誤:無效的私有金鑰。
如果沒有正確格式化私有金鑰檔案,則可能會發生此錯誤。此錯誤可能會提供有關私有金鑰為何無效的其他詳細資訊:
-
金鑰已加密。
-
無法識別金鑰格式。私有金鑰檔案必須為 .pem 檔案。
當您在 IAM 中建立 SAML 身分提供者在 中時 AWS Management Console,您必須從身分提供者下載私有金鑰,以提供給 IAM 以啟用加密。私有金鑰必須是使用 AES-GCM 或 AES-CBC 加密演算法來解密 SAML 聲明的 .pem 檔案。
錯誤:無法移除私有金鑰。
當 SAML 加密設定為「必要」時,可能會發生此錯誤,您的請求會移除 IAM SAML 提供者的唯一私有解密金鑰。如需有關輪換私有金鑰的詳細資訊,請參閱 管理 SAML 加密金鑰。
錯誤:無法移除私有金鑰,因為金鑰 ID 與私有金鑰不符。
如果私有金鑰的 keyId
值不符合身分提供者私有金鑰檔案的金鑰 ID,則可能會發生此錯誤。
當您使用 update-saml-providerRemovePrivateKey
中的值必須是連接到身分提供者之私有金鑰的有效金鑰 ID。
錯誤:無法擔任角色:發行者不存在於指定的供應商 (服務:AWSOpenIdDiscoveryService;狀態代碼:400;錯誤代碼:AuthSamlInvalidSamlResponseException)
如果 SAML 回應中的發行者與在聯合中繼資料檔案內宣告的發行者不相符,便會發生此錯誤。當您在 IAM 中建立身分提供者 AWS 時,中繼資料檔案已上傳至 。
錯誤:無法剖析中繼資料。
如果沒有採用正確格式的中繼資料檔案,則可能會發生此錯誤。
當您在 中建立或管理 SAML 身分提供者時 AWS Management Console,您必須從身分提供者擷取 SAML 中繼資料文件。
此中繼資料檔案包括發行者名稱、過期資訊以及可用於驗證從 IdP 接收的 SAML 身分驗證回應 (聲明) 的金鑰。中繼資料檔案必須以 UTF-8 格式編碼,並且不含位元組順序記號 (BOM)。若要移除 BOM,您可以使用文字編輯工具,例如 Notepad++,將檔案編碼為 UTF-8。
包含在 SAML 中繼資料文件中的 X.509 憑證必須使用至少 1024 位元的金鑰大小。此外,X.509 憑證也必須沒有任何重複的延伸。您可以使用擴充,但這些擴充只能在憑證中出現一次。如果 X.509 憑證不符合任一條件,IdP 建立會失敗,並傳回「無法剖析中繼資料」錯誤。
如 SAML V2.0 中繼資料互通性設定檔 1.0 版
錯誤:無法更新身分提供者。中繼資料或加密聲明未定義任何更新。
如果使用 update-saml-provider
CLI 或 UpdateSAMLProvider
API 操作,但不在請求參數中提供更新值,則可能會發生此錯誤。如需有關更新 IAM SAML 提供者的詳細資訊,請參閱 在 IAM 中建立 SAML 身分提供者。
錯誤:無法將聲明加密模式設定為「必要」,因為未提供私有金鑰。
當您先前尚未上傳私有解密金鑰,且嘗試將 SAML 加密設定為「必要」,但未在請求中包含私有金鑰時,就會發生此錯誤。
使用 create-saml-provider
CLI、CreateSAMLProvider
API、update-saml-provider
CLI 或 UpdateSAMLProvider
API 操作來要求加密的 SAML 聲明時,務必確保已為您的 IAM SAML 提供者定義私有金鑰。
錯誤:無法在相同的請求中新增和移除私有金鑰。僅為兩個參數之一設定值。
如果新增和移除私有金鑰值都包含在相同請求中,則可能會發生此錯誤。
當您使用 update-saml-provider
錯誤:指定的供應商不存在。
如果 SAML 聲明中的提供者名稱與 IAM 中的提供者名稱不符,就可能發生此錯誤。如需檢視供應商名稱的詳細資訊,請參閱 在 IAM 中建立 SAML 身分提供者。
錯誤:請求的 DurationSeconds 超過為此角色設定的 MaxSessionDuration。
如果您從 AWS CLI 或 API 擔任角色,可能會發生此錯誤。
當您使用 assume-role-with-saml CLI 或 AssumeRoleWithSAML API 操作來擔任角色時,可以為 DurationSeconds
參數指定值。您可以指定從 900 秒 (15 分鐘) 到角色的最大工作階段持續時間設定的值。如果您指定高於此設定的值,操作會失敗。例如,如果您指定 12 小時的工作階段持續時間,但是您的管理員設定最大工作階段持續時間為 6 小時,則您的操作會失敗。若要了解如何檢視角色的最大值,請參閱 更新角色的最大工作階段持續時間。
錯誤:已達到私有金鑰限制 2。
如果嘗試將私有金鑰新增至身分提供者,可能會發生此錯誤。
可以為每個身分提供者儲存最多兩個私有金鑰。使用 update-saml-provider
在新增新的私有金鑰之前,移除已過期的私有金鑰。如需有關輪換私有金鑰的詳細資訊,請參閱 管理 SAML 加密金鑰。
錯誤:回應沒有包括必要的對象。
如果對象 URL 與 SAML 組態中的身分提供者不相符,就可能會發生此錯誤。請確定您的身分提供者 (IdP) 依存方識別符完全符合 SAML 組態中提供的對象 URL (實體 ID)。