web-dev-qa-db-ja.com

Spring BootアプリケーションでSpring Securityをオフにする方法

Spring Securityを使用して、Spring Boot Applicationに認証を実装しました。

認証を制御するメインクラスは、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);
     }
}
_

コードの統合を行っているため、認証を一時的にオフにする必要があります。しかし、私は以下の方法を試してみましたが何もうまくいかないようです。これらの残りのAPIのURLにアクセスしても、まだ401が返されます。

  1. _@Configuration_、_@EnableWebSecurity_など、セキュリティに関連するクラスのすべての注釈をコメント化します。 Spring boot Security Disable security では、下部に_@EnableWebSecurity_を追加すると認証が無効になりますが、これは意味がないと思われます。とにかく試してみましたが、うまくいきませんでした。

  2. すべてのセキュリティ機能を削除してwebsecurityconfigを変更し、http .authorizeRequests() .anyRequest().permitAll();のみを実行します

Spring Securityを使用しているときに基本認証を無効にするJava構成 。どちらも役立ちません。

  1. セキュリティ自動構成を削除

    @EnableAutoConfiguration(exclude = {org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration.class、org.springframework.boot.actuate.autoconfigure.ManagementSecurityAutoConfiguration.class})

彼らがしたことのように Spring Boot AppでSpring Securityを無効にする 。ただし、この機能は、私が持っていない_spring-boot-actuator_でのみ機能すると思います。だからこれを試さなかった。

Spring Securityを無効にする正しい方法は何ですか?

9
ddd

@Maciej Walkowiakが述べたように、メインクラスに対してこれを行う必要があります。

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

これを試す

1->セキュリティ構成のコメント注釈@EnableWebSecurity

// @ EnableWebSecurity

2->これらの行をセキュリティ設定に追加します

spring.security.enabled = false

management.security.enabled = false

security.basic.enabled = false

2
Mohammad