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

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

总览

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

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

前提条件

  • Okta已进行实名认证,并已配置企业用户信息。
  • 企业管理员在华为云上注册了可用的帐号。

流程说明

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

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

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

在Okta中配置华为云系统信息

  1. 企业管理员登录Okta官网:https://www.okta.com/

  2. 在Okta首页左侧导航栏选择“Applications > Applications ”,单击“Create App Integration”。

  3. 选择“SAML 2.0”,单击“Next”。

  4. 输入应用的基本信息,如应用名称“HuaweiCloud”,单击“Next”。

  5. 下载华为云系统的元数据文件,按照如下说明填写应用配置参数,并单击“Next”。

    • Single sign on URL填写华为云系统元数据文件中AssertionConsumerService>Location对应的值:https://auth.huaweicloud.com/authui/saml/SAMLAssertionConsumer。

    • Audience URI (SP Entity ID) 填写华为云系统元数据文件中entityID对应的值:https://auth.huaweicloud.com/。

  6. 配置用户属性语句。下面两条属性语句中:①表示会在断言中通过email字段传递user.email信息,②表示在断言中通过approle传递appuser.approle的信息,用于传递不同用户在Okta的不同approle,以便在华为云上支持用户组映射。

    注意:approle是自定义的属性语句,支持修改,详情请参考通过用户属性自动映射华为云用户组,appuser属性不允许修改。

  7. 按照您的实际情况填写反馈信息,并单击“Finish”,完成配置。

  8. 下载Okta系统元数据文件,该文件需要配置在华为云系统。

在IAM中配置身份提供商

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

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

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

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

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

  6. 单击“添加文件”,选择7中下载的Okta系统元数据文件。

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

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

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

    [{
     "remote": [{
               "type": "email"
     }],
     "local": [{
                "user": {
                        "name": "{0}"
                        }
               },
               {
                        "group": {
                                 "name": "admin"
                        }
               }]
    }]
  9. 单击“确定”,身份提供商配置完成。

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

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

通过用户组属性自动映射华为云用户组

Okta提供了属性(approle)的机制,可以给第三方集成应用程序分配自定义的approle,并支持在应用程序中管理用户和approle的关联关系。若目录用户关联了approle,Okta在传递SAML声明的时候,会自动带上approle所对应的值(以多值形式存在)。

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

  1. Okta首页左侧导航栏选择“Directory>Profile Editor”,单击您之前为华为云对接所创建的应用用户"HuaweiCloud User",添加属性。

  2. 编辑approle属性。SAML声明中传递的属性元素Attribute members Value,而不是Display name。建议Value值和您的华为云IAM用户组同名。

  3. Okta首页左侧导航栏选择“ Directory>Groups”,单击“Add Group”。

    截图.PNG

  4. 输入用户名“admin”,为华为云应用创建管理员用户组。

    截图2.PNG

  5. 在用户组列表页面单击用户组名称,进入用户组详情。单击“People”页签中的“Assign People”,将用户加入用户组中。

     

    截图3.PNG

    截图4.PNG

  6. 单击“Applications”页签中的“Assign Applications”,为用户组配置应用。

  7. 您为华为云对接所创建的应用程序“HuaweiCloud”后的“Assign”。

    截图7.PNG

  8. 选择“approle”为2中创建的“administrator”属性,单击“Save and Go Back”。

    截图8.PNG

  9. 单击“done”,完成Okta用户组属性配置。您也可以为用户直接配置属性,如需为用户配置属性,无需将用户加入用户组,参考6-8为用户配置应用属性。

  10. Okta会自动在SAML断言中传递email和approle两个属性,值分别为用户的email以及所在app roles的value(多值方式),无需在用户属性和声明中额外定义。

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

    截图10.PNG

以上是SP发起模式配置方法,如需支持IDP发起模式,参考 使用Azure AD建立与华为云的联邦认证 的FAQ_3进行配置。

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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