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

简介: [JavaWeb]——JWT令牌技术,如何从获取JWT令牌

🌈键盘敲烂,年薪30万🌈



 

一、前言:

  • 问题抛出❓

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

假如我登录成功之后直接复制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集合,获取数据

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

四、总结

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

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

JWT技术优缺点?

优点:

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

缺点:

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

相关文章
|
8天前
|
存储 中间件 API
ThinkPHP 集成 jwt 技术 token 验证
本文介绍了在ThinkPHP框架中集成JWT技术进行token验证的流程,包括安装JWT扩展、创建Token服务类、编写中间件进行Token校验、配置路由中间件以及测试Token验证的步骤和代码示例。
ThinkPHP 集成 jwt 技术 token 验证
|
4月前
|
存储 JSON 安全
JWT令牌详解
JWT令牌详解
|
2月前
|
JSON Java API
【Azure Developer】如何验证 Azure AD的JWT Token (JSON Web 令牌)?
【Azure Developer】如何验证 Azure AD的JWT Token (JSON Web 令牌)?
|
2月前
|
安全 Nacos 数据安全/隐私保护
【技术干货】破解Nacos安全隐患:连接用户名与密码明文传输!掌握HTTPS、JWT与OAuth2.0加密秘籍,打造坚不可摧的微服务注册与配置中心!从原理到实践,全方位解析如何构建安全防护体系,让您从此告别数据泄露风险!
【8月更文挑战第15天】Nacos是一款广受好评的微服务注册与配置中心,但其连接用户名和密码的明文传输成为安全隐患。本文探讨加密策略提升安全性。首先介绍明文传输风险,随后对比三种加密方案:HTTPS简化数据保护;JWT令牌减少凭证传输,适配分布式环境;OAuth2.0增强安全,支持多授权模式。每种方案各有千秋,开发者需根据具体需求选择最佳实践,确保服务安全稳定运行。
107 0
|
3月前
|
存储 JSON 安全
OAuth2与JWT在API安全中的角色:技术深度解析
【7月更文挑战第20天】OAuth2和JWT作为两种重要的安全协议,在API安全中发挥着不可或缺的作用。OAuth2通过提供灵活的授权框架,实现了对资源的细粒度访问控制;而JWT则通过其紧凑性和自包含性,确保了身份验证和信息传输的安全性。在实际应用中,将OAuth2和JWT结合使用,可以构建出既强大又安全的API服务,为用户提供更加安全、可靠和便捷的数字体验。
JWT令牌,JWT令牌的后续使用,在其他端口中使用的注意事项?如果你编写了JWT令牌的话,在下一次请求当中,都需要添加的,如果你已经配置好了WebConfig和Inter 就不用配了,添加了拦截器之后
JWT令牌,JWT令牌的后续使用,在其他端口中使用的注意事项?如果你编写了JWT令牌的话,在下一次请求当中,都需要添加的,如果你已经配置好了WebConfig和Inter 就不用配了,添加了拦截器之后
|
4月前
|
JSON 前端开发 数据格式
关于JWT令牌和过滤器以及拦截器的实现流程
JWT令牌用于验证用户请求合法性,登录时通过Filter或Interceptor校验账号密码,生成JWT并返回给前端保存。请求时,后端通过解析令牌检查其完整性、时效性和合法性。Filter在请求处理前检查是否携带JWT,Interceptor的preHandle方法同样用于此目的。两者选择其一即可,拦截器配置更精确但稍复杂。
|
5月前
|
存储 Java 应用服务中间件
4.基础技术&API网关&JWT
4.基础技术&API网关&JWT
43 1
|
5月前
|
存储 JSON 算法
SpringBoot之JWT令牌校验
SpringBoot之JWT令牌校验
150 2
|
5月前
|
JSON 前端开发 Java

热门文章

最新文章

下一篇
无影云桌面