单点登录 (SSO) 问题排查

当服务提供商 (SP) 为 Google 时,如果您将基于 SAML 的单点登录 (SSO) 与 Google Workspace 集成或搭配使用时看到一些常见错误消息,可以参考本文提供的解决步骤。

配置与启用

“未将此网域配置为使用单点登录。”

该错误通常表明,您试图将单点登录与标准版 G Suite(免费)搭配使用,但该版本不支持单点登录。如果您确定自己使用的 Google Workspace 版本支持单点登录,请检查身份提供商配置以确保您输入了正确的 Google Workspace 域名。

“由于域名配置错误,因此无法访问此帐号。请稍后再试。”

此错误表明,您没有在 Google 管理控制台中正确设置单点登录。请按以下步骤修正错误:

  1. 在管理控制台中,转到安全性 接着点击 通过第三方身份提供商设置单点登录 (SSO),然后选中设置采用第三方身份提供商的单点登录对应的复选框。
  2. 在相应字段中输入您单位的登录页、退出页和更改密码页的网址。
  3. 选择并上传有效的验证证书文件。
  4. 点击保存,稍候几分钟待更改生效,然后再次测试集成。

解析 SAML 响应

“所需的响应参数 SAMLResponse 缺失”

此错误消息表明您的身份提供商没有为 Google 提供某种有效的 SAML 响应。这很可能是身份提供商的配置问题造成的。

  • 查看您的身份提供商日志,确保其没有受到任何限制,可以正确返回 SAML 响应。
  • 确保您的身份提供商没有向 Google Workspace 发送加密的 SAML 响应。Google Workspace 只接受未加密的 SAML 响应。请格外注意,Microsoft 的 Active Directory Federation Services 2.0 在默认配置下通常会发送加密的 SAML 响应。
“所需的响应参数 RelayState 缺失”

SAML 2.0 规范要求身份提供商获取并发回来自资源提供商(例如 Google Workspace)的 RelayState 网址参数。Google Workspace 会通过 SAML 请求向身份提供商提供此值,而每次登录时提供的确切内容可能都有所不同。为了成功完成身份验证,SAML 响应必须返回确切的 RelayState。根据 SAML 标准规范,您的身份提供商在登录流程中不应修改 RelayState。

  • 在尝试登录时获取 HTTP 标头以进一步诊断此问题。从 HTTP 标头中提取 SAML 请求和响应的 RelayState,并确保请求和响应的 RelayState 值相匹配。
  • 大多数商业化或开源 SSO 身份提供商在默认情况下均可顺利传输 RelayState。为了最大限度地提高安全性和可靠性,我们建议您使用现有解决方案之一,我们无法支持您自定义的 SSO 软件。

SAML 响应的内容

您的登录请求中所包含的 [destination|audience|recipient] 信息无效,因此无法访问该服务。请登录并重试。”

该错误表明 SAML 断言中的 destinationaudiencerecipient 元素包含无效信息或没有任何内容。SAML 断言中必须包含所有元素。查看下列表格,了解各个元素的说明和示例。

元素 <Audience>
说明 识别目标受众群体的 URI(需要 ACS URI 的值)。注意:元素值不得为空
必填值 https://www.google.com/a/<example.com>/acs
示例

<saml:Conditions NotBefore="2014-11-05T17:31:37Z"
NotOnOrAfter="2014-11-05T17:37:07Z">
<saml:AudienceRestriction>
<saml:Audience>https://www.google.com/a/example.com/acs
</saml:Audience>
</saml:AudienceRestriction>
</saml:Conditions>

 

元素 <StatusResponseType> 类型的“destination”属性
说明 SAML 断言的发送目的地 URI。这是可选属性,但如果使用,该元素需要 ACS URI 的值。
必填值 https://www.google.com/a/<example.com>/acs
示例

