spring - 如何在 Spring Boot 应用程序中关闭 Spring Security

标签 spring rest authentication spring-security spring-boot

我已经使用 Spring Security 在我的 Spring Boot 应用程序中实现了身份验证。

控制身份验证的主要类应该是 websecurityconfig:

@Configuration
@EnableWebSecurity
@PropertySource(value = { "classpath:/config/application.properties" })
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {


    @Autowired
    private RestAuthenticationSuccessHandler authenticationSuccessHandler;
    @Autowired
    private RestAuthenticationEntryPoint restAuthenticationEntryPoint;

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
          .httpBasic()
            .and()
            .csrf().disable()
            .sessionManagement().sessionCreationPolicy(
                    SessionCreationPolicy.STATELESS)
            .and()
            .exceptionHandling()
            .authenticationEntryPoint(restAuthenticationEntryPoint)
            .and()
            .authorizeRequests()
                .antMatchers("/").permitAll()
                .antMatchers("/login").permitAll()
                .antMatchers("/logout").permitAll()
                .antMatchers("/ristore/**").authenticated()
                .anyRequest().authenticated()
                .and()
            .formLogin()
                .successHandler(authenticationSuccessHandler)
                .failureHandler(new SimpleUrlAuthenticationFailureHandler());
    }

由于我在做 OAuth,我有 AuthServerConfigResourceServerConfig以及。我的主要应用程序类如下所示:
@SpringBootApplication
@EnableSpringDataWebSupport
@EntityScan({"org.mdacc.ristore.fm.models"}) 
public class RistoreWebApplication extends SpringBootServletInitializer
{
   @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurerAdapter() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/**").allowedOrigins("*");
            }
        };
    }
    public static void main( String[] args )
    {
        SpringApplication.run(RistoreWebApplication.class, args);
    }

    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
         return application.sources(RistoreWebApplication.class);
     }
}

由于我们在做代码整合,我们需要暂时关闭认证。但是,我尝试了以下方法,但似乎没有任何效果。当我点击这些 rest api url 时,我仍然收到 401。
  • 注释掉所有与安全相关的类中的注解,包括@Configuration , @EnableWebSecurity .在 Spring boot Security Disable security ,建议在底部添加 @EnableWebSecurity将禁用身份验证,我认为这没有任何意义。反正试过了,没用。
  • 通过删除所有安全内容来修改 websecurityconfig 并且只做
    http .authorizeRequests() .anyRequest().permitAll();

  • Disable Basic Authentication while using Spring Security Java configuration .也没有帮助。
  • 删除安全自动配置

    @EnableAutoConfiguration(排除 = {
    org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration.class,
    org.springframework.boot.actuate.autoconfigure.ManagementSecurityAutoConfiguration.class})

  • 就像他们在 disabling spring security in spring boot app 中所做的一样.但是我认为此功能仅适用于 spring-boot-actuator我没有。所以没有尝试这个。

    禁用 Spring 安全的正确方法是什么?

    最佳答案

    正如@Maciej Walkowiak 提到的,你应该为你的主类做这个:

    @SpringBootApplication(exclude = org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration.class)
    public class MainClass {
    

    关于spring - 如何在 Spring Boot 应用程序中关闭 Spring Security,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40228036/

    相关文章:

    java - 如何通过 Spring 中的 REST Web 服务创建包含 xml 数据的文件?

    angular - ionic 2 : Client certificate based authentication HTTP request

    java - AADSTS50011 回复地址未使用安全方案[AZURE]

    java - Spring ResourceLoader 在 JAR 中找不到资源

    java - Autowiring :expected at least 1 bean which qualifies as autowire candidate for this dependency

    Spring JPA事务在@Transactional注解的方法结束之前提交

    spring - 有没有办法在包级别使用 Spring @Profile 注释?

    http - HTTP 'Authorization' Header 的多种认证方案

    xml - Spring MVC Restful 406 Not Acceptable

    asp.net - Web 身份验证状态 - session 与 Cookie?