文档首页/ 统一身份认证服务 IAM/ 用户指南/ 自定义身份代理/ 使用委托方式配置自定义身份代理配置步骤
更新时间:2024-07-11 GMT+08:00

使用委托方式配置自定义身份代理配置步骤

如果您的企业IdP不支持SAML、OIDC协议,可以使用自定义身份代理,通过编写代码获得华为云登录链接,使企业用户通过企业IdP验证身份后,即可登录华为云。

自定义身份代理适用于不支持SAML、OIDC的企业IdP,如果您使用了支持SAML、OIDC的IdP(身份提供商),推荐您通过配置联邦身份认证实现用户使用企业管理系统账号单点登录华为云。

前提条件

  • 企业已有企业管理系统。
  • 企业管理员在华为云上注册了可用的账号(账号名以DomainA为例),并已在IAM中创建用户组(用户组名以GroupC为例)并授予Agent Operator权限,具体方法请参见:创建用户组并授权

操作步骤

  1. 在DomainA中创建IAM用户(用户名以UserB为例),并加入GroupC用户组中,具体方法请参见:用户组添加用户

    请确认该IAM用户支持编程访问华为云服务。如需修改IAM用户访问方式,请参考:查看或修改IAM用户信息

  2. 将UserB的访问密钥或用户名和密码(推荐使用访问密钥)配置到企业IdP的配置文件中,以便获取用户认证token和调用API。为了保障您的账号安全,密码和访问密钥建议加密存储。
  3. 在IAM控制台左侧导航栏选择“委托”,单击右上方的“ 创建委托”
  4. 在创建委托页面,设置委托参数。

    “委托名称”“testagency”为例,“委托类型”必须选择“普通账号”“委托的账号”填写“DomainA”“持续时间”根据具体情况选择,并单击“下一步”。

    图1 创建委托

  5. 选择权限的作用范围,勾选需要授予委托的权限,给委托授权。
  6. 在企业IdP创建用户组“testagency”(与4中的委托名称相同),将企业本地用户按需加入本地用户组,授予其自定义代理登录华为云时所需权限,具体方法请参见企业IdP帮助文档。
  7. 企业本地用户登录企业管理系统后,访问企业IdP的自定义代理,从委托列表(由安全管理员来查询租户的委托列表,根用户默认为安全管理员)中选择所需要使用的委托,具体方法请参见企业管理系统帮助文档。

    自定义代理的委托列表是企业IdP创建的用户组名称与华为云创建的委托名称的交集。

  8. 企业IdP自定义代理根据委托,携带IAM用户userB的token调用API(POST /v3.0/OS-CREDENTIAL/securitytokens),获取具有临时身份的securityToken,调用方法请参见:通过委托获取临时AK/SK和securitytoken

    通过委托获取securitytoken时,请求体中必须填写session_user.name参数。

  9. 企业IdP自定义代理携带获取到的临时AK/SK和securitytoken通过全局域名(iam.myhuaweicloud.com)调用API(POST /v3.0/OS-AUTH/securitytoken/logintokens)获取登录票据loginToken。登录票据位于Response Header中的X-Subject-LoginToken。获取方式请参见:获取自定义代理登录票据

    • 调用API(POST /v3.0/OS-AUTH/securitytoken/logintokens)获取登录票据loginToken时,需要使用全局域名:iam.myhuaweicloud.com
    • logintoken是系统颁发给自定义代理用户的登录票据,承载用户的身份、session等信息,默认有效期为10分钟。调用FederationProxyUrl登录云服务控制台时,需要使用logintoken进行认证。
    • 调用API(POST /v3.0/OS-AUTH/securitytoken/logintokens)时可以设置logintoken的有效时间,有效时间设置范围为10分钟~12小时。如果传入的值大于临时安全凭证securitytoken剩余的过期时间,则使用临时安全凭证securitytoken剩余的过期时间。

  10. 企业IdP自定义代理根据规范创建云服务登录地址FederationProxyUrl,作为Location返回给浏览器。FederationProxyUrl如下:

    https://auth.huaweicloud.com/authui/federation/login?idp_login_url={enterprise_system_loginURL}&service={console_service_region_url}&logintoken={logintoken}

    示例:

    https://auth.huaweicloud.com/authui/federation/login?idp_login_url=https%3A%2F%2Fexample.com&service=https%3a%2f%2fconsole.huaweicloud.com%2fapm%2f%3fregion%3dcn-north-4%23%2fapm%2fatps%2ftopology&logintoken=******

    表1 参数说明

    参数

    说明

    idp_login_url

    企业管理系统登录地址。

    service

    需要访问的华为云服务地址。

    logintoken

    自定义代理登录票据。

    为了浏览器正常识别参数内容,需要将以上三个参数都进行UrlEncode编码。

    您可以参考以下Demo示例创建云服务登录地址FederationProxyUrl:使用委托方式创建云服务登录地址

    该FederationProxyUrl包含从IAM获得的登录票据,票据用于对访问的用户进行身份验证。FederationProxyUrl需要经过UrlEncode编码。

  11. 华为云认证登录票据loginToken成功后,浏览器自动重定向到需要访问的华为云服务地址,即云服务代理登录地址中service设定的地址,企业用户成功访问华为云的控制台。

    loginToken认证失败,则重定向到idp_login_url设定的地址。