首页 > 解决方案 > Sping Security、JSF 2.2 和 CSRF 以及用于登录的支持 bean

问题描述

设想:

我有一个 JSF 2.2 应用程序,它与 Spring Boot (Joinfaces) 和 Spring Security 集成以进行登录。我读过 JSF 2.2 内置了 CSRF 保护(我们有一个基本的应用程序,支持 bean 视图范围):

https://arjan-tijms.omnifaces.org/p/jsf-22.html#869

也就是说 - 在登录页面上,我们有 4 个输入

  1. 用户
  2. 密码
  3. 下拉选择(从支持 bean 预加载)
  4. 下拉选择(根据输入 #3、ajax 填充)

我开始对在 Spring Security 中启用 CSRF 会发生什么感到好奇,并立即注意到 #4 中的下拉列表没有填充(网络中的 302 - 所以它似乎是 CSRF'd?)

但是 - 如果我在 Spring Security 中禁用 CSRF,它不是也在登录页面禁用它吗?那么我不能强制从另一个域登录吗?

@Override
protected void configure(HttpSecurity http) throws Exception 
{
     http.csrf().disable();
     //http.csrf().ignoringAntMatchers("/pages/*");
}

有没有办法以某种方式允许对登录页面进行 CSRF 保护,允许 ajax 调用成功完成并填充输入 #4 并禁用所有其他视图?我意识到有一个 ignoreAntMachers 可以用于我的问题的最后一部分,但它可以用于登录,从而中断 ajax 调用以填充下拉列表。

标签: jsfspring-security

解决方案


推荐阅读