统一身份认证-oauth2.0接入手册
统一身份认证-oauth2.0接入手册
统一身份认证服务核心是CAS(Central Authentication Service)认证,当前CAS Server是基于开源框架CAS 6.3.1开发集成。支持CAS、SAML、OPENID、OAuth2.0等协议,
支持JAVA、.NET、PHP等多个平台产品的CAS客户端对接,支持服务属性控制等。本文提供了CAS客户端使用OAUTH2.0对接步骤,并提供了JAVA版本客户端OAUTH认证实例。
前置条件
- CAS服务端地址。
- 授权当前CAS CLIENT端登录地址以及登出回调地址。
- 服务端提供
client_id和client_secret。
授权流程说明
统一认证OAuth授权登录让用户使用平台身份安全登录第三方应用或网站,在用户授权登录已接入平台OAuth的第三方应用后,
第三方可以获取到用户的接口调用凭证(access_token),通过access_token可以进行平台开放授权关系接口调用,
从而可实现获取用户基本开放信息和帮助用户实现基础开放功能等。 统一认证OAuth授权登录目前支持authorization_code模式,
适用于拥有server端的应用授权。该模式整体流程为:
1.第三方发起授权登录请求,用户允许授权第三方应用后,平台会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数;
2.通过code参数加上
client_id和client_secret等,通过API换取access_token;3.通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。
- 时序图

接入步骤说明
步骤一:请求code
第三方使用网站应用授权登录前请注意固定参数是否正确(response_type=code),
则可以通过在PC端打开以下链接:http://10.10.10.29:8088/oauth2.0/authorize?response_type=code&client_id=CLIENT_ID&redirect_uri=REDIRECT_URI,
若提示“该链接无法访问”,请检查参数是否填写错误,如redirect_uri的域名是否正确。
- 接口说明
接口地址:http://10.10.10.29:8088/oauth2.0/authorize
请求方式:GET
请求参数:如下表
| 参数名称 | 数据类型 | 是否必须 | 参数说明 |
|---|---|---|---|
| response_type | String | 是 | 接入方式(固定值-code) |
| client_id | String | 是 | 接入系统id(需服务端提供) |
| redirect_uri | String | 是 | 回调地址(需服务端授权) |
返回说明
用户允许授权后,将会重定向到redirect_uri的网址上,并且带上code参数。
redirect_uri?code=CODE 若用户禁止授权,则不会发生重定向
请求示例
登录某应用 https://test.lightcode.com/wechat/login.do 打开后,生成跳转地址,
并重定向 http://10.10.10.29:8088/oauth2.0/authorize?response_type=code&client_id=123&redirect_uri=https%3A%2F%2Ftest.lightcode.com%2Fwechart%2Fcallback.do
用户使用确认登录后,PC端会跳转到 https://test.lightcode.com/wechart/callback.do?code=CODE。
步骤二:通过code获取access_token
- 通过code获取access_token接口说明
接口地址:http://10.10.10.29:8088/oauth2.0/accessToken
请求方式:GET
请求参数:如下表
| 参数名称 | 数据类型 | 是否必须 | 参数说明 |
|---|---|---|---|
| code | String | 是 | 获取的code(服务端返回) |
| client_id | String | 是 | 接入系统id(需服务端提供) |
| client_secret | String | 是 | 系统秘钥(需服务端提供) |
| redirect_uri | String | 是 | 回调地址(需服务端授权) |
| scope | String | 否 | 使用范围(可选) |
| grant_type | String | 是 | authorization_code 授权码模式(即先登录获取code,再获取token)password 密码模式(将用户名,密码传过去,直接获取token)client_credentials 客户端模式(无用户,用户向客户端注册,然后客户端以自己的名义向'服务端'获取资源)implicit 简化模式(在redirect_uri 的Hash传递token; Auth客户端运行在浏览器中,如JS,Flash)refresh_token 刷新access_token(需服务端提供),建议使用authorization_code |
返回说明:以下情况为正确的返回示例
{
"access_token":"AT-1-BcyaLYfQEelhuSoU0m8IJd1wDRV9rGlK",
"expires_in":28800,
"scope":""
}返回参数说明
| 参数名称 | 数据类型 | 是否必须 | 参数说明 |
|---|---|---|---|
| access_token | String | 是 | 接口调用凭证 |
| expires_in | Long | 是 | access_token接口调用凭证超时时间,单位(秒) |
| scope | String | 是 | 请求传入 |
步骤三:根据access_token获取用户信息
通过access_token,构造获取身份信息链接请求
请求地址:http://10.10.10.29:8088/oauth2.0/profile?access_token=AT-1-BcyaLYfQEelhuSoU0m8IJd1wDRV9rGlK
请求方式:POST
请求参数:如下表
| 参数名称 | 数据类型 | 是否必须 | 参数说明 |
|---|---|---|---|
| access_token | String | 是 | 认证凭据(服务端返回) |
