Skip to main content

一、认证流程

平台基于OAuth 2.0授权流程具体授权流程如下:

  • 用户访问客户端,客户端通过用户代理向认证服务器请求授权码

  • 用户同意授权

  • 认证服务器通过用户代理返回授权码给客户端

  • 客户端携带授权码向认证服务器请求访问令牌(token)

  • 认证服务器返回访问令牌

  • 通过访问令牌获取用户信息

二、概念介绍

appKey和appSecret

appKey:应用的唯一标识。在OAuth2.0认证过程中,appKey的值即为oauth_consumer_key的值。

appSecret:appKey对应的密钥,访问用户资源时用来验证应用的合法性,在OAuth2.0认证过程中,appSecret的值即为oauth_consumer_secret的值。

code

即临时令牌。当用户在平台访问应用前,需对应用进行授权,用户授权后,应用方可访问用户的隐私数据。用户在完成授权之后,会跳转到redirect_uri,并带上临时令牌code。

code为一次性令牌,有效期为5分钟。

access_token

在获得code后,通过调用平台后台接口来获取access_token。

redirectUri

应用对应的回调地址,在OAuth2.0认证中会对回调地址和应用地址进行校验。

三、认证接口

1、统一认证接口

基本信息

接口名称:统一认证接口

接口说明:应用发起授权到认证中心认证

请求地址:${BASEURL}/login/oAuthLogin.html

请求类型:GET

接口版本:1.0

修改日期:2023-11-21

请求参数

响应参数名称响应参数类型是否有值说明
grant_typeString授权模式,固定传authorization_code
response_typeString返回类型,固定传code
appkeyString平台唯一标识
stateString客户端填写随机串
redirect_uriString回调地址,需要URL编码

传参示例:https://third.sso.com/login/oAuthLogin.html?grant_type=authorization_code&response_type=code&appkey=mi46ro0bts&state=1234&redirect_uri=https://your_redirect_uri

响应结果

跳转到回调地址并带上code:https://your_redirect_uri?code=xxxx

2、获取授权令牌接口

基本信息

接口名称:获取token接口

接口说明:根据code换取token令牌信息

请求地址:${BASEURL}/loginserv/oauth/connect/token

请求方式:POST

请求类型:application/x-www-form-urlencoded

接口版本:1.0

修改日期:2023-11-21

请求参数

参数名数据类型是否必填说明
codeString由认证中心颁发的code,使用一次即销毁,有效期5分钟
grant_typeString授权模式,固定传authorization_code
appKeyString平台唯一标识
appSecretString平台唯一密钥

响应结果

{
"code": 0,
"status": "success",
"result": {
"access_token": "u6QRG05UgJkNHUYMn4zgh6R1dPNMBpTdvDI0jfEV5Ssgjxzc6g8WTYZlpAYj",
"refresh_token": "l6C7Yqcl21oJ4HgxKHjvE1oQosuLZZN6PPEEelN9zLiTB4UYh6mNho1XK5gN",
"expires_in": 300
}
}

3、刷新令牌信息

基本信息

接口名称:刷新令牌信息

接口说明:通过refresh_token获取access_token

请求地址:${BASEURL}/loginserv/oauth/refresh

请求方式:POST

请求类型:application/x-www-form-urlencoded

接口版本:1.0

修改日期:2023-11-21

请求参数

参数名数据类型是否必填说明
grant_typeString授权模式,固定传refresh_token
appKeyString平台唯一标识
appSecretString平台唯一密钥
refresh_tokenString刷新token

响应结果

{
"code": 0,
"status": "success",
"result": {
"access_token": "LB27efvoV2qbeJyCWcqBYvQw19yQ7sl8ssy8CwRtQMSeRyNupq19AYpnVIpT",
"refresh_token": "Do8npNQAJWKEg3gQ8ECs8wZ0j71cBGNuv0DHn1ArqY6Lo2ThE9LiR9ZKFKT9",
"expires_in": 300
}
}

4、获取用户信息

基本信息

接口名称:刷新令牌信息

接口说明:通过refresh_token获取access_token

请求地址:${BASEURL}/loginserv/oauth/userinfo

请求方式:GET

请求头:Authorization={access_token}

接口版本:1.0

修改日期:2023-11-21

小提示【重要!】

请求接口权限,两种方式皆可:

1、Headers设置为Authorization={access_token}

2、API接口地址添加${BASEURL}?access_token={access_token}

请求参数

参数名数据类型是否必填说明
access_tokenString访问令牌

响应结果

参数名类型约束描述
userNameString必须用户账号
userIDLong必须用户主键
genderString非必须性别:男、女
cellPhoneString非必须手机号码
nameString必须用户姓名
schoolIDString必须学校编码
schoolNameString必须学校名称
rolesString必须用户角色,角色信息参照附录

教师返回结果

{
"code": 0,
"status": "success",
"result": {
"code": "0",
"userInfo": {
"userName": "15410170002",
"userID": "LUNiqCx+bTE4iAnG+UUi55A==",
"gender": -1,
"cellPhone": "15410170002",
"name": "老师2",
"schoolID": "C69M7f/iDwqNeWb701Dkng==",
"schoolName": "懂你升级学校7",
"roles": "SchoolAdmin"
},
"message": "获取成功"
}
}

学生返回结果

{
"code": 0,
"status": "success",
"result": {
"code": "0",
"userInfo": {
"userName": "10170001",
"userID": "Ld0C8tjAHFDOLHgFOIJmOGg==",
"gender": 1,
"cellPhone": "15610170001",
"name": "等哈1",
"gradeID": "1012023",
"gradeName": "高一",
"classID": "1",
"className": "1班",
"schoolID": "C69M7f/iDwqNeWb701Dkng==",
"schoolName": "懂你升级学校7",
"roles": "Student",
"extraField1": "",
"extraField2": "",
"extraField3": "10170001"
},
"message": "获取成功"
}
}