2021-09-30 JWT与JJWT - yahya

jwt 是什么

jwt(Json web token)是json对象的编码表示,json对象由零个或多个名称/值对组成,其中名称是string,值为任意json值。

JWT有助于(例如在URL中)发送这样的信息,可以被信任为不可读(即加密的)、不可修改的(即签名)和URL - safe(即Base64编码的)。

jwt 的组成

Header: 标题包含了令牌的元数据,包含签名、加密算法的类型

Claims: Claims包含您想要签署的任何信息

JSON Web Signature (JWS): 在header中指定的使用该算法的数字签名和声明

另一种说法:

Header 头部信息,主要声明了JWT的签名算法等信息
Payload 载荷信息,主要承载了各种声明并传递明文数据
Signature 签名,拥有该部分的JWT被称为JWS,也就是签了名的JWS,用于校验数据
Header:

{
  "alg": "HS256",
  "typ": "JWT"
}

Claims:

{
  "sub": "1234567890",
  "name": "John Doe",
  "admin": true
}

Signature:

base64UrlEncode(Header) + "." + base64UrlEncode(Claims),

加密生成的token:分三段,分别对应这三部分。header.payload.signature

如何保证jwt安全

JJWT是一个提供端到端的JWT创建和验证的Java库。永远免费和开源(Apache License,版本2.0),JJWT很容易使用和理解。它被设计成一个以建筑为中心的流畅界面,隐藏了它的大部分复杂性。

  1. JJWT的目标是最容易使用和理解用于在JVM上创建和验证JSON Web令牌(JWTs)的库。

  2. JJWT是基于JWT、JWS、JWE、JWK和JWA RFC规范的Java实现。

  3. JJWT还添加了一些不属于规范的便利扩展,比如JWT压缩和索赔强制。

你可能感兴趣的:(java开发,jwt)