大白话解释认证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、网站、微服务、单点登录等。

相关推荐
Lfsd8 天前
JWT解析
jwt
但-嘎嘎嘎14 天前
JWT(JSON Web Token)源码分析
jwt
背太阳的牧羊人25 天前
JWT 鉴权机制 通俗易懂解释版本
jwt·鉴权机制
Amd7941 个月前
FastAPI安全认证中的依赖组合
测试用例·fastapi·jwt·依赖注入·权限校验·安全认证·组合依赖
草海桐1 个月前
golang 的github.com/dgrijalva/jwt-go包
golang·jwt·jwt-go
可爱的霸王龙1 个月前
SpringBoot整合JWT
java·后端·jwt
csdn_aspnet2 个月前
在 .NET 9.0 Web API 中实现 Scalar 接口文档及JWT集成
jwt·.net9·scalar
lixww.cn3 个月前
ASP.NET Core对JWT的封装
asp.net core·jwt·authorize
lixww.cn3 个月前
ASP.NET Core JWT Version
asp.net core·jwt·filter·identity