网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
企业路由器 ER
企业交换机 ESW
全球加速 GA
企业连接 EC
云原生应用网络 ANC
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
威胁检测服务 MTD
态势感知 SA
认证测试中心 CTC
边缘安全 EdgeSec
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
API网关 APIG
分布式缓存服务 DCS
多活高可用服务 MAS
事件网格 EG
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
配置审计 Config
应用身份管理服务 OneAccess
资源访问管理 RAM
组织 Organizations
资源编排服务 RFS
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
解决方案
高性能计算 HPC
SAP
混合云灾备
开天工业工作台 MIW
Haydn解决方案工厂
数字化诊断治理专家服务
云生态
云商店
合作伙伴中心
华为云开发者学堂
华为云慧通差旅
开发与运维
软件开发生产线 CodeArts
需求管理 CodeArts Req
流水线 CodeArts Pipeline
代码检查 CodeArts Check
编译构建 CodeArts Build
部署 CodeArts Deploy
测试计划 CodeArts TestPlan
制品仓库 CodeArts Artifact
移动应用测试 MobileAPPTest
CodeArts IDE Online
开源镜像站 Mirrors
性能测试 CodeArts PerfTest
应用管理与运维平台 ServiceStage
云应用引擎 CAE
开源治理服务 CodeArts Governance
华为云Astro轻应用
CodeArts IDE
Astro工作流 AstroFlow
代码托管 CodeArts Repo
漏洞管理服务 CodeArts Inspector
联接 CodeArtsLink
软件建模 CodeArts Modeling
Astro企业应用 AstroPro
CodeArts 盘古助手
华为云Astro大屏应用
计算
弹性云服务器 ECS
Flexus云服务
裸金属服务器 BMS
云手机服务器 CPH
专属主机 DeH
弹性伸缩 AS
镜像服务 IMS
函数工作流 FunctionGraph
云耀云服务器(旧版)
VR云渲游平台 CVR
Huawei Cloud EulerOS
云化数据中心 CloudDC
网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
企业路由器 ER
企业交换机 ESW
全球加速 GA
企业连接 EC
云原生应用网络 ANC
CDN与智能边缘
内容分发网络 CDN
智能边缘云 IEC
智能边缘平台 IEF
CloudPond云服务
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
威胁检测服务 MTD
态势感知 SA
认证测试中心 CTC
边缘安全 EdgeSec
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
可信智能计算服务 TICS
推荐系统 RES
云搜索服务 CSS
数据可视化 DLV
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
数据治理中心 DataArts Studio
湖仓构建 LakeFormation
智能数据洞察 DataArts Insight
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
API网关 APIG
分布式缓存服务 DCS
多活高可用服务 MAS
事件网格 EG
开天aPaaS
应用平台 AppStage
开天企业工作台 MSSE
开天集成工作台 MSSI
API中心 API Hub
云消息服务 KooMessage
交换数据空间 EDS
云地图服务 KooMap
云手机服务 KooPhone
组织成员账号 OrgID
云空间服务 KooDrive
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
配置审计 Config
应用身份管理服务 OneAccess
资源访问管理 RAM
组织 Organizations
资源编排服务 RFS
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
区块链
区块链服务 BCS
数字资产链 DAC
华为云区块链引擎服务 HBS
解决方案
高性能计算 HPC
SAP
混合云灾备
开天工业工作台 MIW
Haydn解决方案工厂
数字化诊断治理专家服务
价格
成本优化最佳实践
专属云商业逻辑
云生态
云商店
合作伙伴中心
华为云开发者学堂
华为云慧通差旅
其他
管理控制台
消息中心
产品价格详情
系统权限
客户关联华为云合作伙伴须知
公共问题
宽限期保留期
奖励推广计划
活动
云服务信任体系能力说明
开发与运维
软件开发生产线 CodeArts
需求管理 CodeArts Req
流水线 CodeArts Pipeline
代码检查 CodeArts Check
编译构建 CodeArts Build
部署 CodeArts Deploy
测试计划 CodeArts TestPlan
制品仓库 CodeArts Artifact
移动应用测试 MobileAPPTest
CodeArts IDE Online
开源镜像站 Mirrors
性能测试 CodeArts PerfTest
应用管理与运维平台 ServiceStage
云应用引擎 CAE
开源治理服务 CodeArts Governance
华为云Astro轻应用
CodeArts IDE
Astro工作流 AstroFlow
代码托管 CodeArts Repo
漏洞管理服务 CodeArts Inspector
联接 CodeArtsLink
软件建模 CodeArts Modeling
Astro企业应用 AstroPro
CodeArts 盘古助手
华为云Astro大屏应用
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
高性能弹性文件服务 SFS Turbo
弹性文件服务 SFS
存储容灾服务 SDRS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
云存储网关 CSG
专属分布式存储服务 DSS
数据工坊 DWR
地图数据 MapDS
键值存储服务 KVS
容器
云容器引擎 CCE
云容器实例 CCI
容器镜像服务 SWR
云原生服务中心 OSC
应用服务网格 ASM
华为云UCS
数据库
云数据库 RDS
数据复制服务 DRS
文档数据库服务 DDS
分布式数据库中间件 DDM
云数据库 GaussDB
云数据库 GeminiDB
数据管理服务 DAS
数据库和应用迁移 UGO
云数据库 TaurusDB
人工智能
AI开发平台ModelArts
华为HiLens
图引擎服务 GES
图像识别 Image
文字识别 OCR
自然语言处理 NLP
内容审核 Moderation
图像搜索 ImageSearch
医疗智能体 EIHealth
企业级AI应用开发专业套件 ModelArts Pro
人脸识别服务 FRS
对话机器人服务 CBS
语音交互服务 SIS
人证核身服务 IVS
视频智能分析服务 VIAS
城市智能体
自动驾驶云服务 Octopus
盘古大模型 PanguLargeModels
IoT物联网
设备接入 IoTDA
全球SIM联接 GSL
IoT数据分析 IoTA
路网数字化服务 DRIS
IoT边缘 IoTEdge
设备发放 IoTDP
企业应用
域名注册服务 Domains
云解析服务 DNS
企业门户 EWP
ICP备案
商标注册
华为云WeLink
华为云会议 Meeting
隐私保护通话 PrivateNumber
语音通话 VoiceCall
消息&短信 MSGSMS
云管理网络
SD-WAN 云服务
边缘数据中心管理 EDCM
云桌面 Workspace
应用与数据集成平台 ROMA Connect
ROMA资产中心 ROMA Exchange
API全生命周期管理 ROMA API
政企自服务管理 ESM
视频
实时音视频 SparkRTC
视频直播 Live
视频点播 VOD
媒体处理 MPC
视频接入服务 VIS
数字内容生产线 MetaStudio
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
迁移中心 MGC
专属云
专属计算集群 DCC
开发者工具
SDK开发指南
API签名指南
DevStar
华为云命令行工具服务 KooCLI
Huawei Cloud Toolkit
CodeArts API
云化转型
云架构中心
云采用框架
用户服务
账号中心
费用中心
成本中心
资源中心
企业管理
工单管理
客户运营能力
国际站常见问题
支持计划
专业服务
合作伙伴支持计划
我的凭证
华为云公共事业服务云平台
工业软件
工业数字模型驱动引擎
硬件开发工具链平台云服务
工业数据转换引擎云服务

