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

1 联合认证简介

当企业已有自己的身份认证系统(如华为云应用身份管理服务OneAccess),希望使用自己的身份认证系统登录华为云,而不需要在华为云中重新创建对应的IAM用户时,可以使用IAM提供的身份提供商(IdP)功能。通过该功能,企业用户不需要在华为云中重新创建用户,只需使用企业已有的用户名密码即可登录并使用华为云资源。利用身份提供商(IdP)机制,您可以向企业中的用户授予使用您账户中华为云资源的权限。关于身份提供商功能的详细说明,请参见联邦身份认证

本文以企业IdP系统为华为云应用身份管理服务(以下简称OneAccess)为例,说明配置联邦用户访问华为云系统的方法。其中我们使用OneAccess做为用户管理和访问软件。

1.1 OneAccess与华为云联合认证流程

下图为OneAccess与华为云的联合认证流程。

unnaming (77).png

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

  1. 用户在浏览器中打开从华为云上获取到的登录链接,浏览器向华为云发起单点登录请求。
  2. 华为云根据登录链接中携带的信息,查找对应的Metadata文件,构建SAML Request,发送给浏览器。
  3. 浏览器响应后,转发SAML Request给OneAccess实例。
  4. 用户在浏览器中输入OneAccess中创建的用户名和密码,OneAccess对用户提供的身份信息进行验证,并构建携带用户信息的SAML断言,向浏览器发送SAML Response。
  5. 浏览器响应后转发SAML Response给华为云。
  6. 华为云从SAML Response中取出断言,并根据已配置的身份转换规则映射到具体的IAM用户组,颁发Token。
  7. 用户完成单点登录,根据权限访问华为云。

2 环境要求及运行结果

2.1 环境要求

  • 您已在华为云上注册了可用的帐号,并通过IAM创建guest用户组,操作请参考:创建用户及用户组

  • 您已在华为云开通并购买OneAccess服务实例,并已在OneAcce中创建用户guest,操作请参考:创建用户

2.2 运行结果

通过本文操作,使用默认身份转换规则映射到华为云帐号中的guest用户组。

在完成本文所有操作后,您可以通过IAM中创建的身份提供商所提供的链接,使用guest用户成功登录华为云。其中由于IAM配置默认身份转换规则,guest用户将会以“FederationUser”的虚拟用户身份登录华为云。给虚拟用户配置IAM权限及身份转换规则的其他高阶功能,请参考身份转换规则详细说明

3 IdP侧联邦对接配置

在本文中,华为云OneAccess服务作为IdP(身份提供商)完成与华为云IAM的对接。

3.1 前提条件

请确保已购买OneAccess服务实例(公测期间,则确定已申请公测)。

3.2 操作步骤

  1. 获取并保存华为云系统的元数据文件(metadata文件)

    访问网址:https://auth.huaweicloud.com/authui/saml/metadata.xml。下载华为云元数据文件,并设置文件名称,例如“SP-metadata.xml”。

  2. 在OneAccess中创建应用,操作请参见:用户单点登录SAML协议应用

    其中“上传元数据”需要上传1获取到的IAM SP元数据“SP-metadata.xml”。

  3. 在OneAccess中创建用户并为其授予2创建的应用访问权限,操作请参见:添加用户为用户授予应用使用权限

4 SP侧联邦对接配置

在本文中,华为云IAM服务作为SP(服务提供商)完成与OneAccess的对接。

4.1 前提条件

请确保已开通华为云IAM账号。

4.2 操作步骤

  1. 获取OneAccess的元数据文件,获取方法请参考:IdP配置

    获取并保存元数据文件“IdP-metadata.xml”。

  2. 在华为云创建基于SAML协议的身份提供商,操作请参见:在华为云上创建身份提供商

    其中“在华为云上配置元数据文件”需要上传1获取到的OneAccess IdP元数据“IdP-metadata.xml”。

5 在IAM配置身份提供商身份转换规则

完成联邦对接后,还需要在IAM的身份提供商中,配置OneAccess与华为云用户组间的映射关系,以实现OneAccess用户完成与华为云间的联合认证及权限范围限定。

身份转换规则的详细说明和示例请参见:身份转换规则详细说明

