JWT介绍

JWT概念

JWT , 全写JSON Web Token, 是开放的行业标准RFC7591,用来实现端到端安全验证.
简单来说, 就是通过一些算法对加密字符串和JSON对象之间进行加解密。
JWT加密JSON,保存在客户端,不需要在服务端保存会话信息。,可以应用在前后端分离的用户验证上,后端对前端输入的用户信息进行加密产生一个令牌字符串, 前端再次请求时附加此字符串,后端再使用算法解密。

JWT流程:

JWT的构成

JWT字符串: 一段加密的JSON字符串。
包含了三类信息

  • Header头部: Token类型和加密算法。加密算法常见的有MD5、SHA、HMAC( Hash Message Authentication Code)。
  • PayLoad负载: 存放有效信息,包括
  1. 标准的声明,类似开发语言总的关键字。包括
    iss(Issuser) - 签发者
    sub Subject 面向主体
    aud Audience 接收方
    exp Expiration time 过期时间戳
    nbf Not Before, 开始生效时间戳
    iat(Issued at) 签发时间
    jti(JWT ID): 唯一标识

  2. 公共的声明: 一般添加业务相关的必要信息,因为可解密,不建议敏感信息。

  3. 私有的声明:提供者和消费者共同定义的声明,Base64对称解密,不建议敏感信息

  • Signature签证
    签证信息包括三部分:
  1. Base64加密的header
  2. Base64加密的payload
  3. secret-密钥
    使用header中声明的加密算法对Header和payload的加密连接字符串进行加盐secret组合加密。
    密钥保存在服务端,服务端根据密钥进行解密验证。

JWT与开发语言

JWT只是一个标准
可以通过不过的开发语言实现,包括Java,.NET, Python,Node Js, JavaScript,Perl, Ruby,Go等。
同一种语言,不同的开发者提供了多种实现库,以Java语言为例有java-jwt、?jose4j、nimbus-jose-jwt、jjwt

JWT官网

https://jwt.io/

这个网站提供了在线的基于不同算法的字符串和JSON对象的转换工具,同时也收集了不同语言的多种实现库。

java-jwt

java-jwt是Java语言中推荐的JWT实现库,使用Maven导入如下:

     <dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>3.8.3</version></dependency>

产生加密Token

String token = JWT.create().withExpiresAt(newDate(System.currentTimeMillis()))  //设置过期时间.withAudience("user1") //设置接受方信息,一般时登录用户.sign(Algorithm.HMAC256("111111"));  //使用HMAC算法,111111作为密钥加密

解密Token获取负载信息并验证Token是否有效

 String userId = JWT.decode(token).getAudience().get(0);Assertions.assertEquals("user1", userId);JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256("111111")).build();jwtVerifier.verify(token);

JWT介绍以及java-jwt的使用相关推荐

  1. java jwt 验证_教程:用Java创建和验证JWT

    java jwt 验证 "我喜欢编写身份验证和授权代码." 〜从来没有Java开发人员. 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多 ...

  2. Java - JWT的简单介绍和使用

    Java - JWT的简单介绍和使用 前言 一. JWT 基础知识 1.1 session 案例测试 1.2 JWT 结构 1.2.1 Header 1.2.2 Payload 1.2.3 Signa ...

  3. 安全认证--JWT介绍及使用

    安全认证--JWT介绍及使用 1.无状态登录原理 1.1.什么是有状态? 1.2.什么是无状态 1.3.如何实现无状态 1.4.JWT 1.4.1.简介 1.4.2.数据格式 2.编写JWT工具 2. ...

  4. JWT Token的Java实现

    官网地址:https://jwt.io/ jwt github:https://github.com/jwtk/jjwt Demo源码地址: https://github.com/wangcantia ...

  5. Java - JWT

    JWT 介绍 JWT由3部分构成:Header, Payload, Signature (头部,载荷,签名) 头部:声明类型,加密算法 {"alg": "HS256&qu ...

  6. 什么是JWT及在JAVA中如何使用?

    目录 1.为什么使用JWT? 2.JWT 的 格式 3.使用 JWT 就绝对安全 吗? 4.JWT 的 鉴权 流程 5.JWT 入门案例 5.1 引入依赖 5.2 生成Token 5.3 解析Toke ...

  7. java编程之java jwt token什么是JWT?(一)

    转自:http://www.leftso.com/blog/220.html 一.什么是JWT?了解JWT,认知JWT 首先jwt其实是三个英语单词JSON Web Token的缩写.通过全名你可能就 ...

  8. Java JWT:用于Java和Android的JSON Web令牌

    JWT根据维基百科的定义,JSON WEBToken(JWT,读作 [/dʒɒt/]),是一种基于JSON的.用于在网络上声明某种主张的令牌(token).JWT通常由三部分组成: 头信息(heade ...

  9. Python JWT 介绍

    JWT 全称: json-web-token JWT的大白话解释: 现在比较火的token中的一种,为了解决HTTP协议无状态的问题,开发出来的.就是一种解决方案. 1. 三大组成 JWT和cooki ...

最新文章

  1. linux c dup dup2 重定向函数简介
  2. 利润1000亿元:靠的是游戏,广告和微信,你怕了吗
  3. Oracle 11g安装步骤详谈
  4. boost::histogram::axis::transform用法的测试程序
  5. 我的2020年度总结
  6. 护理在计算机的应用研究,计算机虚拟和模拟技术在护理实践教学中应用的研究...
  7. freecplus框架,Linux平台下C/C++程序员提高开发效率的利器
  8. 怎么让同网络计算机强制关机,知道局域网ip怎么关机
  9. C#动态数组ArrayList介绍
  10. 基于Selenium的Web UI自动化实现(java)
  11. 三点估算 Sigma(σ)的值,期望值,标准差
  12. linux分区挂载到内存,ubuntu下SD卡分区与挂载
  13. Hive总结及常见语法
  14. Flutter 启动页 消除白屏
  15. 编辑器,编译器与集成开发环境(IDE)
  16. 解读大学里的软件工程专业以及其他专业,给高考完的学弟妹一点参考
  17. 二维灰度地形图山脊线自动提取方法整理(PPA)
  18. JDOM和XPATH薛谷雨
  19. 安卓期末大作业Android studio-记单词app(资源链接在文末,含注册登录,含设计报告,含导出app文件及源码导入方法文档)
  20. 一、针对工业领域线圈小目标检测,基于Yolov5s网络改进检测头实验及其检测效果对比

热门文章

  1. java_自定义标签运行原理
  2. Behavior Designer知识点
  3. linux shell学习三
  4. ViewPager 中添加监听
  5. 测试AS3的性能9800粒子
  6. 動態設定GridView的列寬
  7. java.lang.IllegalArgumentException: An invalid domain [.test.com] was specified for this cookie解决方法
  8. VisualStudio卸载后无法再次安装的解决方法
  9. 【免费下载】2021年11月热门报告盘点(附热门报告列表及下载链接)
  10. 【报告分享】二次元衍生创作行业报告.pdf(附下载链接)