最近更新时间:2024-04-12 18:16:56
基于SAML 2.0的用户SSO,配置对应元数据来建立金山云对企业身份提供商(IdP)的信任,实现企业IdP通过用户SSO登录金山云。
金山云主账号登录访问控制控制台。
选择左侧菜单SSO管理
在用户SSO标签页,可查看当前SSO登录设置相关信息
点击 ✎ 可进行SSO登录设置,包括设置SSO功能状态、上传IdP元数据文档、设置企业域名
SSO功能状态:可以设置开启或关闭
该功能只对金山云账号下的所有子用户生效,不影响主账号登录
此功能状态默认为关闭,此时子用户可以使用密码登录,SSO登录设置不生效
选择开启该功能后,子用户不可以使用密码登录,只能SSO登录,统一跳转到企业IdP登录进行身份验证。再次选择关闭后,子用户可以使用密码登录。
元数据文档:点击上传文件,上传企业IdP提供的元数据文档
元数据文档一般为XML格式,包括IdP的登录服务地址和X.509公钥证书(用户验证IdP所颁发的SAML断言的有效性)
企业域名:SAML断言中的NameID元素只能使用该企业域名作为后缀
1.方式一:登录访问控制控制台手动创建与企业IdP匹配的子用户,详情参见创建子用户
2.方式二: 使用金山云 OpenAPI创建子用户,详情参见 新建子用户
说明 请确保子用户的登录账号与企业邮箱的用户名前缀保持一致
在企业身份提供商(IdP)中配置金山云为可信SAML服务提供商(SP)
1.从金山云控制台获取SAML服务提供商元数据URL。
金山云主账号登录访问控制控制台。
选择左侧菜单SSO管理 。
在SSO管理页面,单击用户SSO页签。
在SSO登录设置区域,查看当前金山云账号的SAML服务提供商元数据URL。
在企业IdP中创建一个SAML SP,并根据实际情况选择下面任意一种方式配置金山云为信赖方
直接使用第一步所述的金山云元数据URL进行配置。
如果您的IdP不支持URL配置,您可以通过第一步所述URL下载元数据文件并上传至您的IdP。
如果您的IdP不支持元数据文件上传,则需要手动配置以下参数:
Entity ID:元数据XML中,EntityDescriptor元素的entityID属性值。
ACS URL:元数据XML中,AssertionConsumerService元素的Location属性值。
RelayState:只支持配置跳转到金山云云控制台首页,可不填写
在基于SAML 2.0的SSO流程中,当企业用户在IdP登录后,IdP将根据SAML 2.0 HTTP-POST绑定的要求生成包含SAML断言的认证响应,并由浏览器(或程序)自动转发给金山云。这个SAML断言会被用来确认用户登录状态并从中解析出登录的主体。因此,断言中必须包含金山云要求的元素,否则登录用户的身份将无法被确认,导致SSO失败。
SAML响应
请确保您的IdP向金山云发出符合如下要求的SAML响应,每一个元素都必须要有,否则SSO将会失败。
<saml2p:Response>
<saml2:Issuer>...</saml2:Issuer>
<saml2p:Status>
...
</saml2p:Status>
<saml2:Assertion>
<saml2:Issuer>...</saml2:Issuer>
<ds:Signature>
...
</ds:Signature>
<saml2:Subject>
<saml2:NameID>${NameID}</saml2:NameID>
<saml2:SubjectConfirmation>
...
</saml2:SubjectConfirmation>
</saml2:Subject>
<saml2:Conditions>
<saml2:AudienceRestriction>
<saml2:Audience>${Audience}</saml2:Audience>
</saml2:AudienceRestriction>
</saml2:Conditions>
<saml2:AuthnStatement>
...
</saml2:AuthnStatement>
</saml2:Assertion>
</saml2p:Response>
SAML断言中的元素说明
SAML 2.0协议的通用元素
Issuer: Issuer的值必须与您在金山云用户SSO设置中上传的元数据文件中的EntityID匹配
Signature: 金山云要求SAML断言必须被签名以确保没有篡改,Signature及其包含的元素必须包含签名值、签名算法等信息
Subject: Subject必须包含以下元素:
1).有且仅有一个NameID元素,是金山云主账号下的某个子用户的身份标识。
2).有且仅有一个SubjectConfirmation元素,其中包含一个SubjectConfirmationData元素。SubjectConfirmationData必须有以下两个属性:
NotOnOrAfter:规定SAML断言的有效期。
Recipient:金山云通过检查该元素的值来确保金山云是该断言的目标接收方,其取值必须为https://signin.ksyun.com/saml/SSO
Conditions: 在Conditions元素中,必须包含一个AudienceRestriction元素,其中可包含一至多个Audience元素,但必须有一个Audience元素的取值为 https://signin.ksyun.com/${accountId}/saml/SSO,${accountId}为金山云主账号ID
NameID元素
金山云需要通过UPN(User Principal Name)来定位一个子用户,所以要求企业IdP生成的SAML断言包含用户的UPN。金山云通过解析SAML断言中的NameID元素,来匹配子用户的UPN从而实现用户SSO。
因此,在配置IdP颁发的SAML断言时,需要将对应于子用户UPN的字段映射为SAML断言中的NameID元素。
NameID元素:使用企业域名作为NameID元素的后缀,即 username@domain_name。其中username为子用户的用户名,domain_name为企业域名。
纯净模式