随笔-JWT-JWT技术初级

发布时间 2023-07-16 13:46:36作者: licion

问题:在退出登录后(广义场景)在未重新登录的情况下仍能进入界面,用户数据保密问题没有解决。

分析问题:需要进行登录校验(即当服务端接收到请求后,首先要将请求进行校验,如果已经登录,则正常访问,没有则返回错误结果)


如何实现(会话技术,统一拦截技术):1.在登录成功后将登录成功的信息在一个地方储存起来。
2.在服务器发起请求后,拦截所有发起的请求,并和之前的的登录成功的信息进行比对。如果成功则继续访问,失败则不允许访问。
会话技术详解:会话指的就是浏览器与服务器之间的一次连接,我们就称为一次会话。在浏览器和服务器都没有关闭的情况下,无论其中有多少请求和相应,都算是一次会话。

会话跟踪技术:

https://www.cnblogs.com/zwscode/p/14284071.html

两种技术的优缺点:

  • 优点:HTTP协议中支持的技术(像Set-Cookie 响应头的解析以及 Cookie 请求头数据的携带,都是浏览器自动进行的,是无需我们手动操作的)
  • 缺点:
    • 移动端APP(Android、IOS)中无法使用Cookie
    • 不安全,用户可以自己禁用Cookie
    • Cookie不能跨域(?)
      跨域
  • 协议
  • IP/协议
  • 端口
    只要上述的三个维度有任何一个维度不同,那就是跨域操作
    session基于cookie,所以优缺点基本一致,不同为Session是存储在服务端的,安全,而且无法部署于负载均衡服务器(Nginx),因为服务器不同,session无法识别。

现在使用的技术 令牌技术:

每次访问时都会携带一个令牌,如果一致则允许访问,反之则不允许。
缺点:不是HTTP协议支持的技术,校验,传递,生产需要自己实现
优点:

  • 支持PC端、移动端

  • 解决集群环境下的认证问题

  • 减轻服务器的存储压力(无需在服务器端存储)
    JWT令牌技术详解
    JWT全称:JSON Web Token,jwt就是将原始的json数据格式进行了安全的封装,这样就可以直接基于jwt在通信双方安全的进行信息传输了。
    JWT的组成: (JWT令牌由三个部分组成,三个部分之间使用英文的点来分割)

  • 第一部分:Header(头), 记录令牌类型、签名算法等。 例如:

  • 第二部分:Payload(有效载荷),携带一些自定义信息、默认信息等。 例如:

  • 第三部分:Signature(签名),防止Token被篡改、确保安全性。将header、payload,并加入指定秘钥,通过指定签名算法计算而来。
    签名的目的就是为了防jwt令牌被篡改,而正是因为jwt令牌最后一个部分数字签名的存在,所以整个jwt 令牌是非常安全可靠的。一旦jwt令牌当中任何一个部分、任何一个字符被篡改了,整个令牌在校验的时候都会失败,所以它是非常安全可靠的。

JWT根据base64进行再编码(非加密),所以返回一个长字符串。
原理:登录接口被访问后生成一个JWT令牌,在每一次访问是都会携带这个令牌,进入统一拦截后进行校验令牌,通过则继续使用。

使用方法:
1.依赖注入

io.jsonwebtoken jjwt 0.9.1

2.调用工具类生成(工具类:Jwts.build)

3.解析Jwts.parser()
详细方法可以使用已经调用的工具类