认证鉴权

更新时间:2024-07-18 GMT+08:00
分享

AstroZero提供的所有接口都需要通过认证之后才可以访问。认证方式主要分以下两类:

  • 在请求消息头上,设置“access-token”
  • 在请求消息头上,设置“Authorization”

两类方式都是通过不同的认证接口,来获取到Token。Token在计算机系统中代表令牌(临时)的意思,拥有Token代表拥有某种权限。Token认证是在调用API的时候将Token加到请求消息头,从而通过身份认证,获得操作API的权限。

平台用户分以下几类,不同类别的用户访问接口的权限会有所不同:

  • 平台用户 (User):一般对应运行环境、开发环境用户,用于管理开发应用。

    使用的认证机制为:“账号密码登录认证”、“单点登录认证”和“OAuth 2.0鉴权登录认证”。

  • 业务用户(Portal User):业务用户是访问AstroZero提供的业务服务的用户。

    使用的认证机制为:“账号密码登录认证”、“单点登录认证”和“OAuth 2.0鉴权登录认证”。

  • 匿名用户 (Guest):对于该类用户,平台接口都需要进行校验,未登录前使用Guest用户身份来访问平台接口,一般会赋予最小的权限。

    使用的认证机制为:“OAuth 2.0鉴权登录认证”。

获取Token的认证接口,如表1所示。

表1 认证接口说明

接口

说明

生成Token的用户

是否可以直接访问接口

账号密码登录

通过账号密码直接访问登录接口,成功校验则返回“access-token”,写到Cookies上。

平台用户、业务用户

单点登录(“CAS”协议)

