java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Spring Security示例

JAVA中Spring Security示例及常见问题

作者:真上帝的左手

文章概述Spring Security OAuth2与JWT模块的版本兼容性及迁移建议,强调2.5.x支持JDK8但已弃用,推荐新项目使用SpringAuthorizationServer(Spring Boot3.x+),并指出依赖冲突、配置示例及密钥安全注意事项,感兴趣的朋友一起看看吧

前言

Spring Security

一、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. 注意事项‌
  1. 迁移建议‌

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

  1. Spring Authorization Server‌

二、spring-security-jwt

    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-jwt</artifactId>
        <version>1.1.1.RELEASE</version> <!-- 官方最后维护版本 -->
    </dependency>

‌2. 基础配置示例‌

@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());
    }
}
@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 令牌‌

 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;
    }
}
 class JwtUtils {
    public static Claims extractClaims(String token, String secret) {
        return Jwts.parser()
            .setSigningKey(secret.getBytes())
            .parseClaimsJws(token)
            .getBody();
    }
}

‌4. 注意事项‌

  1. jjwt

到此这篇关于JAVA中Spring Security示例及常见问题的文章就介绍到这了,更多相关Spring Security示例内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文