2017-09-08 12 views
1

私はSpringブートアプリケーションにOAuth2を追加しました。ログイン部分は、私はPOSTリクエストを送信すると、私は次のようなエラーOAuth2をspring-bootに追加するとCSRFトークンエラーが発生する

{ 
    "timestamp": 1504901957320, 
    "status": 403, 
    "error": "Forbidden", 
    "message": "Could not verify the provided CSRF token because your session was not found.", 
    "path": "/compute" 
} 

を取得正しく動作していないが、今私は、私は春にCSRFを無効にすることができます知っているではなく、ベストプラクティスのthats。 spring-bootは自動的にCSRFトークンを設定するか、動作させるために何かを追加する必要がありますか?問題は、私は私がトークンを作成し、バックエンドからそれを設定していないよトークン

let headers = new Headers(); 
headers.append("Content-Type", "application/json"); 

this.http.post("/compute", JSON.stringify(source), { headers }).subscribe((response: Response) => { 
    if (response.ok) { 
    this.mainpage.terminalComponent.logToTerminal(new Date(), response.text()); 
    } 
}); 

か、そのを追加していないよ、私の角度コードからの要求を行っているときならば今、私は知らないのですか?

+1

'headers'に' CSRF'トークンが追加されていません – Aravind

+0

Okej!私は角張った状態から始めました。どのようにしてトークンを取得し、それを 'ヘッダ 'に追加するのですか?迅速な回答btwありがとう! @Aravind –

答えて

0

この公式によると、Spring Security and Angular JS tutorialによる。 AngularにはCSRFが組み込まれています。

角度は、クッキーに基づいてbuilt in support for CSRF(「XSRF」と呼ばれます)です。

XSRF-TOKENという名前のクッキーをAngularに戻すカスタムのフィルタをスプリングブート側で使用できます。

@Configuration 
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER) 
protected static class SecurityConfiguration extends WebSecurityConfigurerAdapter { 
    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
    http 
     .httpBasic().and() 
     .authorizeRequests() 
     .antMatchers("/index.html", "/home.html", "/login.html", "/").permitAll().anyRequest() 
     .authenticated().and() 
     .csrf() 
     .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()); 
    } 
} 

詳細については、チュートリアルの「CSRF保護」を参照してください。

関連する問題