
其中,在所有的服务设计中,都不可避免的涉及到Token的设计。
目前,基于Token的生成方,我们把Token生成分为两种类型。
1、基于用户/网站,可见的加密请求方式
2、基于服务器间通讯的不可见加密请求方式(API Token)
其中,基于非服务器端的请求,我们要根据实际的应用场景进行一定的自定义加工。
在本次讨论中我们把非服务的请求分为了两部分。
两种请求中:
1、非登录态请求要求用户访问页面时会随机生成唯一且有时效性的token,该token在每次请求时都是不同。改方法用于当不需要登录界面的请求多且无法使用静态页面的时候使用,Token会在一定的时间内失效,以此来防止被机器爬取不需登录的界面
2、登录状态中,token会保存一定的时间,页面中的token会作为用户身份识别,同时登录态的Token需要利用session和页面信息来防止被利用。
虽说两者作用有一定的区别,但是实现的原理是相同的。
登录态的Token一般在用户登录之后由服务器产生,并保存在浏览器中,过期时间较长,用于保存用户的登录状态。
同时,我们也可以在该Token中加入一定的校验元素,例如浏览器信息,ip,获取是Cookies
如果对时效性较强的页面登录访问,我们可以加入session的校验,设置session的有效时间,能够实现自动退出的校验功能。
TimeStamp用来校验Token的生成时间。
同时,你用redis的Hset可以实现多点登录和单点登录的功能。
服务端验证Token:
在常规的API Token体系中,我们常使用短时过期Token(Oauth Token除外)。
通常 APIToken 是使用非对称加密来实现token的生成,但是世界生产中,Token 的秘钥会简化成app_id,app_key等简单的加盐参数,不过只要秘钥保存合理,Token基本无法被破解。
该Token方式要求每次请求都需要生成新的token来确保请求的时效性。
另外:为了加强API接口请求的完整性,我们也会对请求内容进行字段排序后摘要验证。(详情参考: https://open.taobao.com/docV2.htm?docId=101617&docType=1 )
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)