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是一致的 |
认证登录获取授权码
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 |
姓名 |
|
String |
邮箱地址 |
mobile |
String |
手机号 |
role |
String |
角色 |
organizationName |
String |
组织名称 |
accName |
String |
登录名称 |
userId |
String |
用户id |
organizationCode |
String |
组织编码 |
loginName |
String |
登录名称 |
projectName |
String |
租户名称 |
tenant |
String |
租户id |
状态码: 401
表3 响应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 |
认证失败。 |