大白话解释认证JWT是什么 有什么用 怎么用

JWT是什么?

JWT(JSON Web Token)就像一张"加密的电子通行证",用来证明你是谁、能干什么。它由三段字符串拼接而成(比如xxx.yyy.zzz),每段对应不同的信息:

头(Header):说明加密算法类型,比如"用HS256算法签名" 。
身体(Payload):存用户身份信息(如用户ID、角色)、有效期等,类似快递单上的收件人和地址。
签名(Signature):用密钥对前两段内容加密生成的"防伪码",防止信息被篡改。

你去游乐园玩,入口处发给你一张门票(JWT),上面写着"张三,VIP,有效期1天",并盖了章(签名)。之后进每个项目,工作人员扫一下票就能确认你的身份,不用每次都查身份证(数据库)。

JWT有什么用?

  1. 身份验证(登录)
    场景:用户登录后,服务器生成JWT返回给客户端(比如浏览器或APP),后续请求带着JWT就能直接访问资源,无需反复输入账号密码 。
    优势:比传统的Session更轻量,服务器不用存用户状态,适合分布式系统(如微服务)。
  2. 权限控制(你能干啥)
    场景:JWT里可以存用户角色(如普通用户、管理员),服务器根据角色决定能否访问某个功能(比如删除数据)。
  3. 跨系统通信(单点登录)
    场景:用同一个JWT登录多个关联系统(比如阿里旗下淘宝、支付宝),避免反复登录。
  4. 信息交换(安全传数据)
    场景:A系统生成JWT,B系统验证签名后直接读取数据,无需双方共享数据库 。

JWT怎么用?三步走:生成→传递→验证

  1. 生成JWT
    依赖:Java项目引入jjwt库(其他语言类似)。
    代码示例(Java):
java 复制代码
String jwt = Jwts.builder()  
    .setSubject("用户ID")              // 用户唯一标识  
    .claim("role", "admin")           // 自定义权限  
    .setExpiration(有效期)            // 设置过期时间  
    .signWith(密钥, 加密算法)          // 生成签名  
    .compact();  

注意:密钥必须保密,别写在代码里!

  1. 传递JWT
    方式:通常放在HTTP请求头的Authorization字段里:
java 复制代码
Authorization: Bearer xxx.yyy.zzz  

安全建议:用HTTPS传输,防止被截获。

  1. 验证JWT
    服务器代码(Java):
java 复制代码
Jws<Claims> claims = Jwts.parserBuilder()  
    .setSigningKey(密钥)  
    .build()  
    .parseClaimsJws(jwt);  
String userId = claims.getBody().getSubject(); // 提取用户ID  

若签名无效或已过期,直接拒绝请求。

注意事项

1.别存敏感信息:JWT的Payload是Base64编码,可以被解码,别放密码、手机号 。

2.控制有效期:设置合理过期时间(如1小时),减少被盗用风险。

3.密钥保管好:密钥泄露等于所有JWT失效,建议用环境变量或密钥管理服务。

4.无法中途废止:JWT一旦签发,在过期前无法强制失效,重要操作可结合二次验证。

总结

JWT是"无状态通行证",解决登录、权限、跨系统通信问题。
核心优势:轻量、跨平台、适合分布式系统。
适用场景:APP、网站、微服务、单点登录等。

相关推荐
可爱的霸王龙2 天前
SpringBoot整合JWT
java·后端·jwt
csdn_aspnet10 天前
在 .NET 9.0 Web API 中实现 Scalar 接口文档及JWT集成
jwt·.net9·scalar
lixww.cn2 个月前
ASP.NET Core对JWT的封装
asp.net core·jwt·authorize
lixww.cn2 个月前
ASP.NET Core JWT Version
asp.net core·jwt·filter·identity
lixww.cn2 个月前
ASP.NET Core JWT
asp.net core·jwt
kong79069282 个月前
电商系统-用户认证(三)基于公钥解析JWT令牌
jwt·用户认证·解析jwt令牌
一只淡水鱼662 个月前
【spring】集成JWT实现登录验证
java·spring·jwt
梦幻加菲猫3 个月前
JWT在线解密/解码 - 加菲工具
jwt·jwt 在线解密/解码·jwt在线解密·jwt在线解码
脸红ฅฅ*的思春期3 个月前
JAVA安全—JWT攻防&Swagger自动化&Druid泄露
java·安全·自动化·jwt