Spring OAuth2 客户端,CSRF 保护

Posted

技术标签:

【中文标题】Spring OAuth2 客户端,CSRF 保护【英文标题】:Spring OAuth2 client, CSRF protection 【发布时间】:2016-11-12 01:41:34 【问题描述】:

我正在使用 Spring 构建 Web 应用程序。我有多个 Spring 客户端应用程序和一个 OAuth2 授权和资源服务器。最终用户首先在客户端应用程序中进行身份验证,然后客户端应用程序从资源服务器请求一些资源(在从授权服务器获取访问令牌之后),处理数据并将其返回给用户。用户还可以更改资源服务器上的数据,但只能通过客户端应用程序。为了获取资源,仅使用客户端凭据,在这种情况下,资源所有者是受信任的客户端。

在资源服务器上仅存储客户端详细信息和资源,不存储有关最终用户的信息。资源服务器不关心谁请求了资源,只是该请求来自授权的客户端应用程序。

客户端应用具有 CSRF 保护,但是否需要在授权服务器上启用 CSRF 保护?我想不出任何攻击场景,因为通信是服务器到服务器的,客户端凭据被安全存储,用户无法直接访问资源。

【问题讨论】:

【参考方案1】:

如果您的授权服务器只能从应用程序服务器访问,我看不出您可以通过在两者上启用 CSRF 保护来产生什么兴趣。 最终用户可访问的服务器上的 CSRF 保护应该足够了。 此外,如果您的应用程序服务器上的 CSRF 保护被破坏,然后您的应用程序与您的授权服务器通信,我看不出您如何在授权服务器中检测到它,因为请求是由您的服务器完成的。

【讨论】:

以上是关于Spring OAuth2 客户端,CSRF 保护的主要内容,如果未能解决你的问题,请参考以下文章

Spring Security Oauth2 : Possible CSRF detected

Spring-Security对CSRF攻击的支持

Spring 安全中的条件 CSRF 保护

如何在Spring启动应用程序中进行REST调用而不在Spring安全性中禁用CSRF保护?

用于ajax调用的spring security csrf保护

REST 后端的 Spring Security CSRF 保护 - 将 Synchronizer Token Pattern 传输到客户端