当前位置: 代码网 > it编程>编程语言>Java > JAVA中Spring Security示例及常见问题

JAVA中Spring Security示例及常见问题

2025年07月29日 Java 我要评论
前言spring security‌spring-security-oauth2spring-security-jwt一、spring-security-oauth2各版本的名称及发布日期:

前言

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

  • 版本选择‌
  • ‌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;
    @bean
    public jwtaccesstokenconverter jwtaccesstokenconverter() {
        jwtaccesstokenconverter converter = new jwtaccesstokenconverter();
        converter.setsigningkey(secret); // 设置签名密钥
        return converter;
    }
    @bean
    public tokenstore tokenstore() {
        return new jwttokenstore(jwtaccesstokenconverter());
    }
}
  • 需在 application.properties 中配置 jwt.secret=your-256-bit-secret。
  • ‌oauth2 资源服务器配置‌
  • resourceserverconfig.java
@configuration
@enableresourceserver
public class resourceserverconfig extends resourceserverconfigureradapter {
    @override
    public void configure(httpsecurity http) throws exception {
        http
            .authorizerequests()
            .antmatchers("/api/public/**").permitall()
            .anyrequest().authenticated();
    }
}

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

  • ‌生成令牌(授权服务器端)‌
    jwttokenenhancer.java
 class jwttokenenhancer implements tokenenhancer {
    @override
    public 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

到此这篇关于java中spring security示例及常见问题的文章就介绍到这了,更多相关spring security示例内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com