支持CAS单点登录方式,通过CAS server登录后携带ticket重定向到AstroZero。 AstroZero后台拿ticket到CAS Server校验ticket合法性,得到ticket对应的账号(可选)、用户信息,然后校验该用户是否存在,在指定了账号的情况下,如果该用户不存在,则创建对应用户; 没有指定租户的情况下该用户不存在则直接报错,并返回到CAS Server。

成功验证用户身份后,则生成Session写到cookie上, 重定向到指定页面。

平台用户、业务用户

使用OAuth 2.0的客户端(即client_credentials)鉴权模式

根据鉴权ID和鉴权密钥,调用获取用户Token的接口,来获取access_token。匿名用户一般通过该方式来获取Token。

具体操作,请参见•通过“客户端模式”获取的access-toke...

平台用户、匿名用户

使用OAuth 2.0的授权码(即authorization_code)鉴权模式

根据鉴权ID、鉴权密钥、授权码调用获取用户Token接口来获取access_token。后续需要通过access_token获取授权用户信息。

具体操作,请参见•通过“授权码模式”获取的access-toke...

平台用户、匿名用户

供华为WeLink单点登录

AstroZero开发的轻应用或者We码支持WeLink登录,在WeLink打开轻应用或者We码可以实现免登访问。

业务用户

业务用户登录(服务编排中PORTALUSERLOGIN公式)

指定业务用户名,使用服务编排的“PORTALUSERLOGIN”公式来登录。

业务用户

否(只能在服务编排中访问接口)

业务用户通过RefreshToken获取新的Token

可以通过配置内置系统参数“bingo.service.refreshtoken.enable”为“是”的方式来选择开启RefreshToken特性。开启后,业务用户通过服务编排的“PORTALUSERLOGIN”公式登录AstroZero时,会在Cookies中多返回一个“refresh-token”参数。可再通过发起请求“POST https://AstroZero域名/baas/auth/v1.0/refreshtoken”来获取一个新的Token(调该接口时需要在请求消息头上设置参数“Content-Type”值为“application/json”,请求消息体中设置参数“grant_type”值为“refresh_token”,“refresh_token”值为Cookies中返回的“refresh-token”参数值)。原有的Token不管有没有失效,都会被置成失效状态。一般情况下,“refresh-token”的有效期会比较长,在用户的权限配置中可通过配置“刷新凭证时长”来控制其有效期。

具体操作,请参见业务用户通过RefreshToken获取新的Token

业务用户

JWT(JSON Web Tokens)鉴权方式

根据其他方式生成的“access-token”,可以通过jwt接口换成一个JWT形式的token。一般用于AstroZero内部服务之前的相互访问。 内部服务会在etcd上配置一个“SecretKey”,内部网元读取“SecretKey”来解JWT得到用户信息。

平台用户

供CAS Server使用的账号密码登录方式

AstroZero自身的CAS Server没有独立的持久化,使用的Authcenter模块的用户体系,由Authcenter提供一个接口来做用户鉴权。

sequenceDiagram
	participant CAS Server
	participant Authcenter
	
	CAS Server ->> Authcenter: 通过账号密码访问调用 Authcenter 认证接口
	Authcenter -->> CAS Server: 返回认证结果,成功则包含用户账号信息
	CAS Server ->> CAS Server: 生成 TCG
	CAS Server ->> Authcenter: 携带ticket 重定向到 Authcenter

平台用户

OAuth鉴权