操作步骤

     1. 管理员登录华为云,在IAM“修改身份提供商”页面, 创建身份转换规则。详情请参考:配置身份转换规则

  • 用户名:联邦登录用户使用的用户名称,如“guest”。
  • 用户组:联邦登录用户具有的用户组权限,如“guest”。
  • 本规则生效条件:联邦用户拥有所选用户组权限的生效条件。

        image9.png

        说明

             本规则生效条件中的属性应与IdP侧OneAccess映射配置添加的用户属性名一致。

     2. 在“创建规则”页面,单击“确定”。

     3. 在“修改身份提供商”页面,单击“确定”,使配置生效。

         配置成功后,OneAccess用户发起联邦登录,将以guest用户名登录华为云,此用户具有IAM guest用户组对应权限。

6 SP端发起登录

     1. 在“修改身份提供商”页面,复制登录链接,并在浏览器中输入如下链接。

         复制登录链接.png

     2. 浏览器弹出如下页面中,填写OneAccess应用授权的用户名和密码,单击“登录”。

        unnaming (74).png

     3. 登录至华为云控制台,企业管理系统OneAccess到华为云的联合认证成功。

  • 用户登录后出现如下页面,说明使用OneAccess用户(企业联邦用户)登录华为云成功。

        image7.png

  • 用户登录后出现如下页面,说明当前登录华为云的企业联邦用户没有相应操作的权限,参考1.5章节,配置身份提供商身份转换规则完成权限配置。

        image8.png

7 (可选)配置OneAccess的华为应用映射关系

7.1 前提条件

在IAM配置的身份转化规则中,需要获取IdP的断言中的属性信息来填充身份转换规则中的缺省值。

7.2 操作步骤

     1. 在OneAccess映射配置,以domain_id为例:

  • 应用系统属性名: domain_id
  • 映射类型:固定属性值
  • 固定属性值:{华为云创建身份提供商的租户Domain ID}
  • 其他:自定义

     2. 映射配置生效。

         在SAML Response中携带domain_id信息:

       

8 (可选)IdP端发起登录

当前华为云IAM身份提供商支持单租户、多租户模式,如果您通过IdP端发起登录,请参考本节进行操作。


说明

      如果您同时配置单租户、多租户模式,系统将自动设置为单租户有效。

8.1 单租户模式

     1. 在华为云IAM的“修改身份提供商”页面,查看对应的domain_id,idp。

        unnaming (76).png

     2. 在OneAccess增加domain_id对应的映射配置

  • 应用系统属性名:IAM_SAML_Attributes_domain_id
  • 映射类型:固定属性值
  • 固定属性值:{华为云创建身份提供商的租户Domain ID}
  • 其他:自定义

     3. 在OneAccess增加IdP对应的映射配置

  • 应用系统属性名:IAM_SAML_Attributes_idp_id
  • 映射类型:固定属性值
  • 固定属性值:{华为云创建身份提供商的租户IdP ID}
  • 其他:自定义

     4. 登录OneAccess企业中心,进入创建的华为云应用详情,获取网站应用的挂载URL。

        image12.png

     5. 浏览器中输入挂载URL,输入帐号、密码,登录并跳转至华为云控制台,表示OneAccess用户到华为云的联合认证成功。

        image7 (1).png


8.2 多租户模式

8.2.1多租户模式场景说明

  • 多租户模式下配置单租户场景

         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}

 

       说明

               多个传出声明类型值由分号“;”分割,且传参不能含有空格。

8.2.2 多租户模式登录步骤

  1. 在“修改身份提供商”页面,查看对应的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. 参考单租户登录-步骤2,在ADFS上添加多租户配置参数idps对应的规则。

    其中传出声明类型必须为IAM_SAML_Attributes_identityProviders,传出声明值为固定格式的多租配置信息,具体参数说明如下:

    参数

    格式

    说明

    传出声明类型

    IAM_SAML_Attributes_identityProviders

    固定值,不能与其他IAM_SAML配置同时配置

    传出声明值

    iam::{domain_id}:identityProvider:{idp_id}

    支持多值拼接,拼接符为英文分号(;)


  3. 登录OneAccess企业中心,进入创建的华为云应用详情,获取网站应用的挂载URL。

  4. 浏览器中输入挂载URL,输入帐号、密码,登录并跳转至华为云控制台,表示OneAccess用户到华为云的联合认证成功。

  5. 在华为云console选择要访问的身份提供商。

  6. 出现如下页面,说明使用OneAccess用户登录华为云成功。

    (完)