<saml:Response
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
ID="7840062d379d82598d87ca04c8622f436bb03aa1c7"
Version="2.0"
IssueInstant="2014-11-05T17:32:07Z"
Destination="https://www.google.com/a/example.com/acs"
InResponseTo="midihfjkfkpcmbmfhhoehbokhbkeapbbinldpeen">

 

元素 <SubjectConfirmationData> 的“Recipient”属性
 
说明
  • 定义要接收该对象的实体。
  • 这是必要属性,必需包含 ACS URI。
  • 区分大小写。
必填值 https://www.google.com/a/<example.com>/acs
示例

<saml:Subject>
<saml:NameID SPNameQualifier="google.com/a/example.com"
Format="urn:oasis:names:tc:SAML:2.0:nameid-format:email">user@example.com</saml:NameID>
<saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
<saml:SubjectConfirmationData NotOnOrAfter="2014-11-05T17:37:07Z"
Recipient="https://www.google.com/a/example.com/acs"
InResponseTo="midihfjkfkpcmbmfhjoehbokhbkeapbbinldpeen"/>
</saml:SubjectConfirmation> 
</saml:Subject>

要详细了解所有必要元素,请查看“SSO 断言要求”一文。

“您的登录请求中未包含收件人信息,因此无法访问该服务。请登录并重试。”

该错误通常表明来自您的身份提供商的 SAML 响应缺少可读取的 Recipient 值(或 Recipient 值有误)。Recipient 值是 SAML 响应的重要组成部分。

  1. 在尝试登录时获取 HTTP 标头以进一步诊断此问题。
  2. 从 HTTP 标头中提取 SAML 请求和响应。
  3. 确保 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:2.0:nameid-format:email"
  • 确保使用有效的用户名或电子邮件地址填充 NameID 元素。为了确认这一点,请提取发送到 Google Workspace 的 SAML 响应,然后检查 NameID 元素的值。
  • 如果您的身份提供商将 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>
“由于您的登录凭证已过期,因此无法访问此服务。请登录并重试。”

出于安全考虑,SSO 登录流程必须在特定时间范围内完成,否则身份验证将失败。如果您的身份提供商的时钟不正确,绝大多数或所有登录尝试可能都会超出允许的时间范围,身份验证将失败,导致系统发出以上错误消息。

  • 请检查身份提供商服务器的时钟。此错误通常是因为身份提供商的时钟不正确,它为 SAML 响应添加了错误的时间戳。
  • 请将身份提供商服务器的时钟与可靠的互联网时间服务器重新同步。如果在生产环境中突然出现此问题,通常是因为上次同步失败,导致服务器时间出现错误。重复进行时间同步操作(尽可能选择与较可靠的时间服务器同步)就可以迅速解决该问题。
  • 如果您重新发送之前登录尝试的 SAML,也会出现此问题。通过检查您的 SAML 请求和响应(在尝试登录过程中采集的 HTTP 标头日志中获得),您可以对此问题进行进一步调试。
“由于登录凭证尚未生效,因此无法访问此服务。请登录并重试。”

出于安全考虑,SSO 登录流程必须在特定时间范围内完成,否则身份验证将失败。如果您的身份提供商的时钟不正确,绝大多数或所有登录尝试可能都会超出允许的时间范围,身份验证将失败,导致系统发出以上错误消息。

  • 请检查身份提供商服务器的时钟。此错误通常是因为身份提供商的时钟不正确,它为 SAML 响应添加了错误的时间戳。
  • 请将身份提供商服务器的时钟与可靠的互联网时间服务器重新同步。如果在生产环境中突然出现此问题,通常是因为上次同步失败,导致服务器时间出现错误。重复进行时间同步操作(尽可能选择与较可靠的时间服务器同步)就可以迅速解决该问题。
该内容对您有帮助吗?
您有什么改进建议?

需要更多帮助?

登录可获取更多支持选项,以便快速解决您的问题

搜索
清除搜索查询
关闭搜索框
Google 应用
主菜单
搜索支持中心
true
73010
false