文档首页/ 合作伙伴中心/ API参考/ 附录/ 如何将合作伙伴Token置换为客户Token
更新时间:2023-08-04 GMT+08:00

如何将合作伙伴Token置换为客户Token

操作步骤

  1. 调用IAM接口“获取用户Token”获取合作伙伴华为云账户Token。

    IAM接口的Endpoint请参考“地区和终端节点”页面列举的IAM Endpoint。如果请求体中scope字段中为domain,请使用区域为“ALL”的Endpoint。如果scope字段中为project,既可以使用区域为“ALL”的Endpoint,也可以使用相应project所在区域对应的Endpoint。

    此步操作不需要传入任何Token,请求Header中仅需增加“Content-Type”,取值为“application/json”。示例如图1所示,图中红框Headers中的“x-subject-token”字段就是合作伙伴Token。

    请求体示例:

    {
        "auth": {
            "identity": {
                "methods": [
                    "password"
                ],
                "password": {
                    "user": {
                        "name": "合作伙伴的华为云账户",
                        "domain": {
                            "name": "合作伙伴的华为云账户"
                        },
                        "password": "XXXXX"
                    }
                }
            },
            "scope": {
                "domain": {
                    "name": "合作伙伴的华为云账户"
                }
            }
        }
    }
    图1 获取合作伙伴华为云账户Token
  2. 调用IAM接口“通过assume_role方式获取用户token”获取合作伙伴客户的华为云账户Token。

    请求Header中需要增加Content-Type和X-Auth-Token,其中Content-Type取值为“application/json”,X-Auth-Token取值为1中获取的BP Token。示例如图2所示,图中红框Headers中的“x-subject-token”字段就是合作伙伴客户的华为云账户Token。合作伙伴使用客户的华为云账户Token可以去操作客户华为云账户的资源。

    请求体示例:

    {
        "auth": {
            "identity": {
                "methods": [
                    "assume_role"
                ],
                "assume_role": {
                    "domain_name": "合作伙伴客户的华为云账户",
                    "agency_name": "创建委托关系时的委托名称(合作伙伴平台标识xaccountType)"
                }
            },
            "scope": {
                "project": {
                    "name": "合作伙伴客户资源所在的project name"
                }
            }
        }
    }
    图2 获取合作伙伴客户的华为云账户Token

    响应体解读:

    • readonly角色就是Tenant Guest权限,te_admin是Tenant Administrator权限,如图3所示。
      图3 权限解读
    • 图4红框中是返回的project id。
      图4 项目ID