Token

JWT (JSON Web Token)

JWT 是一种开放标准(RFC 7519),用于在网络应用环境之间安全地传递声明。它的主要用途是通过数字签名对传输的信息进行验证和加密。JWT 由三部分组成:

  • Header(头部):包含了令牌的类型(通常是 JWT)和所使用的签名算法(例如 HMAC SHA256)。
  • Payload(有效负载):包含了声明,可以是有关用户身份或其他数据。
  • Signature(签名):用来验证消息是否未被篡改,通常是通过私钥加密。

JWT 的一个常见使用场景是,用户通过登录后,服务器生成一个 JWT Token,客户端将此 Token 保存在本地(如浏览器的 LocalStorage 或 Cookie 中)。每次客户端访问受保护的资源时,都会附带这个 Token,服务器验证后才允许访问。

示例:

java 复制代码
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Date;

public class JWTExample {
    public static String createJWT(String subject, String secretKey) {
        return Jwts.builder()
                .setSubject(subject)
                .setIssuedAt(new Date())
                .setExpiration(new Date(System.currentTimeMillis() + 1000 * 60 * 60))  // 1小时有效期
                .signWith(SignatureAlgorithm.HS256, secretKey)
                .compact();
    }

    public static void main(String[] args) {
        String token = createJWT("user123", "mySecretKey");
        System.out.println("Generated JWT Token: " + token);
    }
}

Session Token

在一些 Web 应用中,登录后服务器会生成一个 Session Token,用来在后续请求中识别用户的会话状态。通常这个 Token 会存储在浏览器的 Cookie 中,并在每次请求时由客户端自动发送到服务器。

OAuth Token

OAuth 是一种授权协议,允许第三方应用程序访问用户的资源,而不需要用户直接提供用户名和密码。OAuth 使用访问 Token 来授权对资源的访问。访问 Token 由授权服务器颁发,通常分为两种类型:

  • Access Token(访问令牌):允许应用访问特定的用户数据。
  • Refresh Token(刷新令牌):用来获取新的 Access Token,通常在 Access Token 过期时使用。

Token 的作用

  • 身份验证:Token 可以用来验证用户的身份或应用的合法性。
  • 访问控制:通过 Token 可以控制用户是否有权限访问特定的资源。
  • 防止伪造请求:在 CSRF 等攻击中,Token 可以防止恶意请求伪造。
相关推荐
拂晓银砾21 分钟前
Java数据结构-队列
java·数据结构
重生成为编程大王21 分钟前
Java ConcurrentHashMap 深度解析
java·开发语言
阿华的代码王国29 分钟前
【Android】适配器与外部事件的交互
android·xml·java·前端·后端·交互
MacroZheng39 分钟前
还在用WebSocket实现即时通讯?试试MQTT吧,真香!
java·spring boot·后端
稚辉君.MCA_P8_Java1 小时前
豆包 Java的23种设计模式
java·linux·jvm·设计模式·kubernetes
tanyongxi661 小时前
C++ 特殊类设计与单例模式解析
java·开发语言·数据结构·c++·算法·单例模式
遗憾皆是温柔1 小时前
24. 什么是不可变对象,好处是什么
java·开发语言·面试·学习方法
midsummer_woo1 小时前
基于springboot的IT技术交流和分享平台的设计与实现(源码+论文)
java·spring boot·后端
Peter(阿斯拉)1 小时前
[Java性能优化]_[时间优化]_[字符串拼接的多种方法性能分析]
java·性能优化·stringbuilder·string·字符串拼接·stringbuffer·时间优化
水痕012 小时前
gin结合minio来做文件存储
java·eureka·gin