获取Access Token
用户成功登录后,访问获取令牌Access Token接口,这一步同OAuth2协议步骤一致,然后Token EndPoint会的返回信息除了OAuth2规定的参数外,还增加一个id_token的字段,用户的信息通过JWT格式封装在id token中。
请求说明
回调地址和实际配置不匹配
http
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 | 使用表单方式提交参数 |
请求示例
http
POST https://{your_domain}/api/v1/oauth2/tokenAuthorization: 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保持一致。 |
返回示例
正确返回示例
json
HTTP Status: 200 OK
{
"access_token": "Z43T3KWH9lgPRHP8CmnPmC1hU5lyJNw9es8bruLXRmsXaA",
"token_type": "Bearer",
"refresh_token": "WEAFOmOJ-A4LOhF_I39DvJuqxP0o7YznzDQ2adn5yXkFlFA",
"expires_in": 7199,
"scope": "openid",
"id_token": "eyJraWQVlMiIsImFsZOiJodHRwczovL21o...8oEoRsydhg"
}redirect_uri参数不正确
json
HTTP Status: 400 BAD REQUEST
{
"error": "invalid_grant",
"error_description": "Invalid redirect: [xxx] (xx) does not match one of the registered values."
}错误返回示例
json
HTTP Status: 400 BAD REQUEST
{
"error": "invalid_grant",
"error_description": "Invalid authorization code: a2W0B8Q"
}应用凭据错误
json
HTTP Status: 401 Unauthorized
{
"error": "invalid_client",
"error_description": "Bad client credentials"
}返回参数
如果成功返回,即可在返回信息中获取到Access Token。
| 参数名 | 中文名称 | 必填 | 示例值 | 描述 |
|---|---|---|---|---|
| access_token | 授权令牌 | 必须 | NObiKQS-cn8AWnZyIMkOvBgHIo8 | 授权服务器返回给第三方应用的授权令牌。 |
| expires_in | 授权令牌的有效期 | 必须 | 7199 | 授权服务器返回给应用的访问票据的有效期。注意:有效期以秒为单位。 |
| refresh_token | 刷新令牌 | 可选 | wuGzSMMTjb4YhRUOjXHj-t-QD84 | 默认平台不返回 |
| token_type | 令牌类型 | 必须 | Bearer | |
| scope | 授权范围 | 必须 | openid | |
| id_token | 用户令牌 | 必须 | eyJhbGciOiJSUzI1NiIsImtp.... | 将用户信息通过jwt格式进行封装 |