OAuth2.0授权码模式接口文档
1. 对接说明
观远BI系统支持使用授权码模式进行OAuth2.0对接,此文档用于对接或者评估认证/授权中心的接口是否满足要求。接口设计满足OAuth2.0标准协议。
1.1. 流程示意图
2. 获取授权码(Authorization Code)
请求
请求方式:GET
接口地址:可在BI上配置
Content-Type: application/x-www-form-urlencoded
参数 | 是否必传 | 描述 |
response_type | 是 | 授权类型,此处为 "code"。 |
client_id | 是 | 您应用程序的客户端 ID。 |
redirect_uri | 否 | 授权服务器将用户重定向到的 URI。仅当BI系统中配置了“回调地址”才会有,是否需要此参数取决于授权系统,一般配置为BI域名 + /standard-oauth2/authenticate。 |
state | 是 | 用于防止跨站请求伪造(CSRF)的随机字符串。 |
GET /{authorize_url}?response_type=code&client_id={client_id}&redirect_uri={redirect_uri}&state={state}
- 如有其他固定参数,可在url上配置。
响应
如果用户同意授权,授权服务器将重定向到 redirect_uri,并在 URL 查询参数中附加授权码(code)和您传递的 state。
{redirect_uri}?code={authorization_code}&state={state}
- 特别注意state必须原样返回。有较多的OAuth2.0系统,都无此参数,或者不会原值返回。
3. 通过授权码(Authorization Code)获取访问令牌(Access Token)
请求方式:POST
接口地址:可在BI上配置
Content-Type: application/x-www-form-urlencoded
请求
参数 | 是否必传 | 描述 |
grant_type | 是 | 授权类型,此处为 "authorization_code"。 |
code | 是 | 获取到的授权码。 |
redirect_uri | 否 | 授权服务器将用户重定向到的 URI。与获取授权码时的 URI 相同,仅当BI系统中配置了“回调地址”才会有,是否需要此参数取决于授权系统,一般配置为BI域名 + /standard-oauth2/authenticate。 |
client_id | 是 | 应用程序的客户端 ID。 |
client_secret | 是 | 应用程序的客户端密钥。 |
grant_type=authorization_code&code={authorization_code}&redirect_uri={redirect_uri}&client_id={client_id}&client_secret={client_secret}
- 如有其他固定参数,可联系观远同事配置。
响应
Content-Type: application/json;charset=UTF-8
参数 | 是否必须 | 描述 |
access_token | 是 | 用于访问受保护资源的访问令牌。 |
token_type | 否 | 令牌类型。 |
expires_in | 否 | 访问令牌的有效期(秒)。 |
refresh_token | 否 | 用于在访问令牌过期后获取新访问令牌的刷新令牌。 |
{
"access_token": "{access_token}",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "{refresh_token}"
}
4. 获取用户信息
-
不属于标准协议内的接口
-
BI支持请求方法、url、请求头、请求体等灵活配置
-
支持从响应数据中解析用户唯一标识字段
5. 单点登出
- 可以配置登出重定向
6. 常见问题
6.1. 常见接口不匹配的情况
-
获取授权码、获取access token两个接口的请求方式、Content-Type、参数名称不匹配。着重注意:
-
获取授权码接口的回调接口,是否有state参数
-
获取access token的接口响应格式,access_token是否在json的第一层
-
获取acceess token的请求Content-Type为application/x-www-form-urlencoded,而不是application/json
-