一、创建身份提供商
在阿里云RAM控制台创建一个名为ADFS的身份提供商,并配置相应的元数据。AD FS的元数据URL为
https://adfs.domain.com/federationmetadata/2007-06/federationmetadata.xml
浏览器输入链接,下载元数据文件。(连接中域名换为自己的)

  1. 云账号登录RAM控制台。
  2. 在左侧导航栏,单击SSO管理。
  3. 在角色SSO页签下,单击新建身份提供商。
  4. 输入提供商名称和备注。
  5. 在元数据文档处,单击上传文件。
    实现ADFS与阿里云SSO(单点登陆管理)——配置角色SSO_第1张图片

二、创建RAM账号并授权

  1. 云账号登录RAM控制台。
  2. 在左侧导航栏,单击RAM角色管理。
  3. 单击新建RAM角色。
  4. 选择可信实体类型为身份提供商,单击下一步。
  5. 输入角色名称和备注。
  6. 选择身份提供商并查看限制条件后,单击完成。
    实现ADFS与阿里云SSO(单点登陆管理)——配置角色SSO_第2张图片
    实现ADFS与阿里云SSO(单点登陆管理)——配置角色SSO_第3张图片

点击完成并根据需求授予权限。


三、 在AD FS中将阿里云配置为可信SAML SP

  1. 在服务器管理器的工具菜单中选择AD FS管理。
  2. 在AD FS管理工具中添加信赖方信任。
    实现ADFS与阿里云SSO(单点登陆管理)——配置角色SSO_第4张图片
  3. 为新创建的信赖方设置阿里云的角色SSO的SAML SP元数据,元数据URL为https://signin.aliyun.com/saml-role/sp-metadata.xml。
    实现ADFS与阿里云SSO(单点登陆管理)——配置角色SSO_第5张图片
  4. 按照向导完成配置。

四、为阿里云SP配置SAML断言属性
阿里云需要AD FS在SAML断言中提供NameID、Role和RoleSessionName属性。AD FS中通过颁发转换规则来实现这一功能。
• NameID
配置Active Directory中的Windows账户名为SAML断言中的NameID,其操作步骤如下。

  1. 为信赖方编辑声明规则。
  2. 添加颁发转换规则。
    说明 颁发转换规则(Issuance Transform Rules):指如何将一个已知的用户属性,经过转换后,颁发为SAML断言中的属性。由于我们要将用户在AD中的Windows账户名颁发为NameID,因此需要添加一个新的规则。
  3. 声明规则模版选择转换传入声明。
    实现ADFS与阿里云SSO(单点登陆管理)——配置角色SSO_第6张图片
  4. 使用如下配置规则,并点击完成。
    • 声明规则名称:NameID
    • 传入声明类型:Windows账户名
    • 传出声明类型:名称ID
    • 传出名称ID格式:永久标识符
    • 传递所有声明值:勾选

实现ADFS与阿里云SSO(单点登陆管理)——配置角色SSO_第7张图片
配置Active Directory中的UPN为SAML断言中的RoleSessionName,其操作步骤如下。
5.单击添加转换声明规则。
6.从声明规则模板中选择以声明方式发送LDAP特性。
实现ADFS与阿里云SSO(单点登陆管理)——配置角色SSO_第8张图片
7.使用如下配置规则,并点击完成。

  • 声明规则名称:RoleSessionName
  • 特性存储:Active Directory
  • LDAP 特性列:User-Principal-Name(您也可以根据具体需求选择其他属性,例如email。)
  • 传出声明类型:https://www.aliyun.com/SAML-Role/Attributes/RoleSessionName
    实现ADFS与阿里云SSO(单点登陆管理)——配置角色SSO_第9张图片

通过自定义规则将特定的用户所属组的信息转化成阿里云上的角色名称,其操作步骤如下。
8.单击添加转换声明规则。
9.从声明规则模板中选择使用自定义规则发送声明,点击下一步。
实现ADFS与阿里云SSO(单点登陆管理)——配置角色SSO_第10张图片
使用如下配置规则,并点击完成。

  • 声明规则名称:Get AD Groups
  • 自定义规则:
    c:[Type ==
    "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccount
    name", Issuer == "AD AUTHORITY"] => add(store = "Active Directory",
    types = ("http://temp/variable"), query = ";tokenGroups;{0}", param =
    c.Value);

    实现ADFS与阿里云SSO(单点登陆管理)——配置角色SSO_第11张图片
    10.单击添加转换声明规则。
    11.重复以上步骤,并点击完成。

  • 声明规则名称:Role
  • 自定义规则:
    c:[Type == "http://temp/variable", Value =~ "(?i)^Aliyun-([\d]+)"]
    => issue(Type = "https://www.aliyun.com/SAML-Role/Attributes/Role",
    Value = RegExReplace(c.Value, "Aliyun-([\d]+)-(.+)", "acs:ram::
    $1:role/$2,acs:ram::$1:saml-provider/ADFS"));

    实现ADFS与阿里云SSO(单点登陆管理)——配置角色SSO_第12张图片

五、在AD域中创建对应用户组
在AD域中创建用户组
实现ADFS与阿里云SSO(单点登陆管理)——配置角色SSO
名命格式为Aliyun--adfs,Aliyun--adfs-user
将所需的对应的用户添加至用户组。

六、验证配置
登录AD FS SSO门户
(URL:https://adfs.domain.com/adfs/ls/IdpInitiatedSignOn.aspx)
选择阿里云应用,输入用户名密码。
实现ADFS与阿里云SSO(单点登陆管理)——配置角色SSO_第13张图片

官方文档参考
https://help.aliyun.com/document_detail/109791.html?spm=a2c4g.11186623.6.643.461a62b3tlKb3p