云社区 博客 博客详情
云社区 博客 博客详情

【华为云Stack ManageOne运营侧北向对接指导】 如何获取有效的token

混合云北向砖家 发表于 2020-02-28 11:27:28 02-28 11:27
混合云北向砖家 发表于 2020-02-28 11:27:28 2020/02/28
0
0

【摘要】 第三方系统对接华为云Stack时,需要对接实现的功能不同,需要使用的账号角色也不同,获取token时,也需要指定权限范围,才能正确的调用接口。这里给出几种常见权限的token,方便开发者对号入座,使用正确的token调用接口。

背景介绍

第三方系统对接华为云Stack时,需要对接实现的功能不同,需要使用的账号角色也不同,获取token时,也需要指定权限范围,才能正确的调用接口。这里给出几种常见权限的token,方便开发者对号入座,使用正确的token调用接口。

用户角色介绍

首先,我们介绍一下ManageOne运营面的几类用户角色,ManageOne运营面默认提供运营管理员、VDC管理员、VDC业务员、VDC只读管理员四类角色,同时还支持自定义角色,不同的角色拥有的权限不同,如下表所示:

 

角色

权限

权限解读

运营管理员

具有运营管理类的所有权限。

具备资源池接入、租户管理、产品管理、审批流程管理等权限,不具备申请使用资源的权限

VDC管理员

具有所属VDC及下级VDC的管理权限,以及对所有资源具有管理权限。

具备管理VDC内部project、用户、产品、审批流程以及子级VDC的权限,同时具备申请、使用资源的权限

VDC业务员

VDC业务员在其关联的项目内,对所有资源具有管理权限。

仅具备申请、使用资源的权限,不具备管理用户、project的权限

VDC只读管理员

VDC只读管理员对本VDC及其下级VDC中资源、用户、项目、自运维等具有查看权限。

对VDC、project、用户、资源、产品等具备查看权限,无修改、删除、创建权限

自定义角色

在自定义时为该角色赋予相应的操作权限。

自定义角色权限集为VDC管理员权限集的子集

权限各异的token

这里主要给出两种权限的token的获取方法,如下表所示:

token类别

权限范围

适用的对接场景

具有云服务管理员权限的token

具备一级VDC、资源池管理权限和云服务管理权限,支持创建规格,不能申请云资源

第三方系统对接华为云Stack时,需要自定义规格时使用该token

具有VDC管理员权限的token(常见场景)

内部project、用户、产品、审批流程以及子级VDC的权限,具备资源申请、使用权限,不具备创建规格权限

第三方系统对接华为云Stack时,需要管理project,用户,并在project中申请、使用资源时使用

3.1 具有云服务管理员权限的token

适用场景:第三方云管对接华为云Stack时,需要支持在第三方云管上创建规格,此时需要获取管理员权限的token;该token也可用于创建一级VDC,一级VDC管理员

调用准备:

1、获得运营管理员账号密码,如:bss_admin/Huawei@123

2、正式调用接口前,您需要获取对应的IP、域名,请参考:https://bbs.huaweicloud.com/forum/thread-41849-1-1.html

调用步骤:

1、获得scope权限范围为domain的运营管理员token,运营管理员的domain为固定值,mo_bss_admin,示例如下:

请求URL:https://{运营侧北向接口对外域名}/v3/auth/tokens

请求方法:POST

请求头:

Accept:application/json
Content-Type:application/json;charset=UTF-8

请求体:

{
        "auth": {
               "identity": {
                       "methods": ["password"],
                       "password": {
                               "user": {
                                       "domain": {
                                      "name": "mo_bss_admin" 
                                      },
                                       "name": "bss_admin",
                                       "password": "Huawei@123"
                               }
                       }
               },
               "scope":
                  {
                       "domain": 
                       {
                           "name": "mo_bss_admin"
                       }
               }
        }
}

返回的token在响应头中,示例如下:

HTTP/1.1 201 Created
Date: Wed, 12 Feb 2020 07:14:47 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
X-Subject-Token: MIIECwYxxxxxxxxxxxxxxxxxxSQ3G2RAj89N+t9GECHGnnGUgkKj7vMesUZ2jEW6EiVYA==
X-IAM-Trace-Id: df659e8ff4feecf1adfffe72f7335d40
ETag: W/"259-Qgmz1aPq7XYjfweWaVCVmseNMls"
X-Request-Id: df659e8ff4feecf1adfffe72f7335d40
Server: api-gateway

X-Subject-Token的值即为我们所需要的token

2、使用上一步中获取的token,查询运营管理员管理的默认Project,示例如下:

请求URL:https://{运营侧北向接口对外域名}/v3/auth/projects

请求方法:GET

请求头:

Accept:application/json
Content-Type:application/json;charset=UTF-8
X-Auth-Token:MIIECwYxxxxxxxxxxxxxxxxxxSQ3G2RAj89N+t9GECHGnnGUgkKj7vMesUZ2jEW6EiVYA==

请求体:无

响应体:

{
    "projects": [
        {
            "id": "a2a6e4500b614249afdc0d463971de91",
            "name": "STD_test-region-1_mo_bss_project",
            "domain_id": "c386760daaad424ca00ef0044d14eca5",
            "description": "",
            "enabled": true,
            "parent_id": "c386760daaad424ca00ef0044d14eca5",
            "is_domain": false,
            "links": {
                "self": "None/v3/projects/a2a6e4500b614249afdc0d463971de91"
            }
        }
    ],
    "links": {
        "next": null,
        "self": "None/v3/auth/projects",
        "previous": null
    }
}

