使用Azure AD建立与华为云的联邦认证

云里来云里去 发表于 2020/11/23 17:21:15 2020/11/23
【摘要】 当企业已有自己的身份认证系统,希望使用自己的身份认证系统登录华为云,而不需要在华为云中重新创建对应的IAM用户时,可以使用IAM提供的身份提供商(Identity Provider,简称IdP)功能。通过该功能,企业用户不用在华为云中重建IAM用户,只需使用企业已有的用户名密码即可登录并使用华为云资源。利用身份提供商(IdP)机制,您可以向企业中的用户授予使用您账户中华为云资源的权限。

总览

当企业已有自己的身份认证系统,希望使用自己的身份认证系统登录华为云,而不需要在华为云中重新创建对应的IAM用户时,可以使用IAM提供的身份提供商(Identity Provider,简称IdP)功能。通过该功能,企业用户不用在华为云中重建IAM用户,只需使用企业已有的用户名密码即可登录并使用华为云资源。利用身份提供商(IdP)机制,您可以向企业中的用户授予使用您账户中华为云资源的权限。

华为云支持基于浏览器的页面单点登录(WebSSO)和非浏览器的调用API接口访问两种方式的联邦身份认证。本文以Azure AD为企业IdP,示例配置联邦认证,使Azure AD用户通过单点登录访问华为云控制台(WebSSO),如需了解通过调用API接口访问华为云,请参见:API参考>联邦身份认证管理



前提条件

  • Azure AD已进行实名认证,并已配置企业用户信息。

  • 企业管理员在华为云上注册了可用的账号。

流程说明

下图为Azure AD与华为云的联邦认证流程。

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

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

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

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

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

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

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

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

在Azure AD中配置华为云系统信息

  1. 企业管理员登录Azure官网:https://portal.azure.com/#home

  2. 在Azure首页左上角导航栏选择“Azure Active Directory > 企业应用程序 > 所有应用程序”。

      

  3. 单击“新建应用程序”,选择“非库应用程序”。

     

      

  4. 单击紫色弹窗提示“获取免费的Premium试用版已使用此功能”进行激活,并刷新页面。

    image.png

  5. 输入应用程序的名称,如“SAML_Test”,单击“添加”。

  6. 在“企业应用程序 – 所有应用程序”中,选择上一步中添加的应用程序名称,例如选择“SAML_Test”。

     

  7. 在SAML_Test 企业应用程序中,选择“单一登录>SAML”。

           

  8.  在基本SAML配置中配置华为云的实体ID和断言使用者服务URL(ACS地址)。

    华为云实体ID为: https://auth.huaweicloud.com/

    华为云断言使用者服务URL(ACS地址): https://auth.huaweicloud.com/authui/saml/SAMLAssertionConsumer

     

  9. (可选)配置用户属性和声明,定义需要传给华为云IAM的Azure AD用户信息,如用户名,邮箱等。

    声明名称对应于身份提供商规则中的属性字段,企业用户可根据此声明与身份提供商规则自定义Azure AD用户映射至华为云的属组与权限,从而适配不同需求场 景,身份提供商规则详细说明见:身份转换规则详细说明

     

  10. 访问网址:https://auth.huaweicloud.com/authui/saml/metadata.xml(推荐使用Chrome浏览器),下载华为云元数据文件,并设置文件名称,例如“SP-metadata.xml”。

  11. 单击“上载元数据文件”,配置华为云元数据文件。

     

     

  12. 下载Azure AD IDPMetadata.xml文件。

     

  13. 选择“用户和组>添加用户”。

     

  14. 单击“用户和组”,选择成员后,单击“分配”。

     


在IAM中配置身份提供商

  1. 进入IAM控制台,在左侧导航窗格中,单击“身份提供商”。

  2. 在“身份提供商”界面,单击“创建身份提供商”。

  3. 在”创建身份提供商“窗口中填写参数。例如将身份提供商命名为“AzureAD_IdP”。

     

  4. 单击“确定”。创建身份提供商成功,界面提示如下图所示:


  5. 配置身份提供商信息。单击身份提供商中“操作”列的“修改”。

  6. 单击“上传文件”左侧的,选择上一节11步中下载的AzureAD的元数据文件。

  7. 单击“上传文件”。弹出页面显示系统提取到的元数据,单击“确定”。

  8. 创建与AzureAD中用户属性和声明相匹配的规则,最多可创建10条身份转换规则,此处以创建一条规则为例,如需创建多条规则及规则生效条件,请参见在IAM中配置身份提供商。本文的用户属性和声明配置为:

    声明名称

    http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name

    user.userprincipalname


    单击“编辑规则”,将以下规则拷贝至规则框内,表示将Azure AD的name映射到华为云本地name,归属于admin的用户组,拥有admin组的权限。

   [{ 
     "remote": [{ 
               "type": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" 
     }], 
     "local": [{ 
                        "user": { 
                                 "name": "{0}" 
                        } 
               }, 
               { 
                        "group": { 
                                 "name": "admin" 
                        } 
               } 
     ] 
    }]

     

   9. 单击“确定”,身份提供商配置完成。

   10. 在“查看身份提供商”页面,复制登录链接,并在浏览器中打开。

  11. 跳转至AzureAD登录,若已登录,则直接跳转进入华为云,配置完成。


