跳到主要内容
版本:6.0.0

OAuth2.0授权码模式接口文档

1. 对接说明

观远BI系统支持使用授权码模式进行OAuth2.0对接,此文档用于对接或者评估认证/授权中心的接口是否满足要求。接口设计满足OAuth2.0标准协议

1.1. 流程示意图

1.png

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

7. 参考