Token流程是什么?
Token
Token是服务端生成的一串字符串,可以看做客户端进行请求的一个令牌,客户端在请求网络上某些资源的时候,必须带着这块令牌(通行证)。
当客户端第一次访问服务端,服务端会根据传过来的唯一标识userId,运用一些加密算法,生成一个Token,客户端下次请求时,只需要带上Token,服务器收到请求后,会验证这个Token。
有些公司会建设统一登录系统(单点登录),客户端先去这个系统获取Token,验证通过再拿着这些Token去访问其他系统;API Gateway也可以提供类似的功能,我们公司就是这样,客户端接入的时候,先向网关获取Token,验证通过了才能访问被授权的接口,并且一段时间后要重新或者Token。
基于Token的认证流程客户端使用用户名、密码做身份验证;
服务端收到请求后进行身份验证;(也可能是统一登录平台、网关)
验证成功后,服务端会签发一个Token返回给客户端;
客户端收到Token以后可以把它存储起来;每次向服务端发送请求的时候,都要带着Token;
Token会有过期时间,过期后需要重新进行验证;
服务端收到请求,会验证客户端请求里面的Token,验证成功,才会响应客户端的请求;
Token过期时间及超时刷新策略因为Token是访问资源的凭证,所以必须要有过期时间。否则一次认证通过就可以永久使用资源,那么认证功能也就失去了意义,所以Token需要有过期时间。
Token的过期时间很容易甚至,在生成Token的元素中,增加时间戳即可;然后在验证过程中,判断是否超时;Token的超时时间不宜过长,也不宜过短,我们项目设置的是1个小时。
Token过期之后,需要重新获取,一种方式是重新来一遍获取Token的过程(比如重新登录),这种做法实现起来简单,但是用户体验不好;另外一种主动刷新Token,在过期后自动续约,或者定时任务定期去刷新Token,以保持Token始终在有效期内;我们现在采用被动的方式获取和更新Token。
希望我的回答,能够帮助到你!我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有