FAQ

1、如何通过目录用户属性自动映射华为云用户组

Azure AD提供了应用角色(app role)的机制,可以给第三方集成应用程序分配自定义的app role,并支持在应用程序中管理目录用户和app role的关联关系。若目录用户关联了app role,Azure AD在传递SAML声明的时候,会自动带上app role所对应的值(以多值形式存在),参考以下SAML声明截图,框选的属性即是代表目录用户的app role列表。

下面开始介绍如何使用应用角色来完成这个任务。

  1. 进入到您的AD租户实例面板,选择“APP registration”,注册应用。

  2. 选择您之前为华为云对接所创建的应用程序,如2-5创建的“SAML_Test”或下图的“华为云”。

  3. 单击“Create app role”,创建您需要的应用角色。

    SAML声明中传递的是Value,而不是Display name。建议Value值和您的华为云IAM用户组同名。

  4. 在您的AD租户实例面板,进入“Enterprise applications”,并选择您之前为华为云对接所创建的应用程序,如2-5创建的“SAML_Test”或“华为云”。

  5. 选择用户和用户组,并单击“增加用户/用户组”。

  6. 为对应的用户或用户组分配app role。要使用分配role的能力必须升级到Premium版本(支持免费试用)。

  7. Azure AD会自动在SAML声明中传递名为http://schemas.microsoft.com/ws/2008/06/identity/claims/role,值为app roles的value(多值方式),无需在用户属性和声明中额外定义。

    在华为云的身份提供商转换规则中可以使用该声明转换为对应的华为云IAM用户组名,参考下面在华为云IAM侧的规则配置,详细的配置规则请参考身份转换规则详细说明

2、如何在Azure AD上配置对接到多个华为云帐号的多个身份提供商

在Azure AD上配置对接到多个华为云帐号的多个身份提供商场景,只能是通过IDP发起模式实现,需要在Azure AD中配置额外的属性声明,并通过SAML声明传递到华为云侧。

  1. 参考上文“在Azure AD中配置华为云系统信息”步骤9,进入到Azure AD的用户属性及声明详细配置页面。

  2. 参考使用ADFS建立与华为云的联合认证第9部分 增加一个额外声明IAM_SAML_Attributes_identityProviders。

    • 如果您是单帐号场景,配置iam::{domain_id_1}:identityProvider:{idp_id_1}。

    • 如果您是多帐号场景,配置iam::{domain_id_1}:identityProvider:{idp_id_1};iam::{domain_id_1}:identityProvider:{idp_id_2};iam::{domain_id_2}:identityProvider:{idp_id_3},

    每段用英文分号作为分隔符即可。例如iam::1234567:identityProvider:idp123。

  3. IDP发起模式必须通过Azure AD的用户访问URL作为入口访问。在您的应用程序管理面板的以下位置可以找到Azure AD生成的用户访问URL。

  4. 拷贝User access URL至浏览器执行。输入您可以访问该应用程序的AD用户密码后,将自动跳转到华为云如下界面,根据您在声明配置中所配置的帐号信息,会呈现一个帐号选择列表,选择你想要访问的帐号对应身份提供商,即可进入华为云。

3、如何在Azure AD上配置使用IDP发起模式和华为云对接

参考FAQ-2配置即可在Azure AD上配置使用IDP发起模式和华为云对接。

若您只有单租户场景,华为云还提供一个简化配置方法,请参考使用ADFS建立与华为云的联合认证第9部分。仅需配置两个额外声明IAM_SAML_Attributes_domain_id和IAM_SAML_Attributes_idp_id,无需配置IAM_SAML_Attributes_identityProviders

4、华为云支持的其他声明

除了以上章节中体现的声明,您还可以配置以下声明(SAML Assertion中的属性名)。

SAML Assertion中的属性名

值格式

说明

IAM_SAML_Attributes_redirect_url

URL格式,无需编码

联邦登录成功后,自动跳转至该属性值所配置的URL。

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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