• [JavaWeb]——JWT令牌技术,如何从获取JWT令牌


    🌈键盘敲烂,年薪30万🌈

    目录

    一、前言:

    二、JWT令牌技术

    2.1 概念介绍

    2.2 组成介绍

    2.3 JWT对象介绍

    2.4 JWT生成

    2.5 JWT校验

    三、获取JWT令牌

    四、总结


     

    一、前言:

    • 问题抛出❓

    许多网页都会设置登录界面,我们点击登录会发生什么逻辑?

    假如我登录成功之后直接复制URL地址再次访问是再次登录还是直接访问到页面?

    • 先略知一二👀

    我们登录网页之后,每次点击网页的功能就向服务端发送一次请求,服务端接收请求会校验该请求,如果用户存在,响应请求。 

    • 那是如何校验的呢❓

    用户初次登录服务器,服务器回响一个信息,这个信息就是用来标识用户的,可以是cookie、session,可以是JWT令牌。

    用户再次发送请求,请求头中就会携带标识用户信息,服务器识别该信息,判断是否应该响应此请求。而这个判断的过程有个专业术语叫会话跟踪技术

    📕会话:

    • 用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应。

    📕会话跟踪:

    • 一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器,以便在同一次会话的多次请求间共享数据。
    • 共享数据:是指不用再次执行登录操作就可以访问数据。

    📕会话跟踪方案:

    • 客户端会话跟踪技术:Cookie
    • 服务端会话跟踪技术:Session
    • 令牌技术:JWT

    📕会话跟踪方案对比

    二、JWT令牌技术

    2.1 概念介绍
    • JWT(JSON  Web  Token),用于在通信双方以json数据格式安全的传输信息。由于数字签名的存在,这些信息是可靠的。其实就是通过加密得来的一串字符串。

    2.2 组成介绍

    这就是经过编码加密得到的一个JWT令牌,就是一串字符串


    2.3 JWT对象介绍
    • 头部(Header):1.记录令牌的类型 2.加密算法(例如HMAC、RSA等)。
    • 负载(Payload):携带自定义信息、默认信息,例如{"id", 1, "username", "name"}
    • 签名(Signature):通过加密算法将Header Payload 密钥 加密,防止JWT被篡改

    2.4 JWT生成
    • pom.xml引入jjwt依赖
    • 生成JWT


    2.5 JWT校验

    注意:

    • JWT校验时使用的签名秘钥,必须和生成JWT令牌时使用的秘钥是配套的。
    • 如果JWT令牌解析校验时报错,则说明 JWT令牌被篡改 或 失效了,令牌非法。


    三、获取JWT令牌

    JWT令牌在请求头中携带,名为token。

    ①获取请求对象

    ②获取请求头中的token

    ③解析map集合,获取数据

    1. @Autowired //直接注入一个请求对象
    2. HttpServletRequest httpServletRequest;
    3. //例如获取 操作人ID
    4. String jwt = httpServletRequest.getHeader("token");
    5. Claims claims = JwtUtils.parseJWT(jwt);
    6. //解析map结合
    7. Integer id = (Integer) claims.get("id");

    四、总结

    服务器是如何实现数据共享的?

    客户端第一次发送请求,服务端会下发JWT令牌,当客户端再次发送请求时,服务器会校验JWT令牌,响应请求,从而不用二次登录,实现数据共享。

    JWT技术优缺点?

    优点:

    简单轻量:使用JSON格式进行传输,易于实现和使用,高安全性:加密算法防止篡改令牌,Base64编码保护个人信息安全,跨平台支持:JWT令牌可以在Web、移动端和服务端使用。

    缺点:

    如何生成令牌、如何校验都需要程序员手动实现。

  • 相关阅读:
    Ubuntu22.04 Apache2安装SSL证书 https
    前端性能优化
    高项 07 项目成本管理
    基于单片机的洗衣机仿真设计(#0022)
    【GPU驱动开发】- AST简介
    day02_numpy_demo
    libevent学习——Reactor模式
    x64dbg 基本使用技巧
    (vue)iView 表格点击编辑按钮后编辑当前行
    小程序源码:网课查题微信小程序源码下载,题库资源丰富自动采集,支持语音拍照识别-多玩法安装简单
  • 原文地址:https://blog.csdn.net/Panci_/article/details/134199648