web会话跟踪token&JWT

在web前端与后端的交互过程中,后端如何知道是哪个用户在此进行操作?为什么后端不知道是哪个用户请求的?因为http请求是无状态的(请求--响应的模式),请求中没有能识别对方身份的标识,可以认为每次请求是独立的。 那么我们在实际开发中就需要解决这个问题,每次向后端发送请求时,需要让后端知道,是哪个用户发送的。 这个实现的功能称为web会话跟踪技术。在现在的会话跟踪中, 基于token的会话跟踪技术 在之前还有一种基于HttpSession的会话技术
摘要由CSDN通过智能技术生成

 在web前端与后端的交互过程中,后端如何知道是哪个用户在此进行操作?
 为什么后端不知道是哪个用户请求的?

 因为http请求是无状态的(请求--响应的模式),请求中没有能识别对方身份的标识,可以认为每次请求是独立的。
     
       那么我们在实际开发中就需要解决这个问题,每次向后端发送请求时,需要让后端知道,是哪个用户发送的。
       
这个实现的功能称为web会话跟踪技术。

在现在的会话跟踪中,  基于token的会话跟踪技术  在之前还有一种基于HttpSession的会话技术。说起token就不得不要说起JWT了。

JWT

Json web token(JWT),是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。定义了一种简洁的,自包含的方法用于通信双方之间以JSON对象的形式安全的传递信息。因为数字签名的存在,这些信息是可信的,JWT可以使用HMAC算法或者是RSA的公私秘钥对进行签名。

基于token的鉴权机制

       基于token的鉴权机制类似于http协议也是无状态的,它不需要在服务端去保留用户的认证信息或者会话信息。这就意味着基于token认证机制的应用不需要去考虑用户在哪一台服务器登录了,这就为应用的扩展提供了便利。

流程上是这样的,如下图。

1. 用户使用账号和密码发出post请求;
2. 服务器使用私钥创建一个jwt;
3. 服务器返回这个jwt给浏览器;
4. 浏览器将该jwt串在请求头中像服务器发送请求;
5. 服务器验证该jwt;
6. 返回响应的资源给浏览器。

JWT的主要应用场景

身份认证在这种场景下,一旦用户完成了登陆,在接下来的每个请求中包含JWT,可以用来验证用户身份以及对路由,服务和资源的访问权限进行验证。由于它的开销非常小,可以轻松的在不同域名的系统中传递,所有目前在单点登录中比较广泛的使用了该技术。 信息交换在通信的双方之间使用JWT对数据进行编码是一种非常安全的方式,由于它的信息是经过签名的,可以确保发送者发送的信息是没有经过伪造的。

优点

1.简洁(Compact): 可以通过URLPOST参数或者在HTTP header发送,因为数据量小,传输速度也很快
2.自包含(Self-contained):负载中包含了所有用户所需要的信息,避免了多次查询数据库
3.因为Token是以JSON加密的形式保存在客户端的,所以JWT是跨语言的,原则上任何web形式都支持。
4.不需要在服务端保存会话信息,特别适用于分布式微服务。

JWT的构成

 JWT是由三段信息构成的,将这三段信息文本用.链接一起就构成了token字符串。就像这样:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

第一部分我们称它为头部(header),第二部分我们称其为载荷(payload, 用户的信息),第三部分是签证(signature).

第一部分

header

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值