春のセキュリティで保護された春のブートアプリを開発しています。セキュリティで保護された構成の一部を次に示します。
@Override
public void configure(HttpSecurity http) throws Exception {
// @formatter:off
http
// .csrf().ignoringAntMatchers("/dashboard")
// .and()
.httpBasic()
.and()
.headers().frameOptions().disable()
.and()
.antMatcher("/**").authorizeRequests()
.antMatchers("/VAADIN/**", "/PUSH/**", "/UIDL/**").permitAll()
.antMatchers("/vaadinServlet/UIDL/**").permitAll()
.antMatchers("/vaadinServlet/HEARTBEAT/**").permitAll()
.antMatchers("/actuator/health").permitAll()
.antMatchers("/actuator/**").hasAuthority(Authority.Type.ROLE_ADMIN.getName())
.antMatchers("/", "/login**", "/index.html", "/home.html").permitAll()
.and()
.logout().logoutSuccessUrl("/").permitAll()
.and()
.csrf().csrfTokenRepository(csrfTokenRepository())
.and()
.addFilterAfter(csrfHeaderFilter(), CsrfFilter.class)
.addFilterBefore(ssoFilter(), BasicAuthenticationFilter.class);
// @formatter:on
}
VAADIN を使用してアプリを管理するための管理ダッシュボードを実装します。「Spring または Vaadin のいずれかで CSRF 保護を無効にします。両方をオンにすると、アプリケーションは機能しません。」.
私の場合、Vaadin で CSRF 保護を無効にする必要がありますが、Java 構成を使用してそれを行う方法が見つかりませんでした。
この瞬間、私は取得しています: https://127.0.0.1:8443/vaadinServlet/UIDL/?v-wsver=7.5.5&v-uiId=0 "通信エラー: UIDL をサーバーから読み取ることができませんでした。サーブレットのマッピングを確認してください。エラーcode: 403"、メイン ビューから他のビューへのナビゲーション中。(例: /dashboard#!myview)。これは、 AccessDeniedHandlerImpl
handle メソッドが呼び出されるためです。次のステートメントを使用してこれを修正しようとしましたが、役に立ちません。
.antMatchers("/vaadinServlet/UIDL/**").permitAll()
.antMatchers("/vaadinServlet/HEARTBEAT/**").permitAll()
だから、この2つの問題を解決するのを手伝ってください:
- Java config を使用して VAADIN で CSRF を無効にします。
- ビュー ナビゲーションの問題を解決します。
ありがとう