本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Connect 客户对 SAML 进行故障排除
本文介绍如何排除和解决客户在将 SAML 与 Connect Customer 配合使用时遇到的一些最常见的问题。
如果您要对与其他身份提供商(例如 Okta、 PingIdentify、Azure AD 等)的集成进行故障排除,请参阅 Connect 客户 SSO 安装研讨会
错误消息:访问被拒绝。您的账户已经过身份验证,但尚未登入此应用程序。
这意味着什么?
此错误表示用户已使用 SAML 成功向 AWS SAML 登录端点进行身份验证。但是,用户不能在 Connect Customer matched/found 内部。此消息通常提示出现以下问题之一:
-
Connect Customer 中的用户名与身份提供者返回的
RoleSessionNameSAML 响应中指定的 SAML 属性不匹配。 -
该用户在 Connect Customer 中不存在。
-
通过 SSO 为用户分配了两个单独的配置文件。
解决方案
使用以下步骤检查身份提供者返回的 RoleSessionName SAML 响应中指定的 SAML 属性,然后检索登录名并将其与 Connect Customer 中的登录名进行比较。
-
为端到端登录过程执行 HAR 捕获 (HTTP ARchive)。这将从浏览器端捕获网络请求。使用首选文件名保存 HAR 文件,例如 saml.har。
-
使用文本编辑器在 HAR 文件中查找 SAML 响应。或者,运行以下命令:
$ grep -o "SAMLResponse=.*&" azuresaml.har | sed -E 's/SAMLResponse=(.*)&/\1/' > samlresponse.txt-
这将在 HAR 文件中搜索 SAML 响应,并将其保存到 samlresponse.txt 文件中。
-
响应采用 URL 编码,而内容采用 Base64 编码。
-
-
对 URL 响应进行解码,然后使用第三方工具或简单脚本解码 Base64 内容。例如:
$ cat samlresponse.txt | python3 -c "import sys; from urllib.parse import unquote; print(unquote(sys.stdin.read()));" | base64 --decode > samlresponsedecoded.txt此脚本使用简单的 python 命令从原始 URL 编码格式解码 SAMLResponse。然后,它解码来自 Base64 的响应,并以纯文本格式输出 SAML 响应。
-
检查所需属性的解码响应。例如,下图显示如何检查
RoleSessionName:
-
检查上一步中返回的用户名是否作为用户存在于您的 Connect Customer 实例中:
$ aws connect list-users --instance-id [INSTANCE_ID] | grep $username
-
如果最终的 grep 没有返回结果,则表示该用户不存在于您的 Connect Customer 实例中,或者该用户是使用不同的 case/capitalization实例创建的。
-
如果您的 Connect Customer 实例有许多用户,那么 ListUsers API 调用的响应可能会分页。使用由此 API 返回的
NextToken获取其余用户。有关更多信息,请参阅 ListUsers。
-
示例 SAML 响应
以下是示例 SAML 响应中的图像。在这种情况下,身份提供程序 (IdP) 是 Azure Active Directory (Azure AD)。
错误消息:访问被拒绝,请联系您的 AWS 账户管理员寻求帮助。
这意味着什么?
已使用 SAML 成功对用户所代入的角色进行身份验证。但是,该角色无权调用 Connect Cu GetFederationToken stomer 的 API。此调用是必需的,这样用户才能使用 SAML 登录您的 Connect Customer 实例。
解决方案
-
将具有
connect:GetFederationToken的权限的策略附加到在错误消息中找到的角色。以下是策略示例: -
使用 IAM 控制台附加策略。或者,使用 attach-role-policy API,例如:
$ aws iam attach-role-policy —role-name [ASSUMED_ROLE] —policy_arn [POLICY_WITH_GETFEDERATIONTOKEN]
错误消息:会话已过期
如果您在登录时看到会话已过期消息,则可能只需要刷新会话令牌即可。访问您的身份提供商并登录。刷新 Connect 客户页面。如果您仍然收到此消息,请联系您的 IT 团队。