2017-02-20 19 views
0

AngularベースのWebアプリケーションは、異なるドメインおよびコンテキストパス上で動作するエンタープライズポータルと統合されています。私は着信要求を検証するために、Spring SecurityベースのCSRFトークンを使用しています。アプリケーションは完全にローカルで動作していますが、ポータルと統合すると、AngularはXSRFトークンを読み取ることができず、要求ヘッダー内のX-XSRFトークンをAPI呼び出しに設定できないため、ポストコールはすべて失敗します。調査の結果、私はポータルと私たちのアプリケーションのコンテキストパスが異なることを発見したので、春はXSRFトークンをPath、Expires、Nullとしてドメインを設定しています。春にそれを作成するときに、特定のCookieパスにXSRFトークンを設定できる方法はありますか?異なるコンテキストパスにCSRFトークンを設定する方法

注:フィルターを作成し、要求ヘッダーからCookieを読み取り、必要なパスを使用して新しいCookieをブラウザーにドロップする代替ソリューションがあります。私は設定レベルで解決策を探しています。

private CsrfTokenRepository getCsrfTokenRepository() { 
    CookieCsrfTokenRepository tokenRepository = CookieCsrfTokenRepository.withHttpOnlyFalse(); 
    tokenRepository.setCookiePath("/"); 
    return tokenRepository; 
} 

をして、機能configure(...)で行を変更する:コンフィギュレーションセキュリティ(Javaファイル)で

答えて

0

は、それは追加することが可能です

http.csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()).and()...

http.csrf().csrfTokenRepository(this.getCsrfTokenRepository()).and()...

これにより、クッキーのパスをパーソナライズする解決策が得られますXSRF-TOKEN

関連する問題