使用Shibboleth IdP建立与华为云的联合认证

云里来云里去 发表于 2019/06/13 09:44:45 2019/06/13
【摘要】 本文以企业IdP系统为Shibboleth IDP V3(Windows系统)为例,说明配置联邦用户访问华为云系统的方法。

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与华为云的联合认证流程。


shibboleth流程图.jpg

从图中可知,联合认证的步骤为:

  1. 用户在浏览器中打开从华为云上获取到的登录链接,浏览器向华为云发起单点登录请求。

  2. 华为云根据登录链接中携带的信息,查找IAM身份提供商中对应的Metadata文件,构建SAML Request,发送给浏览器。

  3. 浏览器响应后,转发SAML Request给Shibboleth。

  4. 用户在浏览器中输入用户名和密码,Shibboleth服务器认证用户后,构建携带用户信息的SAML断言,向浏览器发送SAML Response。

  5. 浏览器响应后转发SAML Response给华为云。

  6. 华为云从SAML Response中取出断言,并根据已配置的身份转换规则映射到具体的IAM用户组,颁发Token。

  7. 用户完成单点登录,根据权限访问华为云。

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官网

安装.png

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"/>

示例:

步骤3.png

说明:文件中若存在多个“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>

示例:

步骤4-hws.png

6.重启Shibboleth IdP系统。

 a. 重启前需停止本机的http进程,否则会冲突导致无法启动Shibboleth。进入cmd后输入命令:“net stop http”,执行后选择继续(输入“Y”),再次执行命令,服务停止成功。

停止HTTP.png

 说明:提示“HTTP服务无法停止”,无影响。

 b. 进入路径“C:\Program Files (x86)\Shibboleth\ProcRun”,双击“shibd_idpw.exe”文件,如下图所示。

打开文件.png

 c. 单击“Stop”停止IdP系统后,再单击“Start”启动IdP系统,完成重启操作后,单击“确认”。

83a9d441-ac50-400b-9345-152096b6e346.png

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服务器提供的登录界面。

shibboleth登陆.png

说明:如果跳转失败,请确认获取的企业元数据文件(idp-metadata.xml)以及Shibboleth IdP是否配置正确。

7. 输入企业IDP中已配置的用户名和密码,验证是否可以登录到华为云。

  • 登录成功:表示单点登录验证成功,您可以将该地址以链接的形式配置到企业网站。

  • 登录失败:请检查您的用户名和密码。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。