JSON Web Token(JWT)机制学习

本文介绍了JSON Web Token(JWT)的原理和工作流程,详细阐述了JWT如何解决传统身份认证中的问题,如无状态、跨域资源共享(CORS)和跨站请求伪造(CSRF)攻击。内容包括JWT的构成部分(header、payload和signature)、数据结构以及JWT在用户身份验证和数据交换中的应用。同时,文章还探讨了JWT的安全性和使用中应注意的问题,给出了使用JWT的建议。
摘要由CSDN通过智能技术生成

零、先从传统身份认证说起

HTTP是一种无状态的协议,也就是它并不知道谁是访问应用。把用户看成是客户端,客户端使用用户名还有密码通过了身份认证,不过下回这个客户端再发送请求的时候,服务端还得再验证一下,这就很麻烦。

对于这个情况的解决方法是:
当用户请求登录的时候,如果没有问题,我们在服务器端生成一条记录,这个记录里可以说明一下登录的用户是谁,然后把这条记录的ID号发送给客户端,客户端收到以后把这个ID号存储在cookie里,下次这个用户再向服务器发送请求的时候,可以带着这个cookie,这样服务端会验证一个这个cookie里的信息,看看能不能在服务器端这里找到对应的记录,如果可以,说明用户已经通过了身份验证,就把用户请求的数据返回给客户端。

其实这个解决方法就是session,我们需要在服务端存储为登录的用户生成的session,这些session可能会存储在内存、磁盘或者数据库里。我们需要定期清理过期的session。

这种传统身份认证的问题是:

  1. Session:每次认证用户发起请求时,服务器需要去创建一个记录才存储信息。当越来越多的用户发请求时,内存的开销也会不断增加。
  2. CORS(跨域资源共享):当我们需要让数据跨多台移动设备上使用时,跨域资源的共享会是一个问题。在使用Ajax抓取另一个域的资源,就可以会出现禁止请求的情况。
  3. CSRF(跨站请求伪造)攻击:用户在访问银行网站时,他们很容易受到跨站请求伪造的攻击,并且能够被利用其访问其他的网站。

一、To

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值