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をしているので、AuthServerConfig
とResourceServerConfig
も持っています。私のメインアプリケーションクラスは次のようになります。
_@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が返されます。
_@Configuration
_、_@EnableWebSecurity
_など、セキュリティに関連するクラスのすべての注釈をコメント化します。 Spring boot Security Disable security では、下部に_@EnableWebSecurity
_を追加すると認証が無効になりますが、これは意味がないと思われます。とにかく試してみましたが、うまくいきませんでした。
すべてのセキュリティ機能を削除してwebsecurityconfigを変更し、http .authorizeRequests() .anyRequest().permitAll();
のみを実行します
Spring Securityを使用しているときに基本認証を無効にするJava構成 。どちらも役立ちません。
セキュリティ自動構成を削除
@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を無効にする正しい方法は何ですか?
@Maciej Walkowiakが述べたように、メインクラスに対してこれを行う必要があります。
@SpringBootApplication(exclude = org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration.class)
public class MainClass {
これを試す
1->セキュリティ構成のコメント注釈@EnableWebSecurity
// @ EnableWebSecurity
2->これらの行をセキュリティ設定に追加します
spring.security.enabled = false
management.security.enabled = false
security.basic.enabled = false