2020-09-17

余生长醉 提交于 2020-10-06 01:28:38

                                                                               统一身份认证OAuth2

 

前置条件

在进行统一身份认证OAuth2.0授权登录接入前,在统一身份认证服务平台注册应用,并对该应用提请接入审核,当拥有一个已审核通过的应用,并获得相应的appidappsecret后,申请统一认证登录且审核通过后,才可以开始接入流程。

授权说明

统一身份认证OAuth2.0授权登录让统一认证用户使用统一认证身份安全登录第三方应用,在统一认证用户授权登录已接入统一认证OAuth2.0的第三方应用后,第三方可以获取到用户的接口调用凭证access_token,通过access_token可以进行统一身份认证开放平台授权接口调用,从而可实现获取统一身份认证用户基本开放信息和帮助用户实现基础开放功能。

统一身份认证OAuth2.0授权登录目前支持authorization_code模式,适用于拥有server端的应用授权。模式整体流程步骤如下图所示:

 

                                                                   图 access_toke操作流程图

 

                                                                     图 access_token获取时序图

​​​​​​​请求code

第三方使用网站应用授权登录前请注意已获取相应网页授权接口,可以在PC端打开以下链接:

http://ca.xxx.edu.cn/oauth/connect/appauth.do

?appid=APPID

&redirect_uri=REDIRECT_URI

&scope=SCOPE

&state=STATE

 

接口地址

http://ca.xxx.edu.cn/oauth/connect/appauth.do

接口参数

是否必填

参数类型

参数说明

appid

字符串

应用唯一标识

redirect_uri

字符串

重定向地址,需要进行UrlEncode

response_type

字符串

code

scope

字符串

网页应用目前仅填写web_login即可,用户注销或安全退出回到登录时填写web_logout

state

字符串

用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止CSRF攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为动态变化的随机数,并加上session进行校验

返回结果

若提示该链接无法访问,请检查参数是否填写正确,如redirect_uri的域名与应用申请审核时填写的授权域名是否一致或scope是否正确。

用户登录授权后,将会重定向到redirect_uri的网址上,并且带上codestate参数:redirect_uri?code=CODE&state=STATE

 

示例说明:

登录双创大赛前台页面

http://alumnicy.nju.edu.cn/ndsc/front/login.do

打开后,应用中心会生成state参数,跳转到

http://ca.xxx.edu.cn/oauth/connect/appauth.do

?appid=gh76e77b800pd952be2c8237e200kld

&redirect_uri=http%3a%2f%2falumnicy.nju.edu.cn%2f ndsc%2ffront%2flogin.do

&scope=web_login

&state=929939DFKJS009238KMLPOD99823

用户确认登录后,PC端会跳转到

http://alumnicy.nju.edu.cn/ndsc/front/login.do

?code=8238283sk9090238kls8293sdf923

&state=929939DFKJS009238KMLPOD99823

 

​​​​​​​通过code获access_token

通过code获取access_token

http://ca.xxx.edu.cn/oauth/api/accesstoken.do

?appid=APPID

&secret=SECRET

&code=CODE

&redirect_uri=http%3a%2f%2falumnicy.nju.edu.cn%2fndsc%2ffront%2flogin.do &grant_type=authorization_code

 

接口地址

http://ca.xxx.edu.cn/oauth/auth/accesstoken.do

接口参数

是否必填

参数类型

参数说明

appid

字符串

应用唯一标识

secret

字符串

应用密钥appsecret

code

字符串

填写第一步获取的code参数

redirect_uri

字符串

重定向地址,需要进行urlEncode

grant_type

字符串

authorization_code

return_type

字符串

返回数据格式为json

返回结果

正确的返回:
{
       
       
    "code": "0000",
    "data": {
       
       
        "access_token": "ACCESS_TOKEN",
        "expires_time": "2020-05-10 11:20:49",
        "openid": "OPENID",
        "refresh_token": "REFRESH_TOKEN"
    }
}
错误的返回:
{
       
       
"code":"1001",
"msg":"invalid appid or secret"
}

返回参数

参数说明

access_token

接口调用凭证

expires_time

access_token接口调用凭证到期时间

openid

授权用户唯一标识

refresh_token

用户刷新access_token

 

  • 刷新access_token有效期

access_token是调用授权关系接口的调用凭证,由于access_token有效期(目前为1个小时)较短,当access_token超时后,可以使用refresh_token进行刷新,access_token刷新结果有两种:

1. access_token已超时,那么进行refresh_token会获取一个新的access_token,新的超时时间;

2. access_token未超时,那么进行refresh_token不会改变access_token,但超时时间会刷新,相当于续期access_token

refresh_token拥有较长的有效期(10天),当refresh_token失效的后,需要用户重新授权。

请求方法:获取第一步的code后,请求以下链接进行refresh_token

 http://ca.xxx.edu.cn/oauth/auth/refreshtoken.do

?appid=APPID

&grant_type=refresh_token

&refresh_token=REFRESH_TOKEN

 

接口地址

 http://ca.xxx.edu.cn/oauth/auth/refreshtoken.do

接口参数

是否必填

参数类型

参数说明

appid

字符串

应用唯一标识

grant_type

字符串

refresh_token

refresh_token

字符串

填写通过access_token获取到的refresh_token参数

返回结果

正确的返回:
{
       
       
    "code": "0000",
    "data": {
       
       
        "access_token": "ACCESS_TOKEN",
        "expires_time": "2020-05-10 12:20:49",
        "openid": "OPENID",
        "refresh_token": "REFRESH_TOKEN"
    }
}
 
错误的返回:
{
       
       
"code":"1004",
"msg":"invalid refresh_token"
}

返回参数

参数说明

access_token

接口调用凭证

expires_time

access_token接口调用凭证到期时间

openid

授权用户唯一标识

refresh_token

用户刷新access_token

注意:

1appsecret 是应用接口使用密钥,泄漏后将可能导致应用数据泄漏、应用的用户数据泄漏等高风险后果;存储在客户端,极有可能被恶意窃取(如反编译获取appsecret);

2access_token 为用户授权第三方应用发起接口调用的凭证(相当于用户登录态),存储在客户端,可能出现恶意获取access_token 后导致的用户数据泄漏、用户相关接口功能被恶意发起等行为;

3refresh_token 为用户授权第三方应用的长效凭证,仅用于刷新access_token,但泄漏后相当于access_token 泄漏,风险同上。

​​​​​​​通过access_token调用接口

获取access_token后,进行接口调用,有以下前提:

1. access_token有效且未超时;

2. 应用中心已授权给第三方应用帐号相应接口

 

​​​​​​​基础接口

接口名称

说明

/oauth/auth/accesstoken.do

通过code换取access_tokenrefresh_token

/oauth/auth/refreshtoken.do

刷新或续期access_token使用

/oauth/auth/userinfo.do

获取用户个人信息

 

​​​​​​​返回码说明

返回码

错误码描述

说明

0000

success

请求成功

1001

invalid appid or secret

appid或者appsecret错误

1002

invalid grant_type

授权代码错误

1003

invalid code

用户临时票据无效

1004

invalid refresh_token

无效的刷新令牌

1005

no authority

无权限访问此接口

1006

refresh_token fail

刷新令牌失败或已经超过10

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!