最近学了一点token解析方面的东西,记录一下
jwt:json web token
如下图,是一张前端调用后端的请求头
其中Authorization中存的就是token了,他由三部分组成,每部分之间隔着一个点,结构是:请求头(采用了什么加密协议).请求信息(业务信息,包括登录人的id,权限,时间戳以及自己想存进来的任何东西).key信息(秘钥)
因此我们可以得知,每次登陆的时候,第一段信息一定是相同的(因为加密方式都是一样的嘛),第二段信息是不同的,因为时间戳是变化的,第三段信息我还不清楚,按理来说每次都是用一个key,应该是一样的呀,事实上每次重新登录后第三段都是变化的,这里初步估计是不是拼接了不同的字符串。
下图是我这段token的解析信息:
我这里加密方式是HS256,所以红字每次都是一样的,紫字的exp和iat是时间戳,所以每次都是变化的。蓝字是我随机设置的秘钥(aaa)
补充一下token解析的流程:前端登录的时候发送账号密码给后端,后端验证,通过后生成这么一个token传给前端,前端也不管这是啥玩意,每次管后端要东西的时候就傻乎乎的拿着这个token:“看,这是你给我的token,我登陆过了!”后端验证一下发现这个token确实是自己给的,于是就把token里的部分信息(用户id)取出来用于业务处理,把结果返还给前端(我看网上的帖子说时间戳要更新的,可能是要重新生成并返回一个新的token给前端??待验证)
继续记笔记
关于鉴权,负载均衡,集群和注册中心,看下图:
网上偷的一张图
左边三个用户去访问一个接口,会经过网关,网关会先鉴权(token?)然后把这个请求根据从注册中心拿的地址发送到不同的集群的服务(负载均衡)(热部署?),不同的集群执行代码里的业务逻辑,从注册中心拿地址调用最右面的service,将结果返回给用户。