# 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"
参数说明
参数名称 | 是否必须 | 类型 | 描述 |
---|---|---|---|
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
返回结果说明
字段 | 说明 |
---|---|
code | 也叫AuthorizationCode用于获取AccessToken,有效时间30秒 |
# 1.2、根据AuthorizationCode获取AccessToken
功能描述:根据AuthorizationCode获取AccessToken
请求方式:POST
接口地址:【casServerUrl 】+ "/oidc/accessToken"
传参方式:
Content-type参考application/x-www-form-urlencoded; charset=utf-8。
参数说明
参数名称 | 是否必须 | 数据类型 | 描述 |
---|---|---|---|
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
}
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"
参数说明
参数名称 | 是否必须 | 数据类型 | 描述 |
---|---|---|---|
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"
}
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
3.登陆成功后跳转https://www.baidu.com/?code=OC-1-zTUfWsy0E871RYKryfKKCic43SBMJOXC
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
若请求成功,返回:
{
"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"
}
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"
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
← restful(独立) java →