单点登录(SSO)常见问题

本文为您介绍RAM中单点登录(SSO)相关的一些常见问题。

如何在浏览器中查看SAML响应?

当您在单点登录过程中遇到问题时,您可以在Google Chrome浏览器中,查看SAML响应,方便定位问题。不同浏览器版本的操作可能略有差异,如下以Google Chrome 108.0.5359.125(64位)为例,为您介绍具体的操作步骤。

  1. F12,打开开发者工具控制台。

  2. 单击Network页签,然后选中Preserve log

  3. 重现问题。

  4. Network的日志数据中,查找sso。选择目标数据,单击Payload页签,查看SAML响应。

用户SSO时,报错“该用户不存在”,怎么办?

问题原因

解决方法

阿里云需要通过UPN(User Principal Name)来定位一个RAM用户,所以要求企业IdP生成的SAML响应包含用户的UPN,其中UPN后缀可以是域别名、辅助域名或默认域名。如果企业IdP中的用户名后缀与RAM用户的UPN后缀不一致,就会匹配失败。更多信息,请参见用户SSO的SAML响应中的NameID元素NameID示例

设置辅助域名,使RAM用户的UPN后缀与企业IdP中的一致。具体操作,请参见进行用户SSO时阿里云SP的SAML配置

在RAM中没有创建RAM用户,或创建的RAM用户名与IdP中的用户名不一致。

  • 修改RAM用户名,使其与IdP中的用户名保持一致。

  • 因RAM用户名存在字符限制,只能包含英文字母、数字和特殊字符-_.,最多64个字符,所以IdP中的用户名需要遵从RAM的这个字符限制。如果不满足,请尝试以下方法:

    • 修改IdP中的用户名,使其符合RAM的字符要求。

    • 修改IdP单点登录配置中唯一标识用户的字段。您可以选择E-mail等其他能唯一标识用户且不带有特殊字符的字段。

    • 在IdP单点登录配置中设置用户名映射的转换规则。

SCIM用户同步没有成功。

查询IdP中SCIM同步日志,查找同步失败的原因做对应处理。

同一个用户,IdP中的UPN和同步到RAM中的UPN不一致。可能的情况:

  • SCIM同步时选择同步到RAM的用户名使用的不是UPN。

  • SCIM同步配置了用户名映射的转换规则。

在IdP单点登录配置中设置的用户名映射转换规则与SCIM同步中的配置的保持一致。

SAML响应中的Conditions包含的Audience元素的取值错误,尤其是其中的accountId错误。

在SAML响应中,找到Conditions中的AudienceRestriction元素,确认其包含Audience元素,且Audience取值为 https://signin.aliyun.com/${accountId}/saml/SSO${accountId}为阿里云账号ID。

部分IdP有单独的Audience URL配置项,请确认配置正确。

角色SSO时,报错“NoPermission.NotTrusted”,怎么办?

问题原因

解决方法

在SAML响应的AttributeStatement元素中,查找Attribute Namehttps://www.aliyun.com/SAML-Role/Attributes/Role的属性值,该属性值为实际请求扮演的RAM角色名称和身份提供商名称的拼接值。如果该RAM角色名称和身份提供商名称在阿里云上实际不存在,或该RAM角色的信任策略中配置的身份提供商与实际属性值中的身份提供商不一致时会报该错误。更多信息,请参见角色SSO的SAML响应

角色SSO时,报错“属性错误Role”,怎么办?

问题原因

解决方法

企业IdP中Name属性值为https://www.aliyun.com/SAML-Role/Attributes/RoleAttribute元素未配置或者配置不正确。

在企业IdP中修改Attribute的配置。更多信息,请参见角色SSO的SAML响应

角色SSO时,报错“InvalidParameter.RoleSessionName”,怎么办?

问题原因

解决方法

企业IdP中Name属性值为https://www.aliyun.com/SAML-Role/Attributes/RoleSessionNameAttribute元素配置不正确。

在企业IdP中检查并修改Attribute元素配置。首先,检查内容是否正确。其次,检查Attribute取值格式是否正确,格式要求:长度不少于2个字符且不超过64个字符,只能包含英文字母、数字和特殊字符-_.@=。更多信息 ,请参见角色SSO的SAML响应

当前登录的用户在IdP侧缺少RoleSessionName对应的属性值。例如:IdP中指定Email为RoleSessionName,但登录用户在IdP没有录入Email信息。

确认IdP中指定RoleSessionName对应的属性,设置登录用户的属性值。

SSO登录时,报错“The assertion signature is invalid” 和“The assertion signature is invalid 或 Sigin token过期”,怎么办?

问题原因

解决方法

企业IdP中使用的签名公私钥对发生了轮转,但未更新在阿里云中配置的IdP元数据。

更新在阿里云中配置的IdP元数据。您可以从企业IdP下载最新的元数据文件,重新上传到阿里云中。

企业IdP中使用的签名公私钥对发生了轮转,且更新了在阿里云中配置的IdP元数据。但IdP在轮转期间可能仍在使用旧的私钥,而阿里云中配置的元数据只包含新的公钥。

在阿里云中配置的IdP元数据应该同时包含新旧公钥。配置包含两个公钥的元数据方法如下:

  • 创建新的证书(不要禁用或删除旧证书)。

  • 下载新的元数据文件,确认元数据文件中是否包含新旧证书公钥。

    • 部分IdP(例如:Azure AD)的元数据文件自动包含新旧证书。

    • 如果元数据文件未包含新旧证书公钥,需要手动修改元数据文件添加证书。在RAM的SSO配置中下载旧的元数据文件,在元数据文件中的KeyDescriptor部分,复制X509Certificate原证书信息,粘贴到新的元数据文件中相同位置,然后保存。

    • RAM的SSO配置中上传新的元数据文件。

    • 在IdP单点登录配置中激活新的证书,禁用老的证书。

元数据文件较大导致上传没有成功。

请在上传文件后稍等片刻,直至上传完成。完成后,下载元数据文件检查上传内容是否完整。

自建IdP的metadata参数缺失或参数不正确,怎么办?

问题原因

解决方法

metadata参数未按SAML 2.0协议配置。

参照SAML 2.0协议正确配置参数。更多信息,请参见SAML 2.0