了解JHipster的HTTP会话安全机制

问题描述 投票:0回答:1

我想弄清楚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项目中的哪个部分负责这个工作? 是使用了webpackbrowsersync还是JHipster创建的一些Angular代码,我漏掉了?EDIT 我的问题出现在我对生成的项目进行了大量的修改,因为我想使用自定义模板和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。它们是否参与了我的问题,或者它们与这个问题无关?

  • csrf jhipster
    1个回答
    0
    投票

    我在将一个移动应用连接到spring boot的后台时,也遇到了同样的问题。所以基本上angular在核心功能下有一个方法叫interceptors。在拦截器下,响应被收集,X-XSRF-TOKEN被捕获并更新到浏览器Cookie中,或者在我的例子中,Ionic Local Storage作为Cookie。

    © www.soinside.com 2019 - 2024. All rights reserved.