# integrated-oidc-http

# 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:8800

# 2、集成方式及说明

# 1、授权码模式/code模式(authorization-code)【推荐】

# 1.1、对用户进行授权,启动CAS认证流程

功能描述:对用户进行授权,启动CAS认证流程。【若当前用户未登录,跳转到cas-server登陆页面;若登陆成功,将跳转到redirect_uri并返回AuthorizationCode。】

请求方式:GET

接口地址:【casServerUrl 】+ "/oidc/authorize"

传参方式:response_type=code&scope=openid profile&client_id="clientId"&redirect_uri="redirectUri"

image-20220711153742832

参数说明

参数名称 是否必须 类型 描述
response_type 必须 字符串 response_type=code,固定值
scope 必须 字符串 scope=openid profile,固定值(注意英文空格分隔)
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秒

# 1.2、根据AuthorizationCode获取AccessToken

功能描述:根据AuthorizationCode获取AccessToken

请求方式:POST

接口地址:【casServerUrl 】+ "/oidc/accessToken"

传参方式:

Content-type参考application/x-www-form-urlencoded; charset=utf-8。

image-20220711153742832

参数说明

参数名称 是否必须 数据类型 描述
grant_type 必须 字符串 authorization_code,固定值
client_id 必须 字符串 中科软提供的appId
client_secret 必须 字符串 中科软提供的appSecret
code 必须 字符串 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过期时长,单位秒

# 1.3、根据AccessToken获取已登陆的用户信息

功能描述:获取已登陆的用户信息

请求方式:GET

接口地址:【casServerUrl 】+ "/oidc/profile"

传参方式:access_token="accessToken"

image-20220711154439852

参数说明

参数名称 是否必须 数据类型 描述
access_token 必须 字符串 1.2环节返回的access_token

返回结果样例

{
    "credentialType": "UsernamePasswordCredential",
    "sinosoftRefreshToken": "sinosoftRefreshToken543856a0288142178cb5998b507ab998",
    "sub": "1",
    "sinosoftRefreshTokenExpireTime": "2022-07-12 15:49:43",
    "sinosoftTokenExpireTime": "2022-07-11 17:49:43",
    "systemCodes": [
        "systemcode1",
        "systemcode2",
        "systemcode3"
    ],
    "auth_time": 1657525996,
    "id": "1",
    "sinosoft": "这里存储了根据不同主题返回的不同参数-sinosoft",
    "userinfo": "{\"id\":\"1\",\"userType\":null,\"userName\":\"张三\",\"email\":\"zhangsan@qq.com\"}",
    "sinosoftToken": "sinosoftTokenedcab3508d6d43cd8df45252d9a3bd37"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

返回结果说明

字段 说明
id 当前用户ID

# 1.4、效果展示

1.请求获取code,对用户进行认证

http://127.0.0.1:8000/cas/oidc/authorize?response_type=code&scope=openid%20profile&client_id=abcd&redirect_uri=http://www.baidu.com

2.若未登陆进行跳转登陆页http://127.0.0.1:8000/cas/login?service=http%3A%2F%2F127.0.0.1%3A8000%2Fcas%2Foauth2.0%2FcallbackAuthorize%3Fclient_name%3DCasOAuthClient%26client_id%3Dabcd%26redirect_uri%3Dhttp%253A%252F%252Fwww.baidu.com%26response_type%3Dcode

image-20220711154800705

3.登陆成功后跳转https://www.baidu.com/?code=OC-1-zTUfWsy0E871RYKryfKKCic43SBMJOXC

image-20220711155152081

4.根据code请求,获取access_token http://127.0.0.1:8000/cas/oidc/accessToken?grant_type=authorization_code&redirect_uri=http://www.baidu.com&client_id=abcd&client_secret=xyz&code=OC-1-zTUfWsy0E871RYKryfKKCic43SBMJOXC

image-20220711155403652

若请求成功,返回:

{
    "access_token": "AT-1-53MCqbwaTl9THDssfuYLEI9M-JHYbrw4",
    "token_type": "bearer",
    "expires_in": 28800,
    "refresh_token": "RT-1-T5-Lc3lbRJ6tNRpvACd9xZ0aKqYXQhN4",
    "id_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6ImNhcyJ9.eyJqdGkiOiJkZDlmYjI0MS0zMzRlLTRkNWEtYTBiMy03MWM3ZDJmZWZjZGQiLCJpc3MiOiJodHRwOi8vMTI3LjAuMC4xOjgwMDAvY2FzL29pZGMvIiwiYXVkIjoiYWJjZCIsImV4cCI6MTY1NzU1NDgwNiwiaWF0IjoxNjU3NTI2MDA2LCJuYmYiOjE2NTc1MjU3MDYsInN1YiI6IjEiLCJhbXIiOlsiUmVzdEF1dGhlbnRpY2F0aW9uSGFuZGxlciJdLCJzdGF0ZSI6IiIsIm5vbmNlIjoiIiwiYXRfaGFzaCI6IjJKVWVKc2x6X19rcFV5Um9KQ01jY3ciLCJ1c2VyaW5mbyI6IntcImlkXCI6XCIxXCIsXCJ1c2VyVHlwZVwiOm51bGwsXCJ1c2VyTmFtZVwiOlwi5byg5LiJXCIsXCJlbWFpbFwiOlwiemhhbmdzYW5AcXEuY29tXCJ9IiwicHJlZmVycmVkX3VzZXJuYW1lIjoiYWJjZCJ9.qqE-W0_yWXyX1SWd6zbe6cH24oJXAIWAZJTr4LZMiU5TvEGyFqMZufa50VioaioGElScRNLJVlwu3ASV6CQBXUmhuExY-xAZgNlcxRrKLWDQLE-PNmh6LYjTgvV8Iw7OGOWzD3XQEr0vqm42l049R2Ziu0vuP7BD0WPZCVYSkESY29042lDX6qYVbipJR125T0XOd_v839X161uLNobky6I4EqAA4OQU3vKaizrPNBfD_In6fewkcgAFUnYwINl2wm-ZZmuJj0aL4uqemQBl65nUTwh34wdx4Yz0ZsTtHbNwU--ti9fc2nIwRFKwAythHU2TzGl_IYoqtUjBxZMXqA"
}
1
2
3
4
5
6
7

5.获取到access_token以后,根据access_token获取用户信息

http://127.0.0.1:8000/cas/oidc/profile?access_token=AT-1-53MCqbwaTl9THDssfuYLEI9M-JHYbrw4

{
    "credentialType": "UsernamePasswordCredential",
    "sinosoftRefreshToken": "sinosoftRefreshToken543856a0288142178cb5998b507ab998",
    "sub": "1",
    "sinosoftRefreshTokenExpireTime": "2022-07-12 15:49:43",
    "sinosoftTokenExpireTime": "2022-07-11 17:49:43",
    "systemCodes": [
        "systemcode1",
        "systemcode2",
        "systemcode3"
    ],
    "auth_time": 1657525996,
    "id": "1",
    "sinosoft": "这里存储了根据不同主题返回的不同参数-sinosoft",
    "userinfo": "{\"id\":\"1\",\"userType\":null,\"userName\":\"张三\",\"email\":\"zhangsan@qq.com\"}",
    "sinosoftToken": "sinosoftTokenedcab3508d6d43cd8df45252d9a3bd37"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17