# 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"

image-20220613151442002

请求链接样例:

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
1

参数说明

参数名称 是否必须 类型 描述
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
1

返回结果说明

字段 说明
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。

image-20220613154419504

请求链接样例:

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
1

参数说明

参数名称 是否必须 数据类型 描述
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
}
1
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"

image-20220613155430209

请求链接样例:

http://127.0.0.1:8000/cas/oauth2.0/profile?access_token=AT-1-6cCvMnIHyvyTf359tlB9X4KkXJlm2RLf
1

参数说明

参数名称 是否必须 数据类型 描述
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"
}
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。

image-20220613181806615

请求链接样例:

http://127.0.0.1:8700/home/getAccessTokenByRefreshToken?refreshToken=RT-1-K3C7-3P9bjMilOLqVH3iQs2H7c-M-GZD
1

参数说明

参数名称 是否必须 数据类型 描述
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
}
1
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

image-20220613175510689

验证成功后会在URL后面带上code参数,注意code的过期时间30秒否则会报错error=invalid_grant,

https://www.baidu.com/?code=OC-3-lImTBIa-D-TxsWe6aXBOFOCWunlM7gOr

image-20220613175534595

根据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

image-20220613175827457

根据AccessToken获取用户信息,http://127.0.0.1:8000/cas/oauth2.0/profile?access_token=AT-7-2-4okk2aK769iYk7LceQ2rF2ZXsBBL2l

image-20220613180019814

# 3.2、刷新AccessToken(refresh_token)

根据refresh_token重新获取accessToken

image-20220613181540489

# 4、退出

参考:oauth退出方式