OAuth2.0 授权码模式(Authorization Code)接入
授权码模式(Authorization Code)适用于有前端(APP或网页)的应用,由统一身份认证平台,提供统一登录页面,完成认证后携带code跳转回“业务系统/平台”。
授权码模式交互流程
第一步:获取 临时授权码 code
访问 OAuth2.0 认证授权地址: https://cas_server_url/oauth2.0/authorize?response_type=code&client_id=yourclient&redirect_uri=https://my_server_url/callback
参数列表如下:
参数名称 | 参数说明 | 请求类型 | 是否必须 | 数据类型 | schema |
---|---|---|---|---|---|
client_id | 应用审核通过后返回的client_id | query | true | string | |
response_type | 返回类型,填写为code | query | true | string | |
redirect_uri | 回调地址,应用接入第二步中填写的请求地址 | query | true | string | |
state | 重定向后会带上state参数,该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验 | query | false | string |
重定向到 OAuth2.0 认证授权地址,从回调接口获取到临时授权码 code
response.sendRedirect("https://cas_server_url/oauth2.0/authorize?response_type=code&client_id=yourclient&redirect_uri=https://my_server_url/callback");
返回说明
用户授权成功后将会重定向到redirect_uri的网址上,并且带上code和state参数 redirect_uri?code=CODE&state=STATE
注意:跳转回调redirect_uri,应当使用https链接来确保授权code的安全性
第二步:授权码 code 获取 access_token
根据授权码 code 获取 access_token :https://cas_server_url/oauth2.0/accessToken?grant_type=authorization_code&client_id=yourclient&client_secret=yoursecret&code=yourcode&redirect_uri=https://my_server_url/callback
参数列表如下:
参数名称 | 参数说明 | 请求类型 | 是否必须 | 数据类型 | schema |
---|---|---|---|---|---|
client_id | 应用审核通过后返回的client_id | body | true | string | |
client_secret | 应用审核通过后返回的client_secret | body | true | string | |
grant_type | 授权类型常量 authorization_code | body | true | string | |
code | 临时授权码 | body | true | string | |
redirect_uri | 回调地址,应用接入第二步中填写的请求地址 | body | true | string |
返回示例
{
"service" : "service_url",
"attributes" : {
"credentialType" : "LoginCredential"
},
"id" : "admin",
"client_id" : "client"
}
第三步:获取到 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:07
最后编辑:Jeebiz 更新时间:2024-05-07 20:29
最后编辑:Jeebiz 更新时间:2024-05-07 20:29