乐途乐途
主页
  • 计算机基础

    • TCP/IP
    • Linux
    • HTTP
  • 数据库

    • SQL
    • MySQL 5.7
  • 编程语言

    • C
    • C++
    • Java SE
    • Python2
    • Python3
  • 数据格式

    • JSON
    • XML
  • 认证与安全

    • JWT
  • 工具

    • Markdown
  • Git

    • GitFlow
  • Quartz

    • Quartz
  • Java

    • Maven 入门
    • Maven 进阶
    • MyBatis
    • Spring
    • Spring MVC
  • Java

    • Spring Boot
    • Spring Cloud
    • Spring Cloud Alibaba
    • Spring Security
    • Spring AI
    • Spring Batch
    • Kafka
    • Java 设计模式
  • 缓存

    • Redis
  • 搜索引擎

    • Elasticsearch
  • 分布式协调

    • ZooKeeper
联系
阿里云
主页
  • 计算机基础

    • TCP/IP
    • Linux
    • HTTP
  • 数据库

    • SQL
    • MySQL 5.7
  • 编程语言

    • C
    • C++
    • Java SE
    • Python2
    • Python3
  • 数据格式

    • JSON
    • XML
  • 认证与安全

    • JWT
  • 工具

    • Markdown
  • Git

    • GitFlow
  • Quartz

    • Quartz
  • Java

    • Maven 入门
    • Maven 进阶
    • MyBatis
    • Spring
    • Spring MVC
  • Java

    • Spring Boot
    • Spring Cloud
    • Spring Cloud Alibaba
    • Spring Security
    • Spring AI
    • Spring Batch
    • Kafka
    • Java 设计模式
  • 缓存

    • Redis
  • 搜索引擎

    • Elasticsearch
  • 分布式协调

    • ZooKeeper
联系
阿里云
  • 学习路径
  • 第1章 Spring Security 基础

    • 本章定位
    • Spring Security 是什么
    • DelegatingFilterProxy
    • 安全过滤器链
    • SecurityFilterChain
    • 过滤器执行顺序
  • 第2章 认证

    • 本章定位
    • Authentication
    • 认证流程
    • AuthenticationManager
    • ProviderManager
    • DaoAuthenticationProvider
    • UserDetails
    • UserDetailsService
    • PasswordEncoder
    • BCryptPasswordEncoder
    • DelegatingPasswordEncoder
    • 表单登录
    • SecurityContext
    • SecurityContextHolder
    • UsernamePasswordAuthenticationToken
  • 第3章 授权

    • 本章定位
    • 授权模型
    • GrantedAuthority
    • AccessDecisionManager
    • AccessDecisionVoter
    • URL 级别授权
    • 方法级别安全
    • @PreAuthorize
    • @PostAuthorize
    • @PreFilter
    • @PostFilter
    • @Secured
    • RoleHierarchy
  • 第4章 过滤器链

    • 本章定位
    • FilterChainProxy
    • SecurityContextHolderFilter
    • LogoutFilter
    • BasicAuthenticationFilter
    • CsrfFilter
    • CorsFilter
    • HeaderWriterFilter
    • AnonymousAuthenticationFilter
    • RequestCacheAwareFilter
    • ExceptionTranslationFilter
    • FilterSecurityInterceptor
  • 第5章 会话管理

    • 本章定位
    • 会话管理
    • SessionFixation
    • 会话并发控制
    • SessionCreationPolicy
    • RememberMe
  • 第6章 JWT

    • 本章定位
    • JWT
    • JwtDecoder
    • JWT 认证
    • JwtAuthenticationConverter
  • 第7章 OAuth2

    • 本章定位
    • OAuth2 基础
    • OAuth2 Client
    • OAuth2 Resource Server
    • 第三方登录配置
  • 第8章 攻击防护

    • 本章定位
    • CSRF 跨站请求伪造防护
    • CORS 跨域防护
    • Clickjacking 点击劫持防护
    • 安全响应头
    • Session Fixation 会话固定防护
  • 第9章 测试

    • 本章定位
    • 安全测试
    • @WithMockUser
    • 最佳实践

"白歌看着系统架构图说:'Session 在单体里够用,但咱们的微服务集群有5个实例,不可能每个都存一份 Session。'JWT 把用户身份信息编码在 Token 里,服务端不需要存任何会话状态。'这一章,你将掌握 JWT 的完整机制及其与 Spring Security 的集成方式。"

章节导读:JWT 与无状态认证

本章定位

本章解决的核心问题:JWT 如何通过自包含 Token 实现无状态认证,以及 Spring Security 如何通过 JwtDecoder 和 JwtAuthenticationConverter 将 JWT 集成到过滤器链中。 本章是分布式和微服务架构下的认证方案。

学习路线图

学习顺序说明:先理解 JWT 的结构与原理(Header + Payload + Signature)→ 掌握 JWT 认证流程(签发、传输、校验、提取权限)→ 深入 JwtDecoder(Token 解码与签名验证)→ 最后掌握 JwtAuthenticationConverter(将 JWT Claims 转换为 Spring Security 的 Authentication 对象)。

文件关系说明

文件一句话角色
JWT.mdJWT 基础:Header + Payload + Signature 三部分结构、Base64URL 编码、签名算法与安全性。
JWT认证.mdJWT 认证流程:签发 Token → 客户端存储 → 请求携带 → 服务端校验 → 提取权限的完整链路。
JwtDecoder.mdToken 解码器:验证签名、检查过期时间、解析 Claims,Spring Security 的 JWT 校验入口。
JwtAuthenticationConverter.md权限转换器:将 JWT 中的 scope / roles Claims 映射为 Spring Security 的 GrantedAuthority。

知识图谱

核心逻辑:JWT 通过自包含结构实现无状态认证:Header 声明算法,Payload 携带用户身份和权限(Claims),Signature 保证 Token 未被篡改。登录成功后服务端签发 Token,客户端后续请求携带 Authorization: Bearer <token> 头。Spring Security 的 JwtDecoder 解码并验证签名和过期时间,JwtAuthenticationConverter 将 JWT 中的 scope 或 roles Claims 转换为 GrantedAuthority 列表,最终存入 SecurityContext。服务端无需存储任何会话状态,天然支持横向扩展。

与上下章的衔接

上一章回顾:你掌握了 Session 管理机制,包括创建策略、会话固定防护和并发控制。但 Session 在分布式环境中需要共享存储(如 Redis),增加了架构复杂度。

下一章预告:JWT 解决了单系统无状态认证,但现代应用往往需要接入微信、GitHub、Google 等第三方账号。下一章「OAuth2 与第三方登录」将引入 OAuth2 协议——让用户通过授权服务器登录,第三方应用永远接触不到用户密码。

下一页
JWT