当前位置: 首页 > news >正文

免费咨询做网站南通市规划建设局网站

免费咨询做网站,南通市规划建设局网站,中山企业网站设计,网站建设订单文章目录 什么是JWT?JWT的组成部分JWT的使用场景优点缺点 Java中如何实现JWT编解码引入JJWT依赖编码JWT解码JWT使用示例 什么是JWT? JWT#xff08;JSON Web Tokens#xff09;是一种用于双方之间安全传输信息的简洁的、URL安全的令牌标准。JWT可以传递信息#xff0c;这… 文章目录 什么是JWT?JWT的组成部分JWT的使用场景优点缺点 Java中如何实现JWT编解码引入JJWT依赖编码JWT解码JWT使用示例 什么是JWT? JWTJSON Web Tokens是一种用于双方之间安全传输信息的简洁的、URL安全的令牌标准。JWT可以传递信息这个信息是经过数字签名的因此可以验证其完整性及被签发人。JWT广泛用于身份验证和信息交换特别是在客户端和服务器之间的通信中。 JWT的组成部分 JWT通常由三部分组成它们之间用.点分隔 Header头部头部包含两部分信息 typ表示令牌的类型对于JWT此值固定为JWT。alg表示签名所使用的算法如HMAC SHA256或RSA。 例如 {alg: HS256,typ: JWT }然后使用Base64对这个JSON进行编码。 Payload负载负载部分包含声明claims。声明是关于实体通常是用户和其他数据的声明。声明有三种类型注册的、公共的和私有的。 注册声明Registered claims建议但不强制使用的一组预定义声明如iss签发者、exp过期时间、sub主题等。公共声明Public claims可以随意定义。私有声明Private claims用于在同意使用它们的各方之间共享信息既不是注册也不是公共的声明。 例如 {sub: 1234567890,name: John Doe,admin: true }这部分也使用Base64编码。 Signature签名签名部分是对前两部分的签名以防止数据被篡改。首先需要指定的头部中指定的算法对编码后的头部和编码后的负载进行签名。 签名过程为 对Header和Payload进行Base64编码后的字符串使用.连接。使用Header中指定的签名算法如HMAC SHA256和密钥对连接后的字符串进行签名。 JWT的使用场景 JWT因其简洁、自包含的特点广泛用于以下场景 身份验证JWT允许用户登录后服务器返回一个JWT以后用户只需携带JWT访问资源即可无需携带用户名和密码。信息交换JWT可以在不同服务间安全地传输用户信息无需多次查询数据库。 优点 紧凑可以通过URL、POST参数或在HTTP头部中发送易于传输。自包含负载中包含了所有必要的信息减少了需要查询信息的需求。安全性通过签名可以验证消息的完整性及签发人。 缺点 令牌大小由于包含的信息较多JWT可能会比其他令牌如简单的token字符串更大。性能每次请求都需要验证JWT可能会对性能产生影响。令牌泄露如果JWT被拦截攻击者将能够在令牌有效期内冒充用户。因此必须确保HTTPS的使用来防止中间人攻击。 总的来说JWT提供了一种轻量级、安全的方式用于在双方之间传递信息特别适用于身份验证和信息交换的场景。 Java中如何实现JWT编解码 在Java中实现JWT的编解码你通常会使用一些流行的库如jjwtJava JWT或nimbus-jose-jwt。这些库提供了生成JWT、验证JWT、解析JWT等功能的简便方法。下面我将以jjwt为例介绍如何在Java中实现JWT的编解码。 引入JJWT依赖 首先你需要在你的项目中引入JJWT的依赖。如果你使用的是Maven可以在pom.xml中添加如下依赖 dependencygroupIdio.jsonwebtoken/groupIdartifactIdjjwt/artifactIdversion0.9.1/version !-- 请检查最新版本 -- /dependency编码JWT 编码JWT通常涉及到创建一个Claims对象设置你需要的声明claims然后使用密钥对其进行签名。 import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import java.util.Date;public class JwtUtil {private static final String SECRET_KEY your-256-bit-secret; // 密钥public static String generateToken(String subject) {return Jwts.builder().setSubject(subject) // 设置主题.setIssuedAt(new Date()) // 设置签发时间.setExpiration(new Date(System.currentTimeMillis() 1000 * 60 * 60 * 10)) // 设置过期时间这里设置为10小时后过期.signWith(SignatureAlgorithm.HS256, SECRET_KEY) // 使用HS256算法和密钥进行签名.compact(); // 压缩并返回JWT字符串} }解码JWT 解码JWT涉及到验证签名并解析JWT中的声明。 public static Claims parseToken(String token) {try {return Jwts.parser().setSigningKey(SECRET_KEY) // 设置用于签名的密钥.parseClaimsJws(token) // 解析JWT.getBody(); // 获取Claims对象} catch (Exception e) {// 可以在这里处理异常比如返回null或抛出运行时异常e.printStackTrace();return null;} }使用示例 public class Main {public static void main(String[] args) {String token JwtUtil.generateToken(user123);System.out.println(Generated Token: token);Claims claims JwtUtil.parseToken(token);if (claims ! null) {System.out.println(Subject: claims.getSubject());// 你还可以获取其他声明如过期时间、签发时间等}} }请注意在实际应用中你需要将SECRET_KEY替换为一个安全且难以猜测的密钥。此外JWT的安全性也依赖于密钥的保密性因此请确保你的密钥不被泄露。 此外JWT的过期时间、签发者、受众等声明可以根据你的需求进行设置。JJWT库提供了丰富的API来支持这些功能。
http://www.w-s-a.com/news/856097/

相关文章:

  • 全面启动门户网站建设中小型企业建设一个网站大概需要多少钱
  • 建网站一般多少钱网站建设上传服务器步骤
  • 手机销售网站怎么做的网站推广优化建设方案
  • 做任务分享赚钱的网站德阳网站建设公司哪家好
  • 云南建设工程质量监督网站wordpress网站导航主题
  • 徐州网站建设哪家好薇手机开源网站代码
  • 更新网站要怎么做呢泰安市58同城招聘网
  • 溧阳网站建设价格企业网站设计费用
  • 我建设的网站打开很慢河北住房和城乡建设厅网站卡
  • 门户网站广告的特点有网站的建设初步定位
  • 建设网站第一步网页建设方案
  • 网站开发需要那些人才wordpress 小工具原理
  • 广州建设局官方网站佛山高端网站制作公司
  • 东莞哪里能学建设网站网站备案值得吗
  • 中山 网站建设 骏域小程序开发课程
  • 北京网站建设成都微商城app官方下载
  • 网站开发用户登陆的安全wordpress 开发网站
  • 网站建设容易出现的问题四川seo关键词工具
  • 做外单网站有哪些内容服务好的南京网站建设
  • 阜阳微商城网站建设百度网站两两学一做心得体会
  • 建设银行积分网站观光农业规划设计
  • jsp项目个人网站开发用织梦做网站有什么公司会要
  • 和田网站制作无限动力网站
  • 长沙口碑好网站建设企业网站 需求
  • 哪个网站建设公司wordpress陌陌主题
  • 湖滨区建设局网站北京国际建设集团网站
  • 做服装团购有哪些网站wordpress 端口修改
  • 上海礼品定制网站响应式网站模版建站
  • 那种自行提取卡密的网站怎么做网站攻击
  • 洛阳免费网站建设qq是哪家公司开发的软件