更新时间:2024-04-26 GMT+08:00
分享

oAuth2.0协议API

OAUTH2.0协议下应用检验用户信息包括如下:

{ 
   "userName":"zhangsan", 
    "name":"张三",  
    "tenant":"34a59a26e6a24071a9cc7a0526440171", 
    "organizationCode":”10000”, 
    "role":"user"}

参数名

类型

参数说明

描述

name

String

用户姓名、昵称

/

userName

String

用户账号

登录账号,与同步接口中的username是一致的

tenant

String

企业的domainId

与同步接口中的domainId

role

String

用户角色

user --代表用户,admin-- 代表企业管理员

organizationCode

String

组织机构编码

与同步接口中的orgCode是一致的

用户账号测试方法:

1、打开测试登录地址,将获取相关1.6.1 应用凭证申请的测试账号

2、填写申请的测试账号进行单点登录测试

例:https://macroverse.huaweicloud.com/unified-login/#/portal-login?ind=UNOP&appId={应用id}

应用id:申请应用凭证后生成的应用id

认证登录获取授权码

GET /api/v1/oauth2/authorize

Query参数

参数

是否必选

参数类型

描述

client_id

String

应用标识,注册应用后,分配的ClientId

redirect_uri

String

回调地址,注册应用时填写的回调地址,表示应用接收OneAccess授权码的地址。

response_type

String

授权类型,固定值:code

scope

String

授权范围 ,默认值:get_user_info

state

String

应用的状态值。可用于防止CSRF攻击,成功授权后回调应用时会原样带回,应用用它校验认证请求与回调请求的对应关系。可以包含字母和数字。

请求参数

响应参数

状态码: 302

响应Header参数

参数

参数类型

描述

Location

String

认证登录成功,重定向地址。例:https://example.com?code=z2D...&state=test

请求示例

GET https://{domain_name}/api/v1/oauth2/authorize?response_type=code&client_id=NzZeWuiJa91dPSRdZQChMazIh13AW...&redirect_uri=https://example.com&scope=get_user_info&state=test

响应示例

状态码

状态码

描述

302

用户未登录,跳转用户登录页面; 用户已登录,携带授权码重定向到redirect_uri地址。例:https://example.com?code=z2D...&state=test

获取AccessToken

POST /api/v1/oauth2/token

请求参数

FormUrlEncoded参数

参数

是否必选

参数类型

描述

client_id

String

应用标识,注册应用后,分配的ClientId

client_secret

String

应用密钥,注册应用后,分配的ClientSecret

code

String

授权码,认证登录后回调获取的授权码。

grant_type

String

授权类型,固定值:authorization_code

redirect_uri

String

回调地址,注册应用时填写的回调地址,需跟注册时保持一致。

响应参数

状态码: 200

响应Body参数

参数

参数类型

描述

access_token

String

授权服务器返回给第三方应用的访问令牌。

token_type

String

访问令牌类型。固定值:Bearer

expires_in

Long

访问令牌的有效期,以秒为单位。

scope

String

授权范围。

refresh_token

String

刷新令牌。默认不生成refresh_token,如果需要,在应用的"认证配置”中设置"Refresh Token有效期”后生成返回。

refresh_token有效期设置应比access_token长。

状态码: 400

响应Body参数

参数

参数类型

描述

error

String

错误类型。

error_description

String

错误描述。

请求示例

POST https://{domain_name}/api/v1/oauth2/token 
  
Content-Type: application/x-www-form-urlencoded
  
code=z2D...& 
client_id=NzZeWuiJa91dPSRdZQChMazIh13AW...&
client_secret=******...& 
redirect_uri=https://example.com& 
grant_type=authorization_code

响应示例

状态码: 200

请求成功。

示例 1

·        { 
·          "access_token" : "******...", 
·          "token_type" : "Bearer", 
·          "expires_in" : "7200",
·          "scope" : "get_user_info" 
}

示例 2

·        { 
·          "access_token" : "******...", 
·          "token_type" : "Bearer", 
·          "expires_in" : "7200", 
·          "scope" : "get_user_info", 
·          "refresh_token" : "******..." 
}

状态码: 400

请求错误。

{ 
  "error" : "invalid_grant", 
  "error_description" : "Invalid authorization code"
}

状态码

状态码

描述

200

请求成功。

400

请求错误。

获取用户信息

GET /api/v1/oauth2/userinfo

请求参数

请求Header参数

参数

是否必选

参数类型

描述

Accept

String

接收响应类型,值:application/json

Authorization

String

认证凭据,值:Bearer {access_token}

响应参数

状态码: 200

响应Body参数

参数

参数类型

描述

id

String

用户ID

userName

String

用户名

name

String

姓名

email

String

邮箱地址

mobile

String

手机号

role

String

角色

organizationName

String

组织名称

accName

String

登录名称

userId

String

用户id

organizationCode

String

组织编码

loginName

String

登录名称

projectName

String

租户名称

tenant

String

租户id

状态码: 401

响应Body参数

参数

参数类型

描述

error

String

错误类型。

error_description

String

错误描述。

请求示例

GET https://{domain_name}/api/v1/oauth2/userinfo 
  
Authorization: Bearer b7e1fda8-33ce-432c-9b97-7ff035fac... 
Accept: application/json

响应示例

状态码: 200

请求成功。

{ 
  "id" : "20201029190841785-CB37-8BD36B...", 
  "name" : "test", 
  "userName" : "test", 
  "mobile" : "12345678901", 
  "email" : "123@example.com" 
}

状态码: 401

认证失败。

{ 
  "error" : "unauthorized", 
  "error_description" : "Full authentication is required to access this resource" 
}

状态码

状态码

描述

200

请求成功。

401

认证失败。

相关文档