本文提供一个以AD FS与阿里云进行用户SSO的示例,帮助您理解企业IdP与阿里云进行SSO的端到端配置流程。本文以在Windows Server 2012 R2 ECS实例上搭建的AD FS为例进行介绍。
准备工作
配置SSO登录前,您需要完成以下工作:
在Windows Server 2012 R2 ECS实例上搭建以下服务器。
DNS服务器:将身份认证请求解析到正确的Federation Service上。
Active Directory域服务(AD DS):提供对域用户和域设备等对象的创建、查询和修改等功能。
Active Directory Federation Service(AD FS):提供配置SSO信赖方的功能,并对配置好的信赖方提供SSO认证。
重要本文中涉及到Microsoft Active Directory配置的部分属于建议,仅用于帮助理解阿里云SSO登录的端到端配置流程,阿里云不提供Microsoft Active Directory配置的咨询服务。关于如何搭建AD FS,请参见使用Windows实例搭建AD域。
规划配置数据。
云账号的默认域名:
secloud.onaliyun.com
。云账号下包含RAM用户:
alice
,其完整的 UPN(User Principal Name)为alice@secloud.onaliyun.com
。创建的Microsoft AD中的AD FS服务名称:
adfs.secloud.club
。创建的Microsoft AD的域名:
secloud.club
,NETBIOS名为secloud
。RAM用户
alice
在AD中的UPN:alice@secloud.club
,域内登录也可以使用secloud\alice
。
步骤一:在RAM中将AD FS配置为可信SAML IdP
在浏览器中输入如下地址:
https://adfs.secloud.club/FederationMetadata/2007-06/FederationMetadata.xml
。将元数据XML文件下载到本地。
在RAM控制台的SSO配置时使用下载好的元数据文件。
具体操作,请参见进行用户SSO时阿里云SP的SAML配置。
说明如果元数据文件超过大小限制,您可以尝试删除
<fed:ClaimTypesRequested>
和<fed:ClaimTypesOffered>
中的所有内容。
步骤二:在AD FS中将阿里云配置为可信SAML SP
在AD FS中,SAML SP被称作信赖方。
在服务器管理器的工具菜单中选择AD FS管理。
在AD FS管理工具中添加信赖方信任。
为新创建的信赖方设置阿里云的SAML元数据。
阿里云账号的SAML服务提供商元数据URL可以登录RAM控制台,在左侧菜单栏,单击SSO管理,在用户SSO页签下的SSO登录设置区域下查看。AD FS信赖方可以直接配置元数据的URL。
完成配置信赖方之后,阿里云和AD FS就产生了互信,阿里云会将默认域名为secloud.onaliyun.com
的云账号下所有RAM用户的认证请求转发到AD FS:adfs.secloud.club
,AD FS也会接受来自于阿里云的认证请求并向阿里云转发认证响应。
步骤三:为阿里云SP配置SAML断言属性
为了让阿里云能使用SAML响应定位到正确的RAM用户,SAML断言中的NameID
字段取值应为RAM用户的UPN。
我们需要配置AD中的UPN为SAML断言中的NameID
。
为信赖方编辑声明规则。
添加颁发转换规则。
说明颁发转换规则(Issuance Transform Rules):指如何将一个已知的用户属性,经过转换后颁发为SAML断言中的属性。由于我们要将用户在AD中的UPN颁发为
NameID
,因此需要添加一个新的规则。声明规则模板选择转换传入声明。
编辑规则。
说明由于示例中的云账号里的UPN域名为
secloud.onaliyun.com
,而AD中的UPN域名为secloud.club
,如果直接将AD中的UPN映射为NameID
,阿里云将无法匹配到正确的RAM用户。下面提供几种设置RAM用户的UPN与AD用户的UPN保持一致的方法:
方法一:将AD域名设置为RAM的域别名。
如果AD域名
secloud.club
是一个在公网DNS中注册的域名。用户可以将secloud.club
设置为RAM的域别名。关于如何设置域别名,请参见创建并验证域别名。完成设置后,在编辑规则对话框,将UPN映射为名称ID(
NameID
)。方法二:在AD FS中设置域名转换。
如果域名
secloud.club
是企业的内网域名,那么阿里云将无法验证企业对域名的所有权。RAM就只能使用默认域名secloud.onaliyun.com
。在AD FS给阿里云颁发的SAML断言中必须将UPN的域名后缀从
secloud.club
替换为:secloud.onaliyun.com
。方法三:将AD域名设置为用户SSO的辅助域名。
如果域名
secloud.club
是企业的内网域名,那么阿里云将无法验证企业对域名的所有权。您可以将secloud.club
设置为用户SSO的辅助域名,无需进行域名转换。关于如何设置辅助域名,请参见进行用户SSO时阿里云SP的SAML配置。完成设置后,在编辑规则对话框,将UPN映射为名称ID(
NameID
)。