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

2. 编程语言-JAVA-Spring Security

文章目录

  • 前言
  • 一、spring-security-oauth2
  • 二、spring-security-jwt


前言

Spring Security

  • spring-security-oauth2
  • spring-security-jwt

一、spring-security-oauth2

  1. 各版本的名称及发布日期:
版本适用 Spring Boot适用 Spring Security状态备注‌
‌2.5.x2.5.x - 2.7.x5.5.x - 5.7.x‌维护中推荐稳定版
‌2.4.x2.4.x - 2.6.x5.4.x - 5.6.x已弃用建议升级
‌2.3.x2.3.x - 2.5.x5.3.x - 5.5.x已弃用不推荐
‌2.2.x2.2.x - 2.4.x5.2.x - 5.4.x已弃用仅旧项目
‌2.1.x2.1.x - 2.3.x5.1.x - 5.3.x已弃用不推荐
  1. Spring Boot 2.7.x + JDK 8‌的环境推荐版本‌
<dependency><groupId>org.springframework.security.oauth</groupId><artifactId>spring-security-oauth2</artifactId><version>2.5.2.RELEASE</version> <!-- 最新稳定版 -->
</dependency>
  1. Spring Security‌ 版本匹配
<dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-core</artifactId><version>5.7.6</version> <!-- 推荐版本 -->
</dependency>
  1. 注意事项‌
  • Spring Security OAuth2 已弃用‌

    • 官方推荐迁移到 ‌Spring Authorization Server‌(Spring Security 5.7+ 内置)
    • 新项目建议直接使用 spring-security-oauth2-authorization-server(Spring Boot 3.x+)
  • ‌JDK 8 兼容性‌

    • Spring Security OAuth2 2.5.x 仍支持 JDK 8
    • 如需升级到 Spring Boot 3.x,需切换至 JDK 17+
  • ‌常见问题‌

    • 如果遇到 NoSuchMethodError,检查依赖冲突(如旧版 spring-security-jwt)
    • 推荐使用 spring-security-oauth2-autoconfigure 简化配置
  1. 迁移建议‌

如果计划升级,可参考以下路径:

  • 短期方案‌:继续使用 OAuth2 2.5.x(维护模式)
  • 长期方案‌:迁移到 ‌Spring Authorization Server‌(需要 Spring Boot 3.x+)
  1. Spring Authorization Server‌

二、spring-security-jwt

  1. 版本选择‌

    ‌spring-security-jwt‌ 最终稳定版:

    <dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-jwt</artifactId><version>1.1.1.RELEASE</version> <!-- 官方最后维护版本 --></dependency>
  • 兼容性说明‌:
    • 需搭配 spring-security-oauth2 2.5.x 使用(如 2.5.2.RELEASE)。
    • 不支持 Spring Boot 3.x 或 JDK 17+。

‌2. 基础配置示例‌

  • ‌JWT 密钥配置‌
    JwtConfig.java
@Configuration
public class JwtConfig {@Value("${jwt.secret}")private String secret;@Beanpublic JwtAccessTokenConverter jwtAccessTokenConverter() {JwtAccessTokenConverter converter = new JwtAccessTokenConverter();converter.setSigningKey(secret); // 设置签名密钥return converter;}@Beanpublic TokenStore tokenStore() {return new JwtTokenStore(jwtAccessTokenConverter());}
}
  • 需在 application.properties 中配置 jwt.secret=your-256-bit-secret。

  • ‌OAuth2 资源服务器配置‌
    ResourceServerConfig.java

@Configuration
@EnableResourceServer
public class ResourceServerConfig extends ResourceServerConfigurerAdapter {@Overridepublic void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/api/public/**").permitAll().anyRequest().authenticated();}
}

‌3. 生成和解析 JWT 令牌‌

  • ‌生成令牌(授权服务器端)‌
    JwtTokenEnhancer.java
 class JwtTokenEnhancer implements TokenEnhancer {@Overridepublic OAuth2AccessToken enhance(OAuth2AccessToken accessToken,OAuth2Authentication authentication) {Map<String, Object> additionalInfo = new HashMap<>();additionalInfo.put("organization", "example-org");((DefaultOAuth2AccessToken) accessToken).setAdditionalInformation(additionalInfo);return accessToken;}
}
  • ‌解析令牌(资源服务器端)‌
    JwtUtils.java
 class JwtUtils {public static Claims extractClaims(String token, String secret) {return Jwts.parser().setSigningKey(secret.getBytes()).parseClaimsJws(token).getBody();}
}

‌4. 注意事项‌

  • 密钥安全‌:
    • 替换 JwtAccessTokenConverter 的签名逻辑)。
  • 依赖冲突‌:
    • 避免引入 jjwt 旧版本(如 0.9.x),可能引发 NoSuchMethodError。
  • 迁移建议‌:
    • 新项目推荐使用 spring-security-oauth2-authorization-server + jjwt 0.12.x。
  1. jjwt

本文的引用仅限自我学习如有侵权,请联系作者删除。
参考知识


http://www.dtcms.com/a/303570.html

相关文章:

  • 记录自己第n次面试(n>3)
  • JavaScript手录08-对象
  • 深入解析IPMI FRU规范:分区结构与字段标识详解
  • 10_opencv_分离颜色通道、多通道图像混合
  • Nuxt3 全栈作品【通用信息管理系统】修改密码
  • OpenLayers 综合案例-热力图
  • 在虚拟机ubuntu上修改framebuffer桌面不能显示图像
  • C++进阶—C++11
  • 5G 便携式多卡图传终端:移动作业的 “实时感知纽带”
  • 【unitrix】 6.19 Ord特质(ord.rs)
  • 【灰度实验】——图像预处理(OpenCV)
  • 2025年7月28日训练日志
  • 【三桥君】如何解决后端Agent和前端UI之间的交互问题?——解析AG-UI协议的神奇作用
  • 排水管网实时监测筑牢城市安全防线
  • 线程间-数据缓存机制(线程邮箱)
  • CDN架构全景图
  • STM32 usb HOST audio USB 音频设备 放音乐
  • springCloudAlibaba集成Dubbo
  • 【版本更新】火语言 0.9.94.0 更新
  • 虚拟面孔,真实革命
  • Product Hunt 每日热榜 | 2025-07-28
  • JAVA_EIGHTEEN_特殊文件
  • STM32——寄存器映射
  • LLaMA-Factory微调教程2:命令行sft微调
  • 【拓扑排序 缩点】P2272 [ZJOI2007] 最大半连通子图|省选-
  • 【跳跃游戏】
  • BUUCTF-MISC-[HBNIS2018]caesar1
  • Linux驱动22 --- RV1126 环境搭建设备树修改
  • 从零到一:我是如何用深度学习打造高性能书籍推荐系统的
  • mp核心功能