1.单点Session
通过判断用户是否有服务器赋予的session_id,点对点服务器的用户信息,确认用户身份
缺点: 单点性能压力大无法扩展,如果是分布式的话,其他的服务怎么进行认证呢?
2.Redis解决共享问题
我们可以将session的认证信息(多个服务session肯定是不一样的,毕竟服务器都不一样了),我们可以放到Redis 中——>来保证Session共享数据信息;
3.token
利用Token结合用户的唯一标识生成一个唯一id(作为用户凭证),**(作为key,value为用户信息)**放到Redis中,当用户进行登录的时候,对token进行解析,如果redis中取不到数据就失败,否则就成功——>相当于在服务上面盖了一层redis作为全局的一种体现
**区别:**客户端保存token,根据用户输入的用户密码生成token(比如JWT生成的),然后生成的token去校验如果符合要求就过(体现的就是无状态);
https://blog.csdn.net/weixin_57128596/article/details/127977743?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167008184216800182797478%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=167008184216800182797478&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogfirst_rank_ecpm_v1~rank_v31_ecpm-1-127977743-null-null.nonecase&utm_term=RSA&spm=1018.2226.3001.4450
打算用RSA做token加密
4.SSO模式
压力全部来到认证中心,去任意一个服务都要认证,全局的认证是Redis缓存的,查询用户先去缓存中看是否存在
JWT令牌组成
**Header:**里面是放类型的,一般JWT类型,可以设置加密的算法(非对称加密等等)
**PAYLOAD:**一般是放数据
签名哈希:本质利用的base64编码方案进行编码——>只是对数据进行编码,所以我们的数据不能暴露(紫色那部分)
https://blog.csdn.net/aozeahj/article/details/52507352
JWT的用法
我们一般是将token放在header或者body中不然会因为跨域的问题,后端无法接收(Cookie)
5.JWT的问题趋势
令牌类型
**1.透明令牌:**随机生成字符串标识符,没有包含认证信息
**2.自包含令牌:**里面包含认证信息