使用Active Directory Federation Services建立与华为云的联合认证
1 联合认证简介
当企业已有自己的身份认证系统,希望使用自己的身份认证系统登录华为云,而不需要在华为云中重新创建对应的IAM用户时,可以使用IAM提供的身份提供商(IdP)功能。通过该功能,企业用户不需要在华为云中重新创建用户,只需使用企业已有的用户名密码即可登录并使用华为云资源。利用身份提供商(IdP)机制,您可以向企业中的用户授予使用您账户中华为云资源的权限。关于身份提供商功能的详细说明,请参见联邦身份认证。
本文以企业IdP系统为Active Directory Federation Services(以下简称ADFS)为例,说明配置联邦用户访问华为云系统的方法。其中我们使用Active Directory(AD)做为用户管理和访问软件。
1.1 ADFS与华为云联合认证流程
下图为ADFS与华为云的联合认证流程。
从图中可知,联合认证的步骤为:
-
用户在浏览器中打开从华为云上获取到的登录链接,浏览器向华为云发起单点登录请求。
-
华为云根据登录链接中携带的信息,查找对应的Metadata文件,构建SAML Request,发送给浏览器。
-
浏览器响应后,转发SAML Request给ADFS。
-
用户在浏览器中输入AD中创建的用户名和密码,完成身份认证。
-
ADFS服务器构建携带用户信息的SAML断言,向浏览器发送SAML Response。
-
浏览器响应后转发SAML Response给华为云。
-
华为云从SAML Response中取出断言,并根据已配置的身份转换规则映射到具体的IAM用户组,颁发Token。
-
用户完成单点登录,根据权限访问华为云。
2 环境要求及运行结果
2.1 环境要求
-
您已有一台可用的Windows计算机,用于安装ADFS,并拥有该计算机的管理员权限。关于ADFS对计算机的硬件要求,请参见部署AD FS要求。
-
您的Windows计算机上已安装Active Directory域服务,并且已使用域服务至少添加两个用户及用户组。其中两个用户分别属于两个用户组。例如,已创建用户Alice和Bob,用户组ADFSAdmin和ADFSGuest,其中Alice属于ADFSADmin,Bob属于ADFSGuest。用户组ADFSAdmin用于映射到IAM中的admin用户组,ADFSGuest用于映射到IAM中的guest用户组。如果不满足要求,请参见使用Windows 2012 R2安装Active Directory并创建用户和用户组。
-
您的Windows计算机与华为云网络联通。
-
您已在华为云上注册了可用的账号,并已在IAM中创建一个用户组,例如为guest用户组。
2.2 示例环境及运行结果
本文中使用的计算机及软件规格说明如下,后面的操作步骤基于此环境操作。
-
计算机:用于安装ADFS的操作系统是由华为云弹性云服务器(ECS)所创建的Windows 2012 R2 64位中文版,使用的规格是“s3.large.2 | 2vCPUs | 4GB”。
-
已在弹性云服务器中安装Active Directory(AD)域服务,并已创建ADFSAdmin、ADFSGuest用户组,Alice和Bob用户,其中Alice属于ADFSAdmin用户组,Bob属于ADFSGuest用户。
-
已在华为云注册账号,并通过IAM创建guest用户组。
通过本文操作,AD域创建的ADFSAdmin映射到华为云账号中的admin用户组,ADFSGuest映射到IAM中的guest用户组。在完成本文所有操作后,您可以通过IAM中创建的身份提供商所提供的链接,使用AD域用户Alice或是Bob成功登录华为云。其中由于Alice属于ADFSAdmin组,映射为IAM的admin组,因此拥有admin权限。Bob属于ADFSGuest组,映射为IAM的guest组,因此拥有guest组所配置的权限。
3 添加Active Directory证书服务
由于安装ADFS时需要使用到证书服务,因此需要先在计算机中添加证书服务。如果您已安装证书服务,请跳过本节内容。
3.1 前提条件
请确保计算机环境已达到要求,具体要求请参见 2 环境要求及运行结果。
3.2 操作步骤
-
使用计算机域管理员登录计算机,打开“服务器管理器”,单击“添加角色和功能”。
-
在弹出的窗口中,“开始之前”“安装类型”“服务器选择”都按默认选项,单击“下一步”。
-
在“服务器角色”中确认“Active Directory证书服务”是否已勾选,若未勾选表示未安装,则勾选“Active Directory”,在弹出窗口中按默认选择,单击“添加功能”,完成证书服务的安装。
-
在“角色服务”中,按默认选择“证书颁发机构”,单击“下一步”。
-
在“确认”中单击“安装”。安装完成后,单击下图中的红框,配置证书服务。
-
在“AD CS配置”窗口的“凭据”中按默认选择,单击“下一步”。
-
在“角色服务”中选择“证书颁发机构”,单击“下一步”。
-
在“设置为类型”中按默认选择“企业CA”,单击下一步。
-
在“CA类型”中选择“根CA”,单击“下一步”。
-
在“私钥”中选择“创建新的私钥”,单击“下一步”。
-
在“加密”中按默认选择,单击“下一步”。
-
在“CA名称”中,使用默认值,单击“下一步”。
-
“有效期”、“证书数据库”都按默认选择,单击“下一步”。
-
在“确认”中单击“确认”完成证书配置。
-
配置成功后,提示配置成功,如下图所示。请重启计算机,使得配置的证书生效。
4 安装AD FS
本节介绍在Windows 2012 R2系统中安装ADFS的方法,请确保当前环境符合要求(请参见2 环境要求及运行结果),并已完成证书服务的添加(3 添加Active Directory证书服务)。
4.1 操作步骤
-
打开“服务器管理器”,单击“添加角色和功能”。
-
在弹出来的窗口“安装类型”按默认选择“基于角色或基于功能的安装”,单击“下一步”。
-
“服务器选择”,选择当前服务器,单击“下一步”。
-
“服务器角色”勾选“Active Directory Federation Services”,单击“下一步”。
-
“功能”和“AD FS”按默认选择,单击“下一步”。
-
“确认”,单击“安装”,开始安装AD FS。
-
安装完成后,单击下图中的红框,开始ADFS的配置。
-
在弹出的窗口“欢迎”页中按默认选项,单击“下一步”。
-
在“连接到AD DS”中,单击“下一步”。
-
在“指定服务属性”页面,选择之前创建的SSL证书,并填写显示名称。
说明:
SSL证书请选择计算机名+域名,例如,这里选择adfs2012.acompany.com。
-
“联合身份验证服务名称”,即访问联合身份验证服务的地域,请记录,在获取联合身份验证服务配置文件里需要用到。
-
“联合验证服务显示名称”,即用户浏览器验证身份时,在浏览器界面中所显示的名称。
11.在“指定服务帐户”中使用已有的域管理帐户。
单击“选择”后弹出的窗口如下图所示,请在此输入域管理帐户,如Administrator,单击“确定”。
返回“指定服务帐户”中,输入帐户密码,单击“下一步”。
12.在“指定数据库”中按默认选择,单击“下一步”。
13.在“查看选择”单击“下一步”。
14.在“先决条件检查”,单击“配置”。
15.在看到“已成功配置此服务器”时,表示配置成功。
5 在ADFS中添加华为云信任关系
在ADFS安装配置完成后,需要将华为云的信任关系配置到ADFS中,以完成ADFS对华为云的信息关系添加。
5.1 操作步骤
-
保存华为云的断言描述。在浏览器中输入如下链接,并将该网页另存为“metadata.xml”。
https://auth.huaweicloud.com/authui/saml/metadata.xml
-
在“管理工具”中打开“AD FS管理”,选择“添加信赖方信任向导”。
-
在弹出的窗口中“欢迎使用”中单击“启动”。
-
在“选择数据源”中选择“从文件导入有关信赖方的数据”,单击“浏览”,将1中保存的“metadata.xml”上传至此,单击“下一步”。
-
在“指定显示名称”填写信赖方显示名称,单击“下一步”。
-
在“是否立即配置多重身份验证”按默认选择,单击“下一步”。
-
在“选择颁发授权规则”中,按默认选择,单击“下一步”。
-
在“准备好添加信任”中按默认选择,单击“下一步”。
-
在“完成”中单击“关闭”。
-
在弹出的窗口中添加五条规则。
-
添加Rule_01。
单击“添加规则”。
在弹出的窗口中选择“使用自定义规则发送声明”。
在配置规则窗口中按如下图填写,填写完成后,单击“完成”,完成Rule_01的规则添加。其中自定义规则填写内容为:
c:[Type =="http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname",Issuer == "AD AUTHORITY"]=> add(store = "Active Directory", types =("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier"),query = ";sAMAccountName;{0}", param = c.Value);
-
重复如上操作,完成Rule_02的添加,其中自定义规则内容如下。
c:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier"]=> issue(Type ="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier",Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer, Value = c.Value,ValueType = c.ValueType, Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/format"]= "urn:oasis:names:tc:SAML:2.0:nameid-format:transient",Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/spnamequalifier"]= "https://auth.huaweicloud.com/");
-
添加ug1规则,定义由AD域创建的用户组ADFSAdmin为指定的声明值“ADFSAdmin”。
单击“添加规则”,在弹出窗口中选择“以声明方式发送组成员身份”,单击“下一步”。
在“选择组”窗口中,选择对象类型为“组”,并在对象名称中输入由AD域创建的用户组名称,此处示例为“ADFSAdmin”,单击“确定”。
在“选择规则类型”中填写如下图所示信息。
-
重复添加规则ug1的操作,添加规则ug2,将AD域创建的另一个用户组传出为声明值,此处示例为AD组名“ADFSGuest”,传出值为“ADFSGuest”。
-
创建规则“name”。
单击“添加规则”,在弹出窗口中选择“以声明方式发送 LDAP特性”,单击“下一步”。
在弹出窗口中“选择规则类型”按如下图填写,并单击“完成”。
-
最终编辑声明规则如下图所示,单击“确定”,完成规则设置。
6 在PowerShell中注册SPN并关闭身份验证扩展保护
-
打开Windows PowerShell,运行如下命令注册SPN,其中标红的内容为创建证书时,设置的显示CA证书名称,本例中为adfs2012.acompany.com。
setspn -s http/adfs2012.acompany.com administrator
注册完成后,可使用如下命令查看结果。
setspn -q http/adfs2012.acompany.com
-
由于Windows 2012 R2使用了身份验证扩展保护功能,但是由于部分浏览器不支持扩展保护功能,使得您无法从企业网络内部使用集成Windows身份验证登录到云服务。因此为了ADFS能正常的登录到华为云,需要关闭ADFS的扩展保护功能。
在PowerShell中运行如下命令,关闭ADFS的扩展保护功能,设置完成后,请重启“AD FS管理”。
Set-ADFSProperties -ExtendedProtectionTokenCheck None
-
验证IAM连接成功。在浏览器中打开如下链接,显示下图内容,说明连接成功。其中标红的内容为创建证书时,显示的CA证书名称。
https://adfs2012.acompany.com/adfs/ls/idpinitiatedsignon.aspx
7 在IAM上配置身份提供商
在完成ADFS的安装及信息关系配置后,还需要在IAM上创建ADFS身份提供商,并添加ADFS的metadata文件,以建立华为云对ADFS的信任关系。此外,需要在IAM的身份提供商中,配置AD域用户组与华为云用户组间的映射关系,以实现AD域用户通过ADFS完成与华为云间的联合认证及权限范围限定。
操作步骤
-
在浏览器打开如下链接,其中标的内容请替换为CA证书名称,将将此文件另存为federationmetadata.xml。
https://adfs2012.acompany.com/federationmetadata/2007-06/federationmetadata.xml
说明:
如果在IE中打开此链接,出现乱码,请在IE中打开“工具”选择“兼容性视图设置,并将“https://adfs2012.acompany.com/federationmetadata/2007-06/federationmetadata.xml”添加进去。添加完成后,重新打开此链接,即可解决乱码问题。
-
使用华为云账户登录华为云,并进入IAM控制台,在控制台左侧导航栏中单击“身份提供商”,单击“创建身份提供商。
-
在“创建身份提供商”页面,填写身份提供商名称、协议、状态,单击“确定”。
-
在已创建的身份提供商后单击“修改”。
-
在“修改身份提供商”页面的“元数据配置”中,将1中下载的federationmetadata.xml上传。
-
在“修改身份提供商”页面的“身份转换规则”单击“编辑规则”,填入如下规则。关于IAM规则的详细说明,请参见联邦用户身份规则转换说明。
如下规则表示AD域的ADFSAdmin用户组映射至IAM的admin用户组。AdFSGuest用户组映射到IAM的guest用户组。并且用户组中的所有用户在华为云中登录后,在华为云上显示的IAM用户名为“acompany_用户名”,例如Alice登录后显示的IAM用户名是“acompany_Alice”。
[{"remote": [{"type": "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"},{"any_one_of": ["ADFSAdmin"],"type": "http://schemas.xmlsoap.org/claims/Group"}],"local": [{"user": {"name": "acompny_{0} "}},{"group": {"name": "admin"}}]},{"remote": [{"type": "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"},{"any_one_of": ["ADFSGuest"],"type": "http://schemas.xmlsoap.org/claims/Group"}],"local": [{"user": {"name": " acompny_{0} "}},{"group": {"name": "guest"}}]}]
8 SP端发起登录
- 在“修改身份提供商”页面,复制登录链接,并在浏览器中输入如下链接。
- 浏览器弹出如下页面中,填写AD域的用户名和密码,单击“登录”,能成功登录到华为云控制台,表示AD中的域用户到华为云的联合认证成功。
- 出现如下页面,说明使用AD域的用户Alice登录华为云成功。
9 IdP端发起登录
单租户模式
- 在“修改身份提供商”页面,查看对应的domain_id,idp。
- 在ADFS上添加domain_id、idp对应的规则。 a. 添加方式:编辑声明颁发策略-->添加规则-->以声明方式发送组成员身份。
b. 添加domainId:其中声明规则名称可自定义,传出声明类型必须为:IAM_SAML_Attributes_domain_id,传出声明值为对应的domain_id。
c. 添加IdP:其中声明规则名称可自定义,传出声明类型必须为:IAM_SAML_Attributes_idp_id,传出声明值为对应的idp名称。 - 登录https://{ADFS服务器名称}.acompany.com/adfs/ls/idpinitiatedsignon.aspx进行验证。
-
输入账号密码登录后,成功跳转至华为云Console,表示AD中的域用户到华为云的联合认证成功。
-
出现如下页面,说明使用AD域的用户Alice登录华为云成功。
多租户模式
-
多租户模式场景说明
多租户模式下配置单租户场景:IdP发起登录后,将触发多租户模式下的单租户场景,预期以idp_id_1身份登录domain_id_1。
参数 |
格式 |
值 |
传出声明类型 |
IAM_SAML_Attributes_identityProviders |
iam::{domain_id_1}:identityProvider:{idp_id_1} |
多租户模式下配置多租户场景:IdP端发起登录后,将触发多租户模式下的多租户场景,如下图所示。将跳转至多租户联邦登录页,用户选择身份提供商后,完成登录。
参数 |
格式 |
值 |
传出声明类型 |
IAM_SAML_Attributes_identityProviders |
iam::{domain_id_1}:identityProvider:{idp_id_1};iam::{domain_id_1}:identityProvider:{idp_id_2};iam::{domain_id_2}:identityProvider:{idp_id_3} |
说明:
多个传出声明类型值由分号“;”分割,且传参不能含有空格。
-
多租户模式登录步骤
-
在“修改身份提供商”页面,查看对应的domain_id,idp,确认身份提供商信息(多租户场景需要根据不同的登录链接确认信息)。
IDP
domain_id
Idp_id
IDP1
{domain_id_1}
{idp_id_1}
IDP2
{domain_id_1}
{idp_id_2}
IDP3
{domain_id_2}
{idp_id_3}
-
参考单租户登录-步骤2,在ADFS上添加多租户配置参数idps对应的规则。
其中传出声明类型必须为IAM_SAML_Attributes_identityProviders,传出声明值为固定格式的多租配置信息,具体参数说明如下:
参数
格式
说明
传出声明类型
IAM_SAML_Attributes_identityProviders
固定值,不能与其他IAM_SAML配置同时配置
传出声明值
iam::{domain_id}:identityProvider:{idp_id}
支持多值拼接,拼接符为英文分号(;)
-
登录https://{ADFS服务器名称}.acompany.com/adfs/ls/idpinitiatedsignon.aspx进行验证。
-
输入帐号、密码,并单击“登录”,成功跳转至华为云Console,表示AD中的域用户到华为云的联合认证成功。
-
在华为云console选择要访问的身份提供商。
-
出现如下页面,说明使用AD域的用户Alice登录华为云成功。
- 点赞
- 收藏
- 关注作者
评论(0)