# 1、基础参数说明
参数 | 说明 |
---|---|
casServerUrl | 基于cas登陆的登陆地址,包含contentPath,例如:http://127.0.0.1:8000/cas |
clientId | 中科软提供的appKey的值 |
clientSecret | 中科软提供的appSecret |
redirectUri | 当前应用服务的url地址,http://ip:port/contentPath,例如 http:127.0.0.1:8700 |
# 2、集成方式及说明
# 2.1、授权码(authorization-code)
# 2.1.1、对用户进行授权,启动CAS认证流程
功能描述:对用户进行授权,启动CAS认证流程。【若当前用户未登录,跳转到cas-server登陆页面;若登陆成功,将跳转到redirect_uri并返回AuthorizationCode。】
请求方式:GET
接口地址:【casServerUrl 】+ "/oauth2.0/authorize"
传参方式:response_type=code&client_id="clientId"&redirect_uri="redirectUri"
请求链接样例:
http://127.0.0.1:8000/cas/oauth2.0/authorize?response_type=code&client_id=20180901&redirect_uri=http://127.0.0.1:8080/xxx/index.html
参数说明
参数名称 | 是否必须 | 类型 | 描述 |
---|---|---|---|
response_type | 必须 | 字符串 | response_type=code,固定值 |
client_id | 必须 | 字符串 | 中科软提供的appKey的值 |
redirect_uri | 必须 | 字符串 | 必须是当前应用服务的url地址。权限验证使用。参考【1、基础参数说明 - redirectUri】 |
返回结果样例
http://127.0.0.1:8080/xxx/index.html?code=OC-1-LHa40m9qwq-GjQ-AfRZUeuCMFE9WfrA5
返回结果说明
字段 | 说明 |
---|---|
code | 也叫AuthorizationCode用于获取AccessToken,有效时间30秒 |
# 2.1.2、根据AuthorizationCode获取AccessToken
功能描述:根据AuthorizationCode获取AccessToken
请求方式:POST
接口地址:【casServerUrl 】+ "/oauth2.0/accessToken"
传参方式:
Content-type参考application/x-www-form-urlencoded; charset=utf-8。
请求链接样例:
http://127.0.0.1:8000/cas/oauth2.0/accessToken?grant_type=authorization_code&client_id=20180901&client_secret=123456&redirect_uri=http://127.0.0.1:8700&code=OC-2-WOgOAgSa6s9-vzxwWDaqcVfF0-8iqFdS
参数说明
参数名称 | 是否必须 | 数据类型 | 描述 |
---|---|---|---|
grant_type | 必须 | 字符串 | authorization_code,固定值 |
client_id | 必须 | 字符串 | 中科软提供的appId |
client_secret | 必须 | 字符串 | 中科软提供的appSecret |
code | 必须 | 字符串 | 在2.1.1环节返回的code |
redirect_uri | 必须 | 字符串 | 必须是当前应用的url地址。权限验证使用。参考【1、基础参数说明 - redirectUri】 |
返回结果样例
{
"access_token": "AT-1-sWfDhKoxwktsmY93z6I-zuzyXyjNoqnV",
"refresh_token": "RT-1--2xNyqS8-mzP81B0z80wmkQLJURXg9VB",
"token_type": "bearer",
"expires_in": 28800
}
2
3
4
5
6
返回结果说明
字段 | 说明 |
---|---|
access_token | 可用于获取用户信息等。新的有效期2小时。 |
refresh_token | 可用于获取新的access_token。新的一般有效期72小时。 |
token_type | token类型 |
expires_in | access_token过期时长,单位秒 |
# 2.1.3、根据AccessToken获取已登陆的用户信息
功能描述:获取已登陆的用户信息
请求方式:GET
接口地址:【casServerUrl 】+ "/oauth2.0/profile"
传参方式:access_token="accessToken"
请求链接样例:
http://127.0.0.1:8000/cas/oauth2.0/profile?access_token=AT-1-6cCvMnIHyvyTf359tlB9X4KkXJlm2RLf
参数说明
参数名称 | 是否必须 | 数据类型 | 描述 |
---|---|---|---|
access_token | 必须 | 字符串 | 在2.1.2环节返回的access_token |
返回结果样例
{
"attributes": {
"credentialType": "SinosoftCredential",
"sinosoftRefreshToken": "sinosoftRefreshToken0d9dbd9262574dc58378f371704c6e38",
"sinosoftRefreshTokenExpireTime": "2022-06-14T16:30:00.993",
"sinosoftTokenExpireTime": "2022-06-13 18:30:00",
"systemCodes": [
"systemcode1",
"systemcode2",
"systemcode3"
],
"id": "1",
"sinosoft": "这里存储了根据不同主题返回的不同参数-sinosoft",
"userinfo": "{\"id\":\"1\",\"userType\":null,\"userName\":\"张三\",\"email\":\"zhangsan@qq.com\"}",
"sinosoftToken": "sinosoftToken0e0e8864d9f443fd8509f28a1b84c6f8"
},
"id": "1"
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
返回结果说明
字段 | 说明 |
---|---|
attributes | 登陆后的用户信息 |
id | 当前用户ID |
# 2.1.4、根据refresh_token重新获取AccessToken
功能描述:根据refresh_token重新获取AccessToken
请求方式:POST
接口地址:【casServerUrl 】+ "/oauth2.0/accessToken"
传参方式:Content-type参考application/x-www-form-urlencoded; charset=utf-8。
请求链接样例:
http://127.0.0.1:8700/home/getAccessTokenByRefreshToken?refreshToken=RT-1-K3C7-3P9bjMilOLqVH3iQs2H7c-M-GZD
参数说明
参数名称 | 是否必须 | 数据类型 | 描述 |
---|---|---|---|
grant_type | 必须 | 字符串 | response_type=token,固定值 |
client_id | 必须 | 字符串 | 中科软提供的appKey的值 |
client_secret | 必须 | 字符串 | 中科软提供的appSecret |
refresh_token | 必须 | 字符串 | 验证成功后返回的refresh_token |
返回结果样例
{
"access_token": "AT-10-VSPzShickqJencT4k9lz65rXG9UOEc2B",
"token_type": "bearer",
"expires_in": 28800
}
2
3
4
5
返回结果说明
字段 | 说明 |
---|---|
access_token | 可用于获取用户信息等。新的有效期2小时。 |
token_type | token类型 |
expires_in | access_token过期时长,单位秒 |
# 3、集成效果
# 3.1、授权码模式(authorization-code)
先登陆验证http://127.0.0.1:8000/cas/oauth2.0/authorize?response_type=code&client_id=20180901&redirect_uri=http://www.baidu.com
验证成功后会在URL后面带上code参数,注意code的过期时间30秒否则会报错error=invalid_grant,
https://www.baidu.com/?code=OC-3-lImTBIa-D-TxsWe6aXBOFOCWunlM7gOr
根据code获取AccessToken,
http://127.0.0.1:8000/cas/oauth2.0/accessToken?grant_type=authorization_code&client_id=20180901&client_secret=123456&redirect_uri=http://www.baidu.com&code=OC-3-lImTBIa-D-TxsWe6aXBOFOCWunlM7gOr
根据AccessToken获取用户信息,http://127.0.0.1:8000/cas/oauth2.0/profile?access_token=AT-7-2-4okk2aK769iYk7LceQ2rF2ZXsBBL2l
# 3.2、刷新AccessToken(refresh_token)
根据refresh_token重新获取accessToken
# 4、退出
参考:oauth退出方式
java →