获取Access Token

用户成功登录后,访问获取令牌Access Token接口,这一步同OAuth2协议步骤一致,然后Token EndPoint会的返回信息除了OAuth2规定的参数外,还增加一个id_token的字段,用户的信息通过JWT格式封装在id token中。

# 请求说明

POST https://{your_domain}/api/v1/oauth2/token

# 请求头

参数名 中文名称 必须 示例值 描述
Authorization 认证信息 必须 Basic UnFCMkhKdNOWk9xWA== 使用client_id和client_secret进行basic64认证,
格式为: base64(client_id:client_secret)
Content-Type 数据类型 必须 application/x-www-form-urlencoded 使用表单方式提交参数

# 请求示例

POST https://{your_domain}/api/v1/oauth2/token

Authorization: Basic UnFCMkhKdGt6bFU...aT0NObkk4NlNOWk9xWA==

Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&code=stRWlW&redirect_uri=http://oidcdemo.bccastle.com/demo/index.jsp

# 请求参数

参数名 中文名称 必须 示例值 描述
grant_type 授权类型 必须 authorization_code 此值固定为authorization_code。
code 授权码 必须 stRWlW 上一步返回的authorization code。
用户成功登录后跳转到指定的回调地址,
并在URL中带上Authorization Code。
注意此code会在5分钟内过期。
redirect_uri 回调地址 可选 http://oidcdemo.bccastle.com
/demo/index.jsp
与上面一步中传入的redirect_uri保持一致。

# 返回示例

正确返回示例
HTTP Status: 200 OK
{     
    "access_token": "Z43T3KWH9lgPRHP8CmnPmC1hU5lyJNw9es8bruLXRmsXaA",     "token_type": "Bearer",     
    "refresh_token": "WEAFOmOJ-A4LOhF_I39DvJuqxP0o7YznzDQ2adn5yXkFlFA",     "expires_in": 7199,     
    "scope": "openid",     
    "id_token": "eyJraWQVlMiIsImFsZOiJodHRwczovL21o...8oEoRsydhg" 
}

回调地址和实际配置不匹配
HTTP Status: 400 BAD REQUEST 
{     
    "error": "invalid_grant",     
    "error_description": "Invalid redirect: [xxx] (xx) does not match one of the registered values." 
} 

code参数错误
HTTP Status: 400 BAD REQUEST 
{
    "error": "invalid_grant",
    "error_description": "Invalid authorization code: a2W0B8Q"
}

clientSecret认证失败
HTTP Status: 401 Unauthorized
{
    	"error": "invalid_client",
    	"error_description": "Bad client credentials"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

# 返回参数

如果成功返回,即可在返回信息中获取到Access Token。

参数名 中文名称 必须 示例值 描述
access_token 授权令牌 必须 NObiKQS-cn8AWnZyIMkOvBgHIo8 授权服务器返回给第三方应用的授权令牌。
expires_in 授权令牌的有效期 必须 7199 授权服务器返回给应用的访问票据的有效期。注意:有效期以秒为单位。
refresh_token 刷新令牌 可选 wuGzSMMTjb4YhRUOjXHj-t-QD84 默认平台不返回
token_type 令牌类型 必须 Bearer
scope 授权范围 必须 openid
id_token 用户令牌 必须 eyJhbGciOiJSUzI1NiIsImtp.... 将用户信息通过jwt格式进行封装