这样,我们就拿到了运营管理员的project,STD_test-region-1_mo_bss_project

3、使用运营管理员账号密码,domain name和project name,重新获得token,示例如下:

1、获得scope权限范围为domain的运营管理员token,运营管理员的domain为固定值,mo_bss_admin,示例如下:

请求URL:https://{运营侧北向接口对外域名}/v3/auth/tokens

请求方法:POST

请求头:

Accept:application/json
Content-Type:application/json;charset=UTF-8

请求体(请注意scope部分的变化):

{
        "auth": {
               "identity": {
                       "methods": ["password"],
                       "password": {
                               "user": {
                                       "domain": {
                                      "name": "mo_bss_admin" 
                                      },
                                       "name": "bss_admin",
                                       "password": "Huawei@123"
                               }
                       }
               },
               "scope":
                  {
                       "project":
                       {
                               "domain": 
                               {
                                       "name": "mo_bss_admin"
                               },
                       "name":"STD_test-region-1_mo_bss_project"
                       }
               }
        }
}

返回的token在响应头中,示例如下:

HTTP/1.1 201 Created
Date: Wed, 12 Feb 2020 07:14:47 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
X-Subject-Token: MIASQCwYxxxxxxxxxxxxxxxxxxSQ3G2RAj89N+t9GECHGnnGUgkKj7vMesUZ2jEW6XCVSDASA
X-IAM-Trace-Id: df659e8ff4feecf1adfffe72f7335d40
ETag: W/"259-Qgmz1aPq7XYjfweWaVCVmseNMls"
X-Request-Id: df659e8ff4feecf1adfffe72f7335d40
Server: api-gateway

此处获得的token即可用于调用云服务接口创建规格(【POST】/v2.1/{project_id}/flavors,project_id即为第2步中查询到的project的Id),注意,创建规格时,需要指定规格的可见范围为公用,否则其他租户无法使用该规格,即设置:"os-flavor-access:is_public": true

3.2 具有VDC管理员权限的token

适用场景:第三方云管对接华为云Stack时,需要

调用准备:

1、正式调用接口前,您需要获取对应的IP、域名,请参考:https://bbs.huaweicloud.com/forum/thread-41849-1-1.html

2、获得VDC管理员账号密码,如:xssvdc/Huawei@123

3获取到账号后,还需要获得该租户管理员所属租户的名称,以及该租户下一个projectId或者名称,方法如下:

·        使用租户管理员账号登录ManageOne运营侧(ManageOne运营侧的访问地址请联系现场华为工程师获取)

·        点击右上角的用户图标,切换到个人设置页面,如下:

截图.PNG

可以看到,租户名称为Fin_CMP,我们选择的projectFin_CMP_prj,下面我们来获取token

调用示例:

请求URL:https://{运营侧北向接口对外域名}/v3/auth/tokens

请求方法:POST

请求头:

Accept:application/json
Content-Type:application/json;charset=UTF-8

请求体:

{
        "auth": {
               "identity": {
                       "methods": ["password"],
                       "password": {
                               "user": {
                                       "domain": {
                                      "name": "Fin_CMP" 
                                      },
                                       "name": "xssvdc",
                                       "password": "Huawei@123"
                               }
                       }
               },
               "scope":
                  {
                       "project":
                       {
                               "domain": 
                               {
                                       "name": "Fin_CMP"
                               },
                       "name":"Fin_CMP_prj"
                       }
               }
        }
}

返回的token在响应头中,示例如下:

HTTP/1.1 201 Created
Date: Wed, 12 Feb 2020 07:14:47 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
X-Subject-Token: MIAIIIQSDSwYxxxxxxxxxxxxxxxxxxSQ3G2RAj89N+t9GECHGnnGUgkKj7vMesU3FGESDVSDMASWQ
X-IAM-Trace-Id: df659e8ff4feecf1adfffe72f7335d40
ETag: W/"259-Qgmz1aPq7XYjfweWaVCVmseNMls"
X-Request-Id: df659e8ff4feecf1adfffe72f7335d40
Server: api-gateway

这里我们就获得了VDC管理员在指定domainproject内的权限,可以用这个token去创建子级VDCproject、用户,也可以在指定的project内创建、操作资源。

说明:

如果获取token时,仅指定了domain,这个token可以用于创建子级VDCproject、用户,但不能创建、操作具体资源,因为所有的资源都分配在指定的project下。

例如下面的请求体示例,获取的token就不能用于创建、操作资源:

{
	"auth": {
		"identity": {
			"methods": [
				"password"
			],
			"password": {
				"user": {
					"domain": {
						"name": "Fin_CMP"
					},
					"name": "xssvdc",
					"password": "Huawei@123"
				}
			}
		},
		"scope": {
			"domain": {
				"name": "Fin_CMP"
			}
		}
	}
}

 



登录后可下载附件,请登录或者注册

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

评论 (0)


0/1000
评论

登录后可评论,请 登录注册

评论

您还没有写博客的权限!

温馨提示

您确认删除评论吗?

确定
取消
温馨提示

您确认删除评论吗?

删除操作无法恢复,请谨慎操作。

确定
取消
温馨提示

您确认删除博客吗?

确定
取消

确认删除

您确认删除博客吗?

确认删除

您确认删除评论吗?

温馨提示

登录超时或用户已下线,请重新登录!!!

确定
取消