用户认证-三种单点登录算法的比较

一般用于跨域身份验证

第一种:共享Session

在很早之前,技术栈没那么丰富,并发量没有那么高的时候,采用的方法.
做法是将用户认证Token存到Session中,再将Session存到Redis中,让Redis作为一个Session连接池.业务模块需要用户验证的时候就将此时自己Session中的Token和Redis中的Token做一对比.如果相同,则验证成功.
但是,将Token放进Session,又将Session放进Redis,有点多此一举,为什么不直接将信息放进Redis呢?

第二种:将Token放入Redis存储

有了以上方案,我们想,直接把Token放进Redis会好一点,于是就将用户信息的Token放入Redis.让业务模块需要用户验证的时候直接在Redis中取Token.但同时带来了另一个问题,就是每一次业务模块验证时,都需要开db的连接,在高并发的情况下是十分不安全的,容易让Redis挂掉,我们想有没有一种方式能不通过连接数据库的方式来进行用户验证呢.

第三种:JWT(JSON Web Token)

这是一种将Token存进内存中的操作,通过用户自定义的一个加密算法(算法中需要包含用户的ID认证信息),加密用户信息,生成一个Token存入内存中,此时使用jar包的形式让服务端通过解密算法得到Token中的内容进行验证.
通过加密-解密的操作,避免了每次都去开db的连接,这样就直接免去了多次访问db有可能会造成的风险.
不过我们有时也会把Token存进Redis中,以省去解密的过程.

一个JWT由三部分组成 公有部分,私有部分,签名部分 最后由这三者组合进行base64编码得到JWT

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值