AstroZero平台提供了两种授权模式进行OAuth鉴权,分别是“客户端模式”和“授权码模式”,两种授权模式适用的鉴权范围有所不同。
  • 通过“客户端模式”获取的access-token,可用于调用API接口时进行鉴权,使用时在请求消息头上设置“access-token”。
    1. 参考如何登录经典版环境配置中操作,登录经典版环境配置。
    2. 在左侧导航栏中,选择“系统管理 > OAuth”菜单,新建OAuth管理。
      图1 新建客户端模式OAuth管理
      注意:
      • 第三方通过OAuth认证接入系统后,将以选择的用户身份操作数据,所以需要确保选择的用户具有调用API的相关权限。
      • 选择的用户的权限不能为匿名用户权限“Anonymous_User_Profile”,因为Guest用户没有访问API的权限,因此无法配置OAuth。
    3. 在OAuth管理列表中,单击该鉴权所在行的,下载密钥文件。
      表2 密钥文件参数

      参数

      参数说明

      username

      当“授权类型”配置为“客户端模式”时,密钥文件会包含该参数,为创建OAuth时选择的用户名。

      client_id

      鉴权的客户端ID。

      client_secret

      鉴权密钥。

    4. 根据鉴权客户端ID和鉴权密钥,通过Post请求调用接口“https://AstroZero域名/baas/auth/v1.0/oauth2/token”,获取access_token。
      表3 请求参数说明

      参数名

      类型

      必选(M)/可选(O)

      参数位置

      参数含义

      grant_type

      String

      M

      Body

      授权模式,OAuth2.0中的grant_type字段的取值。

      client_credentials(即客户端模式)

      client_id

      String

      M

      Body

      鉴权的客户端ID,可在OAuth查看。

      从上一步骤获取。

      client_secret

      String

      M

      Body

      鉴权密钥,可在OAuth查看。

      说明:

      URL查询参数中,请勿配置client_secret,建议将其配置到请求体中。

      从上一步骤获取。

      redirect_url

      String

      O

      Body

      重定向URL。

      http://www.example.com

      locale

      String

      O

      Body

      语言。

      en_US

      表4 返回参数说明

      参数

      参数说明

      access_token

      认证后可信任的Token凭证。

      expires_in

      当前access_token的有效期,单位:秒。

      token_type

      access_token类型。

      图2 接口调用结果
      说明:

      当接口调用出错时,会返回错误码“400”及错误信息说明,错误响应的Body体格式如下所示。

      {
          "error": "unauthorized_client",
          "error_description": "The client is not authorized to request a token using this method."
      }

      其中,error表示错误提示,error_description表示错误描述信息。

    5. 将Headers中的access-token参数,设置为上一步得到的access_token,成功调用自定义的API接口。
      图3 成功调通API接口
      说明:

      返回消息体中包含三种参数,“resCode”和“resMsg”参数代表此次请求的状态码及请求信息,您可以通过自定义错误码信息来设置请求错误时的返回信息,具体参考错误码。“result”参数为调用的接口返回的数据,与查看API信息时接口“返回消息”内容一致。

  • 通过“授权码模式”获取的access-token,可用于获取用户信息时进行鉴权,使用时在请求消息头上设置“Authorization”。
    1. 进入AstroZero服务控制台
    2. 在主页中,单击“进入首页”,进入AstroZero应用开发页面。
    3. 在页面左上方单击,选择环境管理 > 环境配置,进入环境配置。
    4. 在左侧导航栏中,选择“集成连接 > OAuth”菜单,新建OAuth管理。
      图4 新建授权码模式OAuth管理
      说明:

      重定向地址将作为第三方系统同意授权后的跳转页面,并在页面地址上携带授权码信息。

    5. 在OAuth管理列表中,单击该鉴权所在行的,下载密钥文件。
      表5 密钥文件参数

      参数

      参数说明

      redirect_uri

      当“授权类型”配置为“授权码模式”时,密钥文件会包含该参数,为上一步设置的重定向地址。

      client_id

      鉴权的客户端ID。

      client_secret

      鉴权密钥。

    6. 根据鉴权ID和重定向地址,在浏览器上的访问接口“https://AstroZero域名/baas/auth/v1.0/oauth2/authorize”,获取授权码信息。
      表6 请求参数说明

      参数名

      类型

      必选(M)/可选(O)

      参数位置

      参数含义

      response_type

      String

      M

      Params

      授权接口返回类型,即返回授权码

      code

      client_id

      String

      M

      Params

      客户端鉴权ID,可在OAuth查看。

      从上一步骤获取。

      redirect_url

      String

      M

      Params

      重定向地址。

      从上一步骤获取。

      图5 页面效果
    7. 单击“授权”按钮,跳转到重定向地址,并携带授权码信息。
      图6 授权码信息
    8. 根据授权码code,根据鉴权ID、鉴权密钥通过Post请求调用接口“https://AstroZero域名/baas/auth/v1.0/oauth2/token”,获取access_token。
      表7 请求参数说明

      参数名

      类型

      必选(M)/可选(O)

      参数位置

      参数含义

      grant_type

      String

      M

      Body

      授权模式,OAuth2.0中的grant_type字段的取值。

      authorization_code(即授权码模式)

      client_id

      String

      M

      Body

      客户端鉴权ID,可在OAuth查看。

      3中获取。

      client_secret

      String

      M

      Body

      客户端鉴权密钥,可在OAuth查看。

      3中获取。

      redirect_url

      String

      M

      Body

      重定向地址。

      3中获取。

      code

      String

      M

      Body

      授权码。

      7中获取。

      locale

      String

      O

      Body

      语言。

      en_US

      表8 返回参数说明

      参数

      参数说明

      access_token

      认证后可信任的Token凭证。

      expires_in

      当前access_token的有效期。

      refresh_token

      用于刷新access_token。

      token_type

      access_token类型。

      图7 接口调用结果
      注意:

      使用授权码获取access-token后即失效,重新获取access-token需要重新生成授权码。

    9. 将得到的token_type与access_token进行拼接,以{token_type} {access_token}的形式设置为Headers中的Authorization参数,通过Get请求调用接口“https://AstroZero域名/u-route/baas/oauth/v1.0/userinfo”,获取用户信息。
      图8 获取用户信息

