当前位置: 首页 > 知识库问答 >
问题:

Spring Security oauth/form身份验证和CSRF-它们可以一起工作吗?

诸葛乐逸
2023-03-14

我已经介绍了Spring Security性和oauth身份验证的各种示例。我有它的工作,但不完全让我满意。我正在使用java配置。

关键问题是我只想在某些URL上应用oauth身份验证。假设以“/api”开头的URL需要oauth,以“/app”开头的URL(或任何其他URL)需要具有表单身份验证以及CSRF保护等优点。

这在我当前的配置中确实有效,但是“/app”urls松散的CSRF保护。深入挖掘,看起来ResourceServerConfig调用csrf.disable.所以CsrfFilter类永远没有机会。

我曾尝试创建多个带有不同顺序注释的WebSecurityConfigureAdapter,以支持csrf,但从ResourceServerConfigurerAdapter扩展而来的配置总是胜出。我甚至尝试过csrf请求匹配器,但没有成功。

在使用oauth时是否可以(有选择地)启用CSRF?建议的最佳实践是什么?

共有1个答案

卫嘉佑
2023-03-14

建议的最佳实践(至少我是这样认为的)是始终使用CSRF(比抱歉更安全,如果您的客户端是浏览器,则应将其视为强制性)。因此,我同意,很遗憾OAuth2资源服务器将其关闭。快照中正在进行一些更改a)使其更易于自定义(https://github.com/spring-projects/spring-security-oauth/issues/315)和b)也可能导致违约变更(https://github.com/spring-projects/spring-security-oauth/issues/339). 直到这些问题得到解决。我认为您唯一的选择是不要使用EnableResourceServer,而是编写您自己的版本。

 类似资料:
  • 问题内容: 我正在使用Rails做一个单页应用程序。登录和注销时,使用ajax调用Devise控制器。我遇到的问题是当我1)登录2)退出然后再次登录时不起作用。 我认为这与CSRF令牌有关,该令牌在我退出时会重置(尽管它不应该出现),并且由于它是单页的,因此在xhr请求中发送了旧的CSRF令牌,从而重置了会话。 更具体地说,这是工作流程: 登入 登出 登录(成功201。但是在服务器日志中打印) 后

  • 我试图建立一个简单的iOS /Rails应用程序,在那里我可以创建一个用户,然后使用BCrypt对他们进行身份验证。我试图按照BCrypt的说明进行操作,但我的身份验证过程不起作用。非常新的轨道,所以我肯定我搞砸了一些简单的事情! 要创建新用户,请执行以下操作: 在users_controller.rb 在user.rb 在服务器上: 在2014-08-21 19:32:05-0500开始POST

  • 我遵循了认证教程,但遇到了一些问题。 它不能将变量传递给导入的函数。

  • 我试图在Symfony中基于这个文档构建一个json身份验证机制:https://symfony.com/doc/current/security/json_login_setup.html 这是我的保安,亚姆 这是我在安全控制器中的方法登录 这是我的登录表 下面您可以看到我发送给控制器的AJAX请求 我收到200状态从服务器,但什么也没发生。安全认证机制完全没有反应。而ajax中的成功方法是不调

  • 问题内容: 确保GWT + Tomcat应用程序执行身份验证和授权的最佳策略是什么? 问题答案: 有两种基本策略: 确保入口点; 保护远程服务。 最简单的方法是使用常规的Web应用程序安全工具来限制对GWT生成的html / js文件的访问: 春季安全; web.xml约束。 这样可以让您拥有eg 和。 保护远程服务 如果上述解决方案还不够,您可以进行更深入的研究。我已经通过Spring Secu

  • 电话身份验证失败,出现以下异常: PlatformException(ERROR_SESSION_EXPIRED,sms代码已过期。请重新发送验证码重试。,null) 但如果我使用的电话号码不同于我的电话号码,它就会起作用。我从play store中添加了SHA-1和SHA-256指纹到firebase,并替换了google-services.json。 这是我的代码: