0


Spring Boot集成Spring Cloud Security进行安全增强

Spring Boot集成Spring Cloud Security进行安全增强

大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!

在微服务架构中,服务的安全性是至关重要的。Spring Cloud Security提供了一套安全工具集,帮助开发者快速实现认证和授权。本文将介绍如何在Spring Boot应用中集成Spring Cloud Security来增强安全性。

一、Spring Cloud Security简介

Spring Cloud Security是Spring Security的扩展,它提供了对Spring Cloud体系中的服务认证和授权的支持,包括OAuth2、JWT等。

二、添加依赖

在Spring Boot项目的

pom.xml

中添加Spring Cloud Security的依赖:

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-oauth2</artifactId></dependency>

确保项目中已经包含了Spring Cloud的依赖管理。

三、配置Security

application.properties

application.yml

中配置Security:

security.oauth2.resource.id=juwatech-service
security.oauth2.resource.user-info-uri=http://localhost:9999/userinfo
security.oauth2.client.client-id=your-client-id
security.oauth2.client.client-secret=your-client-secret

四、启用Security

在Spring Boot应用中启用Spring Cloud Security:

packagecn.juwatech.config;importorg.springframework.security.config.annotation.web.builders.HttpSecurity;importorg.springframework.security.config.annotation.web.configuration.EnableWebSecurity;importorg.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;@EnableWebSecuritypublicclassSecurityConfigextendsWebSecurityConfigurerAdapter{@Overrideprotectedvoidconfigure(HttpSecurity http)throwsException{
        http
            .authorizeRequests().antMatchers("/api/public/**").permitAll().anyRequest().authenticated().and().oauth2ResourceServer().jwt();}}

五、使用JWT进行令牌认证

  1. 配置JWT的解析和验证
packagecn.juwatech.config;importorg.springframework.security.config.annotation.web.builders.HttpSecurity;importorg.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;importorg.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationConverter;importorg.springframework.security.oauth2.server.resource.authentication.JwtGrantedAuthoritiesConverter;@EnableWebSecuritypublicclassJwtSecurityConfigextendsWebSecurityConfigurerAdapter{@Overrideprotectedvoidconfigure(HttpSecurity http)throwsException{JwtAuthenticationConverter jwtAuthenticationConverter =newJwtAuthenticationConverter();
        jwtAuthenticationConverter.setJwtGrantedAuthoritiesConverter(newJwtGrantedAuthoritiesConverter());

        http
            .oauth2Login().and().oauth2ResourceServer().jwt().jwtAuthenticationConverter(jwtAuthenticationConverter);}}
  1. 使用@PreAuthorize@Secured注解进行方法级别的安全控制
packagecn.juwatech.controller;importorg.springframework.security.access.prepost.PreAuthorize;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RestController;@RestControllerpublicclassSecuredController{@GetMapping("/secure-data")@PreAuthorize("hasAuthority('SCOPE_READ')")publicStringsecureData(){return"Secure data";}}

六、集成OAuth2.0认证服务器

  1. 添加OAuth2.0认证服务器依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-oauth2-resource-server</artifactId></dependency>
  1. 配置OAuth2.0认证服务器
packagecn.juwatech.config;importorg.springframework.context.annotation.Bean;importorg.springframework.security.oauth2.provider.token.DefaultAccessTokenConverter;importorg.springframework.security.oauth2.provider.token.TokenStore;importorg.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter;importorg.springframework.security.oauth2.provider.token.store.JwtTokenStore;@ConfigurationpublicclassOAuth2ServerConfig{@BeanpublicJwtAccessTokenConverterjwtAccessTokenConverter(){JwtAccessTokenConverter converter =newJwtAccessTokenConverter();
        converter.setSigningKey("secret");return converter;}@BeanpublicTokenStoretokenStore(JwtAccessTokenConverter converter){returnnewJwtTokenStore(converter);}@BeanpublicDefaultAccessTokenConverteraccessTokenConverter(){returnnewDefaultAccessTokenConverter();}}

七、使用Spring Security Test支持

Spring Security提供了测试支持,可以简化安全性集成测试的编写。

packagecn.juwatech.controller;importorg.junit.jupiter.api.Test;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;importorg.springframework.boot.test.context.SpringBootTest;importorg.springframework.security.test.context.support.WithAnonymousUser;importorg.springframework.security.test.context.support.WithMockUser;importorg.springframework.test.web.servlet.MockMvc;importstaticorg.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;importstaticorg.springframework.test.web.servlet.result.MockMvcResultMatchers.status;@SpringBootTest@AutoConfigureMockMvcpublicclassSecurityControllerTest{@AutowiredprivateMockMvc mockMvc;@Test@WithAnonymousUserpublicvoidtestSecureEndpointWithoutAuthentication()throwsException{
        mockMvc.perform(get("/secure-data")).andExpect(status().isUnauthorized());}@Test@WithMockUser(authorities ="SCOPE_READ")publicvoidtestSecureEndpointWithAuthentication()throwsException{
        mockMvc.perform(get("/secure-data")).andExpect(status().isOk());}}

八、总结

Spring Cloud Security为Spring Boot应用提供了一套完整的安全解决方案,支持OAuth2、JWT等多种认证和授权机制。通过简单的配置和代码注解,可以快速实现服务的安全性增强。同时,Spring Security的测试支持也简化了安全性集成测试的过程。

本文著作权归聚娃科技微赚淘客系统开发者团队,转载请注明出处!


本文转载自: https://blog.csdn.net/u011269762/article/details/141439705
版权归原作者 wx_tangjinjinwx 所有, 如有侵权,请联系我们删除。

“Spring Boot集成Spring Cloud Security进行安全增强”的评论:

还没有评论