美文网首页接口开发
与第三方系统交互-令牌AccessToken机制

与第三方系统交互-令牌AccessToken机制

作者: 江江原点 | 来源:发表于2019-03-23 15:32 被阅读0次

传统Web应用中,前后端并不分离,用户登录后在服务端会话中保存用户的AccessToken并为用户在服务器端开辟存储与资源空间(就像一个小房间一样,而AccessToken就像房间的钥匙),并把此AccessToken发送给前端浏览器,浏览器通过Cookie的方式保存起来,浏览器每次请求均携带此AccessToken,请求到达后服务端根据此AccessToken来识别具体的用户用户空间,并访问用户的存储和权限等资源。

平台系统对外提供API时,目前主流的做法是采用RESTful风格的接口服务,对所有来访的端均一视同仁,无论是App端、PC端、微信小程序端、硬件端还是前后端分离的前端,这样开发一套API就可以服务所有的端用户。

在前后端分离的架构模型中,是没有“自动”化的机制完成AccessToken的回传与检验的,这部分工作要由我们自己手动来完成。

端是对用户GUI界面的统称,此处意指APP、微小小程序、微信公众号、PC、第三方系统、智能设备等,下同。

第三方访问凭据

平台为第三方维护基本信息,其中包含了两个重要的数据字段AppId和AppSecret,其中AppId和平台本地用户的登录名是起相同的作用,它用来唯一的标识一个第三方合作单位;而AppSecret和平台本地用户的登录密码是起相同的作用,它是一个密钥或者叫密码。


用户表.png
合作机构表.png

登录与令牌

如果是平台本地用户,用户在端界面输入登录名或密码及验证码后,提交至平台服务端,经过重重验证机制后获取一个AccessToken和过期时间保存在本地,调用接口时传入AccessToken即可。

如果是第三方合作平台,通过调用指定的接口并传入AppId和AppSecret,直接换取一个AccessToken令牌和过期时间保存在本地,调用接口时传入AccessToken即可。

服务端生成用户的访问令牌(可以是一个GUID),并在库中查询出该用户的权限列表信息,然后将用户信息、登录时间、过期时间、权限列表有组织的入库(防止服务器断电或异常造成的令牌信息丢失),然后在缓存中也保存一份儿(键名就是生成的真实的Token)。


登录.png

用户与服务器正常的交互,仅访问缓存中令牌信息;服务器启动时,扫描库中未过期的令牌信息并读入缓存,同时将过期的令牌信息清除掉;订阅捕获缓存失效移除事件,将库中对应的令牌清除掉;设立定时器,定期扫描库中的令牌信息,移除过期的令牌。


定时器.png

令牌安全性

令牌是开放的,有可能被恶意用户伪造篡改,从而访问到其他用户的资源信息(虽然这种机率非常小),因此必须引入签名机制。

服务器端生成令牌后,将令牌通过服务端的私钥进行签名,然后组合出来一个复合令牌,令牌的格式为:真实令牌|过期时间|签名串,发送给端的令牌其实是这个复合令牌。


令牌安全.png

令牌检验

定义一个过滤器,统一对令牌进行拦截处理,在此过滤器中主要做两件事情:1.验证令牌是否存在,不存在就直接返回错误信息;2.验证令牌是否过期,如果过期就移除缓存和库中的数据


验证令牌.png

令牌的续期

对于平台本地用户,用户每次使用令牌访问接口时,通过重重验证后,重置用户令牌的有效期,例如而默认令牌有效期是20分钟,用户9点登录成功,在9点10分做了一次操作访问了一次接口,原本用户的令牌再有15分钟就会自动失效,由于用户做了一次合法的接口调用,此时令牌重置回20分钟。


刷新令牌.png

对于第三方合作平台,为了保证安全性,令牌是不会自动续期的,需要第三方自行注意过期时间并在适当时间刷新令牌,刷新令牌时每次都会生成一个新令牌替换掉旧令牌。

对于平台本地用户,令牌有效期比较短,一般设为20分钟即可(1200秒);对于第三方合作平台,令牌有效期稍长一些,一般设为2个小时(7200秒)。

通信安全性

对所有接口施加CA证书,开启https通信协议,在协议层面对数据加密防止信息泄露

相关文章

  • 与第三方系统交互-令牌AccessToken机制

    传统Web应用中,前后端并不分离,用户登录后在服务端会话中保存用户的AccessToken并为用户在服务器端开辟存...

  • XXL-MQ v1.2.2 发布,分布式消息队列

    Release Notes 1、访问令牌(accessToken):为提升系统安全性,消息中心和客户端进行安全性校...

  • XXL-REGISTRY v1.0.1 发布,分布式服务注册中心

    Release Notes 1、访问令牌(accessToken):为提升系统安全性,注册中心和客户端进行安全性校...

  • 总结一下项目中的框架

    注解:AccessToken: 一个访问令牌包含了此登陆会话的安全信息 RequestToken: (请求令牌)...

  • OAuth2.0

    1、主动式:提前存好令牌(access token)的过期时间(令牌过期时间=获得accesstoken的时间+过...

  • Windows提权入门

    一、访问令牌伪造 基础知识 windows系统中存在以下两种令牌: 授权令牌Delegate Token:用于交互...

  • OAuth2-RFC 6749 学习笔记

    【目录】 OAuth2 框架模型AccessToken:访问令牌RefreshToken:刷新领牌OAuth Sc...

  • OAuth OAuth2

    翻了几篇子 认证 csdn 一个模样 连错误都一样 《用访问令牌到授权服务器换取访问令牌(accesstoken...

  • iFrame 创建容器

    用于应用平台,集成第三方系统,或者多个不同部门团队下的系统 注意事项: 1、管理应用机制2、应用通讯机制 加载机制...

  • IdentityServer4 第三部分 主题 第38章 刷新令

    第38章 刷新令牌 由于访问令牌的生命周期有限,因此刷新令牌允许在没有用户交互的情况下请求新的访问令牌。 以下流程...

网友评论

    本文标题:与第三方系统交互-令牌AccessToken机制

    本文链接:https://www.haomeiwen.com/subject/njesvqtx.html