业务用户通过RefreshToken获取新的Token

  1. 开启RefreshToken特性。

    1. 进入AstroZero服务控制台
    2. 在主页中,单击“进入首页”,进入AstroZero应用开发页面。
    3. 在页面左上方单击,选择环境管理 > 环境配置,进入环境配置。
    4. 在左侧导航栏中,选择“系统设置 > 系统参数”。
    5. 在“内置系统参数”页签,查找“bingo.service.refreshtoken.enable”,单击搜索结果中的该参数名,在参数详情页单击“值”后的编辑按钮,设置参数值为“是”,单击“保存”。
      图9 查找参数
      图10 修改值为是

  2. 业务用户(例如“test_cs”)通过服务编排的“PORTALUSERLOGIN”公式登录AstroZero。

    1. 在“我的应用”中,单击某个应用,进入应用开发平台。
    2. 将鼠标放在左侧某个文件夹,单击界面上出现的“+”,在弹出菜单中选择“服务编排”。
    3. 设置标签为“testPortalUserLogin”,单击“名称”的输入框,系统会自动填充。然后单击“添加”。
    4. 在服务编排编辑器页面右侧,选择,在全局上下文页面单击“公式”后的加号。
    5. 在公式页面设置“名称”为“portal”,“数据类型”设置为“文本”,表达式为“PORTALUSERLOGIN("test_cs")”,单击“保存”,创建公式变量“portal”,表达式中的“test_cs”为要登录系统的业务用户名。
      图11 新建公式变量
    6. 在服务编排编辑器页面右侧,选择
    7. 在全局上下文页面,单击“变量”后的加号,默认创建名为“variable0”的文本类型变量。
    8. 在服务编排编辑器页面右侧,选择,按照下图从全局上下文页面中拖拽参数到出参区域,设置服务编排的出参。
      图12 设置服务编排的出参
    9. 在左侧拖拽“逻辑”下“赋值”图标至画布中,按照下图设置赋值图元。
      图13 设置赋值图元
    10. 连接所有元素。

    11. 在页面上方,单击,保存服务编排。
    12. 保存成功后,单击,不用设置输入参数直接单击“运行”,运行服务编排。

      输出如下,表示业务用户已登录AstroZero。

      {
        "interviewId": "002N000000jeTG4DKxSS",
        "outputs": {
          "variable0": "XXX"
        }
      }

      其中,“variable0”取值为业务用户的access-token值。

    13. 在输出的页面,按“F12”或者“Ctrl + Shift + I”,可开启调试工具。
    14. 在Cookies中,获取“refresh-token”值。

  3. 使用Postman发送请求,获取新Token。

    1. 在本地PC上下载并安装Postman工具,该工具仅用于测试使用。
    2. 使用Postman进行POST请求,URL配置为“https://AstroZero域名/baas/auth/v1.0/refreshtoken”,在请求消息头上设置参数“Content-Type”值为“application/json”,请求消息体中设置参数“grant_type”值为“refresh_token”,“refresh_token”值为2.n获取的“refresh-token”参数值。输出的result值即为新的Token,原有的Token不管有没有失效,都会被置成失效状态。
      图14 Postman发送请求
      表9 请求消息头

      消息头名称

      描述

      是否必选

      Content-Type

      HTTP协议中设定的一个参数,用于标识返回的内容用什么格式去解析,此处必须配置为“application/json”。表示浏览器将返回内容解析为json对象。

      表10 消息体说明

      参数名

      描述

      是否必选

      grant_type

      授权类型,配置为“refresh_token”。

      refresh_token

      配置为2.n获取的“refresh-token”参数值。

提示

您即将访问非华为云网站,请注意账号财产安全

文档反馈

文档反馈

意见反馈

0/500

标记内容

同时提交标记内容