使用Shibboleth IdP建立与华为云的联合认证
1 总览
当企业已有自己的身份认证系统,希望使用自己的身份认证系统登录华为云,而不需要在华为云中重新创建对应的IAM用户时,可以使用IAM提供的身份提供商(Identity Provider,简称IdP)功能。通过该功能,企业用户不用在华为云中重建IAM用户,只需使用企业已有的用户名密码即可登录并使用华为云资源。利用身份提供商(IdP)机制,您可以向企业中的用户授予使用您账户中华为云资源的权限。关于身份提供商的详细说明,请参见:联邦身份认证。
华为云支持基于浏览器的页面单点登录(WebSSO)和非浏览器的调用API接口访问两种方式的联邦身份认证。本文以Shibboleth IdP V3(Windows系统)为企业IdP,示例配置联合认证系统,使企业用户通过单点登录访问华为云,如需了解通过调用API接口访问华为云,请参见:API参考>联邦身份认证管理。
1.1 前提条件
-
企业IdP系统内已配置用户信息。
-
企业IdP服务器的时间需要和华为云系统的时间一致,即都使用GMT时间(Greenwich Mean Time),否则会导致联合身份认证失败。
-
企业管理员在华为云上注册了可用的账号,并已在IAM中创建一个用户组,例如按照本文示例,已创建具有“ECS Admin权限”的用户组。
1.2 流程说明
下图为Shibboleth IdP V3与华为云的联合认证流程。
从图中可知,联合认证的步骤为:
-
用户在浏览器中打开从华为云上获取到的登录链接,浏览器向华为云发起单点登录请求。
-
华为云根据登录链接中携带的信息,查找IAM身份提供商中对应的Metadata文件,构建SAML Request,发送给浏览器。
-
浏览器响应后,转发SAML Request给Shibboleth。
-
用户在浏览器中输入用户名和密码,Shibboleth服务器认证用户后,构建携带用户信息的SAML断言,向浏览器发送SAML Response。
-
浏览器响应后转发SAML Response给华为云。
-
华为云从SAML Response中取出断言,并根据已配置的身份转换规则映射到具体的IAM用户组,颁发Token。
-
用户完成单点登录,根据权限访问华为云。
2 在Shibboleth IdP系统中配置华为云系统信息
建立联合认证首先需要您对企业IIDP系统进行配置,配置Shibboleth IdP V3需要进行如下操作。
操作步骤
1. Shibboleth IdP V3(Windows系统)需要您安装JDK_1.8,并按下表配置环境变量。如已安装则直接进行步骤2。
变量名 |
变量值 |
JAVA_HOME |
C:\Program Files\Java\jdk1.8(JDK安装路径,需根据具体情况修改) |
Path (此变量系统中已存在,只需在现有变量值后添加以下值即可) |
;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; |
CLASSPATH |
.%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar |
2. 下载并安装Shibboleth IdP V3。安装时需勾选“Install Jetty”,同时设置“hostname”与“EntityID”,例如“idp.acompany.com”。更多安装说明请参阅Shibboleth官网。
3. 下载华为云系统的元数据文件。使用Chrome浏览器打开https://auth.huaweicloud.com/authui/saml/metadata.xml,单击右键选择“目标另存为”,将文件保存在“C:\Program Files (x86)\Shibboleth\IdP\metadata”,并设置文件名称,例如“SP-metadata.xml”。
4. 将元数据文件的路径配置到“C:\Program Files (x86)\Shibboleth\IdP\conf\metadata-providers.xml”文件中。即在上述文件中 ,添加以下内容:
<MetadataProvider id="LocalMetadata1" xsi:type="FilesystemMetadataProvider" metadataFile="C:\Program Files (x86)\Shibboleth\IdP\metadata\SP-metadata.xml"/>
示例:
说明:文件中若存在多个“MetadataProvider id”,要求id名不能重复,保持唯一。
5. 在“C:\Program Files (x86)\Shibboleth\IdP\conf\attribute-filter.xml”文件中配置华为云系统的身份标识(EntityID)。即在上述文件中 ,添加以下内容:
<afp:AttributeFilterPolicy id="SP-metadata">
<afp:PolicyRequirementRule xsi:type="basic:AttributeRequesterString" value="https://auth.huaweicloud.com/>
<afp:AttributeRule attributeID="eduPersonPrincipalName">
<afp:PermitValueRule xsi:type="basic:ANY" />
</afp:AttributeRule>
<afp:AttributeRule attributeID="uid">
<afp:PermitValueRule xsi:type="basic:ANY" />
</afp:AttributeRule>
<afp:AttributeRule attributeID="mail">
<afp:PermitValueRule xsi:type="basic:ANY" />
</afp:AttributeRule>
</afp:AttributeFilterPolicy>
示例:
6.重启Shibboleth IdP系统。
a. 重启前需停止本机的http进程,否则会冲突导致无法启动Shibboleth。进入cmd后输入命令:“net stop http”,执行后选择继续(输入“Y”),再次执行命令,服务停止成功。
说明:提示“HTTP服务无法停止”,无影响。
b. 进入路径“C:\Program Files (x86)\Shibboleth\ProcRun”,双击“shibd_idpw.exe”文件,如下图所示。
c. 单击“Stop”停止IdP系统后,再单击“Start”启动IdP系统,完成重启操作后,单击“确认”。
3 在IAM中配置身份提供商
安装配置好Shibboleth后,还需IAM上创建身份提供商,并添加Shibboleth的metadata文件,以建立华为云对Shibboleth的信任关系。此外,需要在IAM的身份提供商中配置身份转换规则,通过身份转换规则将企业IdP系统的用户身份及权限信息映射到IAM中,以实现企业用户通过Shibboleth完成与华为云间的联合认证及权限范围限定。
操作步骤
1. 企业管理员使用已注册的华为云账户登录华为云,并进入IAM控制台,在控制台左侧导航栏中单击“身份提供商”,单击“创建身份提供商。
2. 设置身份提供商的名称(例如:“ShibbolethIdP”)、协议、状态,单击“确定”,创建身份提供商成功。
3. 单击界面提示中的“修改身份提供商”,在页面中“元数据配置”区域配置企业IdP系统的元数据,即上传“C:\Program Files (x86)\Shibboleth\IdP\metadata\idp-metadata.xml”文件。
4. 在“修改身份提供商”页面的“身份转换规则”单击“编辑规则”,删除默认规则并填入如下规则,单击“确定”,保存规则。关于身份转换规则的详细说明,请参见:联邦用户身份规则转换说明。
如下规则表示:企业IdP系统中包含用户ID为test1,test2或test3的用户,登录系统后显示的用户名为FederationUser_ECSadmin_{0},具有“ECS Admin”用户组的权限。
[
{
"remote": [
{
"type": "mail"
},
{
"any_one_of": [
"test1",
"test2",
"test3"
],
"type": "uid"
}
],
"local": [
{
"user": {
"name": "FederationUser_ECSadmin_{0}"
}
},
{
"group": {
"name": "ECS Admin"
}
}
]
}
]
5. 在“修改身份提供商”页面,复制登录链接,并在浏览器中打开。
6. 检查是否可以跳转到企业的IdP服务器提供的登录界面。
说明:如果跳转失败,请确认获取的企业元数据文件(idp-metadata.xml)以及Shibboleth IdP是否配置正确。
7. 输入企业IDP中已配置的用户名和密码,验证是否可以登录到华为云。
-
登录成功:表示单点登录验证成功,您可以将该地址以链接的形式配置到企业网站。
-
登录失败:请检查您的用户名和密码。
- 点赞
- 收藏
- 关注作者
评论(0)