OAuth2.0认证接口
一、授权码模式
该模式的授权流程为:
1、跳转到认证中心认证用户。
2、使用code获取access_token。
3、获取用户信息。
1、用户认证
跳转到SID认证中心认证用户。
请求⽅式: GET(HTTPS或HTTP)
请求地址: http://sso.xxx.example.com/oauth2.0/authorize
注:https方式类似。
请求参数:
https://sid.rghall.com.cn/oauth2.0/authorize?response_type=code&client_id=oauthtest&redirect_uri=http%3A%2F%2Foauth.client.com.cn%3A9878
参数说明:
参数 | 是否必须 | 说明 |
---|---|---|
response_type | 是 | 授权码模式,这里固定为code |
client_id | 是 | 应用id |
redirect_uri | 是 | 应用回调地址 |
scope | 否 | 权限列表,以空格分隔。 |
返回结果:
重定向到认证页面,认证成功页面将跳转至 redirect_uri?code=CODE
code说明:code作为换取access_token的票据,每次用户授权带上的code将不一样
code只能使用一次,10s未被使用自动过期。
参数说明:
参数 | 说明 |
---|---|
code | SID跳转到redirect_uri时,code参数会附带在该地址中 |
2、用code获取access_token
使用code获取access_token。
请求⽅式: POST/GET(HTTPS或HTTP),在安全要求情况下,请使用POST请求,通过https对传输加密。
请求地址: http://sso.xxx.example.com/oauth2.0/accessToken
注:https方式类似。
请求头(header):
Content-Type:form-data或者url传参
注:使用get请求时,不用添加请求头。
请求参数:
获取code后,请求以下链接获取access_token
form表单post请求
grant_type:authorization_code
client_id:oauthtest
client_secret:9aggRf1kk0tSM28X-Fmo972aTkHt5hni2yXQH3IbBtx8cM-yGeSBItw6ASePAB0O
redirect_uri:http://oauth.client.com.cn:9878/
code:OC-9-iQBaj2rYndjtttJqJE9P6Qn-eoinZGnJ
url get请求
https://sid.rghall.com.cn/oauth2.0/accessToken?client_id=oauthtest&client_secret=9aggRf1kk0tSM28X-Fmo972aTkHt5hni2yXQH3IbBtx8cM-yGeSBItw6ASePAB0O&code=OC-8-gaju-c32d3JdJFfowTOU40UdoubIZBaX&grant_type=authorization_code&redirect_uri=http%3A%2F%2Foauth.client.com.cn%3A9878
参数说明:
参数 | 是否必须 | 说明 |
---|---|---|
grant_type | 是 | 授权码模式,这里固定为authorization_code |
client_id | 是 | 应用id |
client_secret | 是 | 应用秘钥 |
redirect_uri | 是 | 应用回调地址 |
code | 是 | 授权码 |
返回结果:
{
"access_token":"AT-98-kkxRFRAp7JP4HvKcooOlTjqEslglCNoU",
"token_type":"bearer",
"expires_in":28800,
"refresh_token":"RT-7-XuigbD-eb4qSN0LwHBSixvpmv4zCzw21"
}
参数说明:
参数 | 是否必须 | 说明 |
---|---|---|
access_token | 是 | 访问令牌 |
token_type | 是 | 令牌类型 |
expires_in | 是 | 令牌有效期 |
refresh_token | 否 | 刷新令牌,该参数只有在SID中将下发刷新令牌勾选为“是”时才会返回 |
注:获取refresh_token参数的值需先在SID中选择“下发刷新令牌”,如下图:
3、获取用户信息
使用access_token获取用户信息。
请求⽅式: GET/POST(HTTPS或HTTP),在安全要求情况下,请使用POST请求,通过https对传输加密。
请求地址: http://sso.xxx.example.com/oauth2.0/profile
注:https方式类似。
请求头(header):
Content-Type:form-data
注:使用get请求时,不用添加请求头。
请求参数:
form表单post请求
access_token:AT-98-kkxRFRAp7JP4HvKcooOlTjqEslglCNoU
url get请求
https://sid.rghall.com.cn/oauth2.0/profile?access_token=AT-98-kkxRFRAp7JP4HvKcooOlTjqEslglCNoU
参数说明:
参数 | 是否必须 | 说明 |
---|---|---|
access_token | 是 | 访问令牌 |
返回结果(员工):
{
"active": true,
"attributes": {
"DQZTM": "在任",
"DWH": "网络信息与综合服务中心",
"DWM": "306000",
"GH": "20042020",
"PRZWMC": "员工",
"SFLBDM": "01",
"XBM": "男性",
"XM": "xxxx"
"SFLBMC": "xxx"
},
"id": "20042020",
"client_id": xxx
}
参数说明:
参数 | 说明 |
---|---|
id | 用户名 |
client_id | 应用id |
attributes | 用户属性列表 |
XM | 姓名 |
XBM | 性别 |
SFLBDM | 身份类别代码 |
GH | 工号 |
PRZWMC | 职位名称 |
DWM | 单位名 |
DWH | 单位号 |
DQZTM | 当前状态 |
ZWJBMC | 职务级别名称 |
SFLBMC | 身份类别名称 |
4、获取用户单身份/多身份信息
使用access_token获取用户信息。
请求⽅式: GET/POST(HTTPS或HTTP),在安全要求情况下,请使用POST请求,通过https对传输加密。
请求地址: http://sso.xxx.example.com/oauth2.0/oauthcode/multiple/identity
注:https方式类似。
请求头(header):
Content-Type:multipart/form-data
注:使用get请求时,不用添加请求头。
请求参数:
form表单post请求
access_token:AT-98-kkxRFRAp7JP4HvKcooOlTjqEslglCNoU
url get请求
http://sso.xxx.example.com/oauth2.0/oauthcode/multiple/identity?access_token=AT-98-kkxRFRAp7JP4HvKcooOlTjqEslglCNoU
参数说明:
参数 | 是否必须 | 说明 |
---|---|---|
access_token | 是 | 访问令牌 |
返回结果(主任和组长多身份为例):
{
"id": "T001",
"users": [
{
"DQZTM": "在任",
"DWH": "网络信息与综合服务中心",
"DWM": "306000",
"GH": "0220221356",
"PRZWMC": "主任",
"SFLBDM": "01",
"XBM": "男性",
"XM": "xxxx",
"TEL": "18616612569",
"SFLBMC": "xxx"
},
{
"DQZTM": "在任",
"DWH": "网络信息与综合服务中心",
"DWM": "306000",
"GH": "T001",
"PRZWMC": "组长",
"SFLBDM": "01",
"XBM": "男性",
"XM": "xxxx",
"TEL": "18616612569",
"SFLBMC": "xxx"
}
]
}
参数说明:
参数 | 说明 |
---|---|
id | 用户认证时使用的ID |
users | 用户属性列表 |
XM | 姓名 |
XBM | 性别 |
SFLBDM | 身份类别代码 |
GH | 工号 |
PRZWMC | 职位名称 |
DWM | 单位名 |
DWH | 单位号 |
DQZTM | 当前状态 |
ZWJBMC | 职务级别名称 |
SFLBMC | 身份类别名称 |
TEL | 手机号 |
二、密码模式
该模式的授权流程为:
1、获取access_token。
2、获取用户信息。
3、使用刷新令牌获取access_token(该步骤可选)。
1、获取access_token
获取access_token。 token闲置两个小时会失效
请求⽅式: POST(HTTPS或HTTP)请使用POST请求,通过https对传输加密。
请求地址: http://sso.xxx.example.com/oauth2.0/accessToken
请求头(header):
Content-Type:form-data
注:https方式类似。
请求参数:
form表单post请求
grant_type:password
client_id:oauthtest
username:test001
password:test001
参数说明:
参数 | 是否必须 | 说明 |
---|---|---|
grant_type | 是 | 密码模式为password |
client_id | 是 | 应用id |
username | 是 | 用户名 |
password | 是 | 密码 |
scope | 否 | 权限列表,以空格分隔 |
返回结果:
{
"access_token": "AT-1-IWyhZhU1hKKvWPddAJpdHRN2ECu08Ypo",
"token_type": "bearer",
"expires_in": 28800,
"refresh_token": "RT-1-cvHg23sAYRfu-1h8e57U9PSGK1qyL-mW"
}
参数说明:
参数 | 是否必须 | 说明 |
---|---|---|
access_token | 是 | 访问令牌 |
token_type | 是 | 令牌类型 |
expires_in | 是 | 令牌有效期 |
refresh_token | 否 | 刷新令牌,该参数只有在SID中将下发刷新令牌勾选为“是”时才会返回 |
2、获取用户信息
使用access_token获取用户信息。
请求⽅式: GET/POST(HTTPS或HTTP),在安全要求情况下,请使用POST请求,通过https对传输加密。
请求地址: http://sso.xxx.example.com/oauth2.0/profile
注:https方式类似。
请求头(header):
Content-Type:multipart/form-data
注:使用get请求时,不用添加请求头。
请求参数:
form表单post请求
access_token:AT-98-kkxRFRAp7JP4HvKcooOlTjqEslglCNoU
url get请求
https://sid.rghall.com.cn/oauth2.0/profile?access_token=AT-98-kkxRFRAp7JP4HvKcooOlTjqEslglCNoU
参数说明:
参数 | 是否必须 | 说明 |
---|---|---|
access_token | 是 | 访问令牌 |
返回结果(员工为例):
{
"attributes": {
"DQZTM": "在任",
"DWH": "网络信息与综合服务中心",
"DWM": "306000",
"GH": "20042020",
"PRZWMC": "员工",
"SFLBDM": "01",
"XBM": "男性",
"XM": "xxxx"
"SFLBMC": "xxx"
},
"id": "20042020"
}
参数说明:
参数 | 说明 |
---|---|
id | 用户名 |
attributes | 用户属性列表 |
XM | 姓名 |
XBM | 性别 |
SFLBDM | 身份类别代码 |
GH | 工号 |
PRZWMC | 职位名称 |
DWM | 单位名 |
DWH | 单位号 |
DQZTM | 当前状态 |
ZWJBMC | 职务级别名称 |
SFLBMC | 身份类别名称 |
3、获取用户单身份/多身份信息
使用access_token获取用户信息。
请求⽅式: GET/POST(HTTPS或HTTP),在安全要求情况下,请使用POST请求,通过https对传输加密。
请求地址: http://sso.xxx.example.com/oauth2.0/profile/multiple
注:https方式类似。
请求头(header):
Content-Type:multipart/form-data
注:使用get请求时,不用添加请求头。
请求参数:
form表单post请求
access_token:AT-98-kkxRFRAp7JP4HvKcooOlTjqEslglCNoU
url get请求
https://sid.rghall.com.cn/oauth2.0/profile/multiple?access_token=AT-98-kkxRFRAp7JP4HvKcooOlTjqEslglCNoU
参数说明:
参数 | 是否必须 | 说明 |
---|---|---|
access_token | 是 | 访问令牌 |
返回结果(主任和组长多身份为例):
{
"id": "18616612569",
"users": [
{
"DQZTM": "在任",
"DWH": "网络信息与综合服务中心",
"DWM": "306000",
"GH": "0220221356",
"PRZWMC": "主任",
"SFLBDM": "01",
"XBM": "男性",
"XM": "xxxx",
"TEL": "18616612569",
"SFLBMC": "xxx"
},
{
"DQZTM": "在任",
"DWH": "网络信息与综合服务中心",
"DWM": "306000",
"GH": "T001",
"PRZWMC": "组长",
"SFLBDM": "01",
"XBM": "男性",
"XM": "xxxx",
"TEL": "18616612569",
"SFLBMC": "xxx"
}
]
}
参数说明:
参数 | 说明 |
---|---|
id | 用户认证时使用的ID |
users | 用户属性列表 |
XM | 姓名 |
XBM | 性别 |
SFLBDM | 身份类别代码 |
GH | 工号 |
PRZWMC | 职位名称 |
DWM | 单位名 |
DWH | 单位号 |
DQZTM | 当前状态 |
ZWJBMC | 职务级别名称 |
SFLBMC | 身份类别名称 |
TEL | 手机号 |
4、使用刷新令牌获取access_token
通过刷新令牌获取access_token。
请求⽅式: GET/POST(HTTPS或HTTP),在安全要求情况下,请使用POST请求,通过https对传输加密。
请求地址: http://sso.xxx.example.com/oauth2.0/accessToken
注:https方式类似。
请求头(header):
Content-Type:form-data
注:使用get请求时,不用添加请求头。
请求参数:
form 表单post请求
grant_type:refresh_token
client_id:oauthtest
client_secret:9aggRf1kk0tSM28X-Fmo972aTkHt5hni2yXQH3IbBtx8cM-yGeSBItw6ASePAB0O
refresh_token:RT-3-45I95UgqIOiBzM7EUrBQfdA74wDbYIal
url get请求
https://sid.rghall.com.cn/oauth2.0/accessToken?grant_type=refresh_token&client_id=oauthtest&client_secret=9aggRf1kk0tSM28X-Fmo972aTkHt5hni2yXQH3IbBtx8cM-yGeSBItw6ASePAB0O&refresh_token=RT-3-45I95UgqIOiBzM7EUrBQfdA74wDbYIal
参数说明:
参数 | 是否必须 | 说明 |
---|---|---|
grant_type | 是 | 固定为refresh_token |
client_id | 是 | 应用id |
client_secret | 是 | 应用秘钥 |
refresh_token | 是 | 刷新令牌 |
返回结果:
{
"access_token": "AT-1-IWyhZhU1hKKvWPddAJpdHRN2ECu08Ypo",
"token_type": "bearer",
"expires_in": 28800
}
参数说明:
参数 | 说明 |
---|---|
access_token | 访问令牌 |
token_type | 令牌类型 |
expires_in | 令牌有效期 |
三、客户端模式
该模式的授权流程为:
1、获取access_token。
1、获取access_token
获取access_token。token闲置两个小时会失效
请求⽅式: GET/POST(HTTPS或HTTP)在安全要求情况下,请使用POST请求,通过https对传输加密。
请求地址: http://sso.xxx.example.com/oauth2.0/accessToken
注:https方式类似。
请求参数:
form表单post请求
grant_type:client_credentials
client_id:oauthtest
client_secret:9aggRf1kk0tSM28X-Fmo972aTkHt5hni2yXQH3IbBtx8cM-yGeSBItw6ASePAB0O
url get请求
请求示例:
https://sid.rghall.com.cn/oauth2.0/accessToken?grant_type=client_credentials&client_id=oauthtest&client_secret=9aggRf1kk0tSM28X-Fmo972aTkHt5hni2yXQH3IbBtx8cM-yGeSBItw6ASePAB0O
参数说明:
参数 | 是否必须 | 说明 |
---|---|---|
grant_type | 是 | 客户端模式,这里固定为client_credentials |
client_id | 是 | 应用id |
client_secret | 是 | 应用秘钥 |
scope | 否 | 权限列表,以空格分隔 |
返回结果:
{
"access_token": "AT-1-IWyhZhU1hKKvWPddAJpdHRN2ECu08Ypo",
"token_type": "bearer",
"expires_in": 28800
}
参数说明:
参数 | 说明 |
---|---|
access_token | 访问令牌 |
token_type | 令牌类型 |
expires_in | 令牌有效期 |
四、单点登出
登出地址为/logout。
请求⽅式: GET(HTTPS或HTTP)
请求地址: http://sso.xxx.example.com/logout
注:https方式类似。
当需要实现登出后重新登录,自动跳转到对接应用时,可以在登出地址后携带service参数,例如:
http://sso.xxx.example.com/logout?service=http://192.168.54.63:8080/user/index ```
参数说明:
参数 | 是否必须 | 说明 |
---|---|---|
service | 否 | SID要跳转的地址 |