OAuth2.0 密码凭据模式(Password Credentials)接入

资源所有者的密码凭据(比如,用户名和密码)可以直接作为授权许可来获取访问令牌。这个凭据只应该用在高度信任的资源所有者和客户端之间(比如,客户端是系统的一部分,或者特许的应用),并且其它授权模式不可用的时候。

密码凭据模式交互流程

客户端客户端统一身份认证平台统一身份认证平台判断本地是否有用户登录状态,无进入 “客户端” 的登录页面POST 请求 https://cas_server_url/oauth2.0/accessToken?grant_type=password,附带 username、password、client_id、client_secret 参数验证客户端数据库,验证成功验证用户数据库,验证成功签发 access_token查找请求响应中的 access_token,有调用用户认证信息接口:https://cas_server_url/oauth2.0/profile,获取用户认证信息返回用户认证信息认证信息匹配本地账号失败,则使用认证信息创建账号如果用户认证信息不满足要求,可调用用户详情接口获取用户详情,作为本地用户详情数据调用用户详情信息接口:https://api_server_url/user/info,获取用户详情返回用户详情信息“客户端” 本地账号、用户信息建立关联,OAuth2.0 密码凭据模式接入完成!

第一步:调用 Restfull API 认证接口获取 access_token

https://cas_server_url/oauth2.0/accessToken?grant_type=password&client_id=client&username=admin&password=admin

参数列表如下:

参数名称 参数说明 请求类型 是否必须 数据类型 schema
grant_type 授权类型常量 password query true string
client_id 应用审核通过后返回的client_id query true string
client_secret 应用审核通过后返回的client_secret query true string
username 用户名 query true string
password 密码 query true string
{
    "access_token": "AT-3-rX4WfOiCgiF6qMNt52PfqDaQj-F4I9LK",
    "token_type": "bearer",
    "expires_in": 28800
}
第二步:获取到 access_token 后,可获取当前认证用户信息

根据 accesstoken 获取用户信息:https://cas_server_url/oauth2.0/profile?access_token=xxxxx

返回示例

{
  "service" : "service_url",
  "attributes" : {
    "credentialType" : "LoginCredential"
  },
  "id" : "admin",
  "client_id" : "client"
}

响应参数

参数名称 参数说明 类型 schema
service 应用地址 string
attributes 用户属性值 integer(int64)
id 用户唯一ID string
client_id 应用客户端ID string
作者:Jeebiz  创建时间:2022-08-20 18:06
最后编辑:Jeebiz  更新时间:2024-05-07 20:29