基于Token的Bladex的单点登录

之前写的系统采用的单点登录集成了springbootsecurity模块实现单点登录,主要将session存储在redis中,解决了分布式微服务不同服务器之间的session共享问题,现在有了更好的方式实现这一功能,就是使用JWT-json web token来实现单点登录

总所周知,服务器是无状态的,在一次会话中,服务器如何获取会话对象的身份至关重要,一般来说,以往的技术使用session将用户的登录信息存储在服务器端,在用户登陆后将session-id传给用户,用户再访问时通过session-id来获取用户的身份信息,这在以往的项目中还是比较好使的,但是这也带来了一个问题-----session存储在服务器端给服务器带来了压力,同时session也不能有效支持服务器集群。
使用cookie可以将用户的身份信息存储在浏览器端,但无法避免认为篡改cookie数据,导致这一不安全的方式一般只用来存储一些不关键信息

什么是token?

1、Token的引入:Token是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,在这样的背景下,Token便应运而生。

2、Token的定义:Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。

3、使用Token的目的:Token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。

Token

1、用户第一次登录,服务器通过数据库校验其UserId和Password合法,则再根据随机数字+userid+当前时间戳 再经过DES加密生成一个token串

2、Token是在服务端产生的。如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回Token给前端。前端可以在每次请求的时候带上 Token 证明自己的合法地位

3、token的生成一般是采用uuid保证唯一性,当用户登录时为其生成唯一的token,存储一般保存在数据库中。token过期时间采用把token二次保存在cookie或session里面,根据cookie和session的过期时间去维护token的过期时间。

4、Token,就是令牌,最大的特点就是随机性,不可预测。一般黑客或软件无法猜测出来。
在这里插入图片描述

使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录(只保留用户签名过程中的加密算法和密钥即可)。

token的组成
token串的生成流程。
token在客户端与服务器端的交互流程
Token的优点和思考

JWT token的组成

头部(Header),格式如下:
{
“typ”: “JWT”,
“alg”: “HS256”
}
由上可知,该token使用HS256加密算法,将头部使用Base64编码可得到如下个格式的字符串:

eyJhbGciOiJIUzI1NiJ91

有效载荷(Playload):
{
“iss”: “Online JWT Builder”,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值