当服务提供商 (SP) 为 Google 时,如果您将基于 SAML 的单点登录 (SSO) 与 Google Workspace 集成或搭配使用时看到一些常见错误消息,可以参考本文提供的解决步骤。
配置与启用
“未将此网域配置为使用单点登录。”该错误通常表明,您试图将单点登录与标准版 G Suite(免费)搭配使用,但该版本不支持单点登录。如果您确定自己使用的 Google Workspace 版本支持单点登录,请检查身份提供商配置以确保您输入了正确的 Google Workspace 域名。
如果您是在使用配置文件设置单点登录后遇到此错误,可能是因为您的 IdP 误以为贵组织使用的是单点登录配置文件。如果是这种情况,则必须使用 IdP 单点登录配置文件设置来为贵组织配置单点登录配置文件,这样才能使用这些设置。
此错误表明,您没有在 Google 管理控制台中正确设置单点登录。请按以下步骤修正错误:
- 在管理控制台中,依次点击安全性 通过第三方身份提供商设置单点登录 (SSO),然后勾选设置采用第三方身份提供商的单点登录复选框。
- 在相应字段中输入您单位的登录页、退出页和更改密码页的网址。
- 选择并上传有效的验证证书文件。
- 点击保存,稍候几分钟待更改生效,然后再次测试集成。
解析 SAML 响应
“所需的响应参数 SAMLResponse 缺失”此错误消息表明您的身份提供商没有为 Google 提供某种有效的 SAML 响应。这很可能是身份提供者的配置问题造成的。
- 查看您的身份提供商日志,确保其没有受到任何限制,可以正确返回 SAML 响应。
- 确保您的身份提供商没有向 Google Workspace 发送加密的 SAML 响应。Google Workspace 只接受未加密的 SAML 响应。请格外注意,Microsoft 的 Active Directory Federation Services 2.0 在默认配置下通常会发送加密的 SAML 响应。
SAML 2.0 规范要求身份提供商获取并发回来自资源提供商(例如 Google Workspace)的 RelayState 网址参数。Google Workspace 会通过 SAML 请求向身份提供商提供此值,而每次登录时提供的确切内容可能都有所不同。为了成功完成身份验证,SAML 响应必须返回确切的 RelayState。根据 SAML 标准规范,您的身份提供者在登录流程中不应修改 RelayState。
- 在尝试登录时获取 HTTP 标头以进一步诊断此问题。从 HTTP 标头中提取 SAML 请求和响应的 RelayState,并确保请求和响应的 RelayState 值相匹配。
- 大多数商业化或开源单点登录身份提供商在默认情况下均可顺利传输 RelayState。为了最大限度地提高安全性和可靠性,我们建议您使用现有解决方案之一,我们无法支持您自定义的单点登录软件。
SAML 响应的内容
您的登录请求中所包含的 [destination|audience|recipient] 信息无效,因此无法访问该服务。请登录并重试。”该错误表明 SAML 断言中的 destination、audience 或 recipient 元素包含无效信息或没有任何内容。SAML 断言中必须包含所有元素。查看下列表格,了解各个元素的说明和示例。
元素 | <Audience> |
---|---|
说明 | 识别需要 ACS URI 值的目标受众群体的 URI。注意:元素值不得为空。 |
必填值 | https://www.google.com/a/<example.com>/acs |
示例 |
<saml:Conditions NotBefore="2014-11-05T17:31:37Z" |
元素 | <StatusResponseType> 类型的“destination”属性 |
---|---|
说明 | SAML 断言的发送目的地 URI。这是可选属性,但如果使用,该元素需要 ACS URI 的值。 |
必填值 | https://www.google.com/a/<example.com>/acs |
示例 |
<saml:Response |
元素 | <SubjectConfirmationData> 的“Recipient”属性 |
---|---|
说明 |
|
必填值 | https://www.google.com/a/<example.com>/acs |
示例 |
<saml:Subject> |
要详细了解所有必要元素,请查看“SSO 断言要求”一文。
该错误通常表明来自您的身份提供商的 SAML 响应缺少可读取的 Recipient 值(或 Recipient 值有误)。Recipient 值是 SAML 响应的重要组成部分。
- 在尝试登录时获取 HTTP 标头以进一步诊断此问题。
- 从 HTTP 标头中提取 SAML 请求和响应。
- 确保 SAML 响应中存在 Recipient 值,且与 SAML 请求中的该值相匹配。
注意:此错误消息可能也会显示为“此服务无法访问,因为您的登录请求包含无效的 recipient 信息。请登录并重试。”
该错误表明您用于签署身份验证流程的证书存在问题。这通常表明用于签署 SAML 响应的私钥与 Google Workspace 记录的公钥证书不匹配。
如果您的 SAML 响应未包含有效的 Google 帐号用户名,也会出现此错误。Google Workspace 会解析 SAML 响应以查找名为 NameID 的 XML 元素,该元素应会包含 Google Workspace 用户名或完整的 Google Workspace 电子邮件地址。
- 请确保您已将有效的证书上传到 Google Workspace,如有必要,请替换相应的证书。在 Google 管理控制台中,转到安全性 通过第三方身份提供商设置单点登录 (SSO),然后点击替换证书。
- 如果您在 NameID 元素中使用的是完整的电子邮件地址(在多网域 Apps 环境中使用单点登录时必须如此),请确保 NameID 元素的 Format 属性指定为使用完整的电子邮件地址,如下例所示:Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"。
- 确保使用有效的用户名或电子邮件地址填充 NameID 元素。为了确认这一点,请提取发送到 Google Workspace 的 SAML 响应,然后检查 NameID 元素的值。
- NameID 区分大小写:请确保 SAML 响应所填充的 NameID 与 Google Workspace 用户名或电子邮件地址的大小写保持一致。
- 如果您的身份提供商将 SAML 断言加密,请停用加密功能。
- 确保 SAML 响应不包含任何非标准 ASCII 字符。该问题最常出现在 AttributeStatement 的 DisplayName、GivenName 和 Surname 属性中,例如:
- <Attribute Name="http://schemas.microsoft.com/identity/claims/displayname">
<AttributeValue>Blüte, Eva</AttributeValue> </Attribute> - <Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname">
<AttributeValue>Blüte</AttributeValue> </Attribute>
- <Attribute Name="http://schemas.microsoft.com/identity/claims/displayname">
要详细了解如何设置 NameID 元素的格式,请参阅 SSO 断言要求。
出于安全考虑,单点登录流程必须在特定时间范围内完成,否则身份验证将失败。如果您的身份提供者的时钟不正确,绝大多数或所有登录尝试可能都会超出允许的时间范围,身份验证将失败,导致系统发出以上错误消息。
- 请检查身份提供者的服务器的时钟。此错误通常是因为身份提供者的时钟不正确,它为 SAML 响应添加了错误的时间戳。
- 请将身份提供商服务器的时钟与可靠的互联网时间服务器重新同步。如果在生产环境中突然出现此问题,通常是因为上次同步失败,导致服务器时间出现错误。重复进行时间同步操作(尽可能选择与较可靠的时间服务器同步)就可以迅速解决该问题。
- 如果您重新发送之前登录尝试的 SAML,也可能会出现此问题。通过检查您的 SAML 请求和响应(在尝试登录过程中捕获的 HTTP 标头日志中获得),您可以对此问题进行进一步调试。
出于安全考虑,单点登录流程必须在特定时间范围内完成,否则身份验证将失败。如果您的身份提供者的时钟不正确,绝大多数或所有登录尝试可能都会超出允许的时间范围,身份验证将失败,导致系统发出以上错误消息。
- 请检查身份提供者的服务器的时钟。此错误通常是因为身份提供者的时钟不正确,它为 SAML 响应添加了错误的时间戳。
- 请将身份提供商服务器的时钟与可靠的互联网时间服务器重新同步。如果在生产环境中突然出现此问题,通常是因为上次同步失败,导致服务器时间出现错误。重复进行时间同步操作(尽可能选择与较可靠的时间服务器同步)就可以迅速解决该问题。