使用AD FS进行用户SSO的示例

本文提供一个以AD FS与阿里云进行用户SSO的示例,帮助您理解企业IdP与阿里云进行SSO的端到端配置流程。本文以在Windows Server 2012 R2 ECS实例上搭建的AD FS为例进行介绍。

准备工作

配置SSO登录前,您需要完成以下工作:

  1. 在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域

  2. 规划配置数据。

    • 云账号的默认域名: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

  1. 在浏览器中输入如下地址:https://adfs.secloud.club/FederationMetadata/2007-06/FederationMetadata.xml

  2. 将元数据XML文件下载到本地。

  3. 在RAM控制台的SSO配置时使用下载好的元数据文件。

    具体操作,请参见进行用户SSO时阿里云SP的SAML配置

    说明

    如果元数据文件超过大小限制,您可以尝试删除<fed:ClaimTypesRequested><fed:ClaimTypesOffered>中的所有内容。

步骤二:在AD FS中将阿里云配置为可信SAML SP

在AD FS中,SAML SP被称作信赖方

  1. 服务器管理器工具菜单中选择AD FS管理

    image

  2. AD FS管理工具中添加信赖方信任

    添加信赖方信任

  3. 为新创建的信赖方设置阿里云的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

  1. 为信赖方编辑声明规则

    编辑声明规则

  2. 添加颁发转换规则

    说明

    颁发转换规则(Issuance Transform Rules):指如何将一个已知的用户属性,经过转换后颁发为SAML断言中的属性。由于我们要将用户在AD中的UPN颁发为NameID,因此需要添加一个新的规则。

    颁发转换规则

  3. 声明规则模板选择转换传入声明

    转换传入声明

  4. 编辑规则

    说明

    由于示例中的云账号里的UPN域名为secloud.onaliyun.com,而AD中的UPN域名为secloud.club,如果直接将AD中的UPN映射为NameID,阿里云将无法匹配到正确的RAM用户。

    下面提供几种设置RAM用户的UPN与AD用户的UPN保持一致的方法:

    1. 方法一:将AD域名设置为RAM的域别名

      如果AD域名secloud.club是一个在公网DNS中注册的域名。用户可以将secloud.club设置为RAM的域别名。关于如何设置域别名,请参见创建并验证域别名

      完成设置后,在编辑规则对话框,将UPN映射为名称ID(NameID)。

      编辑规则_方法1

    2. 方法二:在AD FS中设置域名转换。

      如果域名secloud.club是企业的内网域名,那么阿里云将无法验证企业对域名的所有权。RAM就只能使用默认域名secloud.onaliyun.com

      在AD FS给阿里云颁发的SAML断言中必须将UPN的域名后缀从secloud.club替换为:secloud.onaliyun.com编辑规则_方法2

    3. 方法三:将AD域名设置为用户SSO的辅助域名。

      如果域名secloud.club是企业的内网域名,那么阿里云将无法验证企业对域名的所有权。您可以将secloud.club设置为用户SSO的辅助域名,无需进行域名转换。关于如何设置辅助域名,请参见进行用户SSO时阿里云SP的SAML配置

      完成设置后,在编辑规则对话框,将UPN映射为名称ID(NameID)。

      编辑规则_方法3