SpringBoot - Angular 5 - CSRF

时间:2017-11-16 16:25:13

标签: spring-boot csrf csrf-protection angular5

我现在失去了,需要一些帮助。

我有一个

  • 使用SpringSecurtiy 4.3的SpringBoot服务器。
  • Angular 5 App

并希望启用CSRF保护,因为默认情况下应启用它们(文档说明) :它不是!

在SpringBoot上我需要添加这些安全配置:

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

On Angular我需要添加这些模块:

imports: [
    ...,
    HttpClientModule,
    HttpClientXsrfModule, //(!)
...

服务器底线在每个响应中发送XRSF-TOKEN。

- 但每个人都不同。那是对的吗?我期望在客户会话中保持不变。

- 这里的主要问题是Angular5在其后调用中仍然没有使用XRSF-TOKEN(例如)。它没有在请求中设置X-XSRF-TOKEN。

我做错了什么或错过了什么?

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,我认为这是因为角度版本5的回归。

在修复此问题之前,您可以像我一样添加自己的“X-XSRF-TOKEN”标题。

 constructor(private http: HttpClient, private tokenExtractor: HttpXsrfTokenExtractor) {
    }

然后手动提取令牌

const token = this.tokenExtractor.getToken() as string;

并将其添加到标题

this.http.post<any>(url, body, {headers: new HttpHeaders().set('X-XSRF-TOKEN', token)})

Houssem