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