私はspring-boot-starter-security
依存関係を使用して、spring-security
に付属するいくつかのクラスを利用しています。しかし、私はそれを既存のvaadin
アプリケーションに統合したいので、Springのデフォルトのログイン/認証画面ではなく、クラスのみを利用したいと思います。
この画面を無効にするにはどうすればよいですか?
メインエントリクラスが既にextends SpringBootServletInitializer
であるため、WebSecurityConfigurerAdapter
を拡張して構成を行うことはできません。また、vaadinアプリケーションは基本的に常に同じURLパスで実行され、内部ナビゲーションを使用します。
@EnableAutoConfiguration
public class MyApp extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(MyApp.class);
}
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
}
では、ログイン画面を無効にするにはどうすればよいですか?ただし、春のセキュリティ機能を利用しますか?
次のようにJavaベースの設定を使用できます:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity security) throws Exception
{
security.httpBasic().disable();
}
}
自動的に更新される場合は、アプリケーションを再起動します。
ログインルートを完全に無効にするには、Spring Security構成オブジェクトを使用します
次のスニペットではorg.springframework.boot:2.1.6.RELEASE
@Configuration
@EnableWebSecurity
class SecurityConfig : WebSecurityConfigurerAdapter() {
override fun configure(security: HttpSecurity) {
super.configure(security)
security.httpBasic().disable()
security.cors().and().csrf().disable().authorizeRequests()
.anyRequest().authenticated()
.and().formLogin().disable() // <-- this will disable the login route
.addFilter(JWTAuthorizationFilter(authenticationManager()))
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
}
@Bean
fun corsConfigurationSource(): CorsConfigurationSource {
val source = UrlBasedCorsConfigurationSource()
val config = CorsConfiguration().applyPermitDefaultValues()
config.addExposedHeader("Authorization")
source.registerCorsConfiguration("/**", config)
return source
}
}
メインスプリングブートアプリケーションクラス(@SpringBootApplicationアノテーションを持つクラス)
@SpringBootApplication(exclude={SecurityAutoConfiguration.class})
それでも解決策が必要な場合は、RESTコントローラに次のようにメソッドを配置します。
@RestController
public class myRestController{
@GetMapping("/login")
public String redirectTo(){
return "yourRedirectLink";
}
}
このソリューションは、スプリングで動作し、瓶に詰めて反応するのに非常に適しています
より簡単な解決策があるようです。
このアノテーションをメインクラスの上、またはSpingBootApplication
アノテーションと同じ場所に置くだけです。
@EnableAutoConfiguration(exclude = {org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class})