了解JHipster中的HTTP会话安全机制

时间:2018-10-16 10:17:18

标签: csrf jhipster

我试图弄清楚JHipster如何使用HTTP会话保护应用程序安全并记录用户。 到目前为止,我已经设法理解了这样的流程:

1)登陆页面home.component将请求发送到api/account 带有会话Cookie(如果有的话)

  • 如果存在有效的会话>>使用存储的cookie中的凭据,然后登录用户
  • 如果否>>后端服务器响应HTTP 401并发送XSRF cookie作为响应

  • 据我了解,对此负责的是Spring Security

    2)如果没有活动会话,我们可以填写登录表格并登录     向api/authentication发送请求(需要步骤1中的XSRF cookie)

  • 如果一切正常>>响应HTTP 200并发送新的XSRF cookie     
  • 如果没有>> HTTP 403并发送新的XSRF cookie

    3)第2步成功后,前端将凭据从登录表单发送到api/account     

  • 再过一次Spring Security检查XSRF cookie值(这次是从步骤2开始)     
  • 如果调用用户登录的所有正常>>业务逻辑

    但是在所有这些步骤中,我们需要拦截后端发送的cookie,然后将它们发送回去,以便能够通过CSRF保护。
    JHipster项目的哪一部分负责?
    是吗?使用webpack / browsersync还是JHipster创建的一些我缺少的Angular代码?

    编辑
    当我要对自定义模板/样式和JHipster生成的服务进行大量更改时,出现了我的问题。我已经将模板与jhipster服务相关联。

    当我尝试登录用户时,我会进入spring控制台,如下所示:
    Forbidden: Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-XSRF-TOKEN'
     从之前的请求到api/authentication,我得到的答复是
    Set-Cookie: XSRF-TOKEN=a129cb47-ec96-47be-aaae-69f90848c466; path=/
    在浏览器网络中。

    所以我用错误的名称设置了cookie。我已在浏览器中手动将cookie名称更改为:X-XSRF-TOKEN并重新发送请求。新错误如下所示:
    Forbidden: Could not verify the provided CSRF token because your session was not found.

    我对流程的了解不够,所以我无法找出问题所在。也许我搞砸了,也许JHipster生成了一些负责此工作的代码。 JHipster Angular前端中有一些类,例如StateStorageService。他们参与了我的问题还是与该问题无关?

  • 1 个答案:

    答案 0 :(得分:0)

    将移动应用程序连接到Spring Boot的后端时,我遇到了同样的问题。因此,基本上,Angular在核心功能下有一种称为拦截器的方法。在拦截器下,收集响应,并在浏览器Cookie或我的情况下的Ionic Local Storage中将Cookie捕获并更新X-XSRF-TOKEN。