首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何关闭spring安全自动配置?

如何关闭spring安全自动配置?
EN

Stack Overflow用户
提问于 2021-04-09 19:23:33
回答 1查看 149关注 0票数 0

我有一个这样的application.yml:

代码语言:javascript
复制
spring:
    security:
      oauth2:
        resourceserver:
          jwt:
            issuer-uri: http://localhost:8180/auth/realms/dev
            
spring-security:
  provider: 
    default
代码语言:javascript
复制
spring-security:
  provider: 
    keycloak

所以我在后台使用了一个键罩,但是我有一个可以是defaultkeycloakspring-security.provider属性。

如果我使用default,我不希望spring安全机制起作用,所以我甚至不会启动密钥罩。但是,如果设置了spring.security.oauth2.resourceserver.jwt.issuer-uri,它会尝试建立到我的密钥罩的连接,而不应该这样做。

如果spring-security.provider设置为‘spring.security.oauth2.resourceserver.jwt.issuer-uri’,我希望应用程序忽略默认。

目前,我有两个基于spring-security.provider的配置类

代码语言:javascript
复制
@Configuration
@ConditionalOnProperty(prefix = "spring-security", value = "provider", havingValue = "default", matchIfMissing = true)
public class DefaultSecurityConfigurer {
    @Bean
    public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {
        http.csrf()
            .disable();
        return http.build();
    }
}
代码语言:javascript
复制
@EnableWebFluxSecurity
@EnableReactiveMethodSecurity
@RequiredArgsConstructor
@ConditionalOnProperty(prefix = "spring-security", value = "provider", havingValue = "keycloak", matchIfMissing = false)
@Configuration
public class KeycloakSecurityConfigurer {

    private final SpringSecurity springSecurity;
    private final RolesConverter authoritiesExtractor;

    // @formatter:off
    @Bean
    public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {      
        http
        .authorizeExchange()
        .pathMatchers(springSecurity.getApiMatcher())
        .authenticated()
        .pathMatchers("/**")
        .permitAll()
        .and()
        .oauth2ResourceServer()
        .jwt()
        .jwtAuthenticationConverter(grantedAuthoritiesExtractor());

        return http.build();
    }
    
    @Bean
    public Converter<Jwt, Mono<AbstractAuthenticationToken>> grantedAuthoritiesExtractor() {
        return new ReactiveJwtAuthenticationConverterAdapter(authoritiesExtractor);
    }
}

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-04-09 22:11:39

您可以通过在main类(包含main方法)上使用@SpringBootApplication(exclude = { SecurityAutoConfiguration.class })注释或通过将此配置添加到application.properties文件中来禁用spring安全自动配置:spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration在某些特殊情况下,此设置还不够。例如,几乎每个Spring Boot应用程序都是在类路径中使用Actuator启动的。这会导致问题,因为另一个自动配置类需要我们刚才排除的那个,因此应用程序将无法启动。为了解决这个问题,我们需要排除这个类;并且,根据执行器的具体情况,我们需要排除ManagementWebSecurityAutoConfiguration。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67020215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档