Spring 安全 CSRF CORS
Spring security CSRF CORS
问题陈述: 我有一些 restful API 使用 spring 安全性进行 CSRF 保护。此外,这些 API 将通过 Angular WEB UI 从 不同的 Origin/domain 访问。我不需要 Spring 身份验证,因为身份验证由 Siteminder 处理。
方法:
我遵循了来自 Dave Syer 的 link 的 CSRF 保护:The Login Page: Angular JS and Spring Security Part II 除了一个问题(下图)外工作完美。
问题:当我的 angular html 客户端访问相同 origin/domain 上的 RESTful API 时,这段代码工作得很好];但是当我尝试从不同来源访问相同的 API 时,出现错误 403 - Access Forbidden - CSRF token error.
到目前为止,我通过扩展您的示例尝试过的方法:
添加了 CORS 过滤器 - Enabling Cross Origin Requests for a RESTful Web Service
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
以上没有运气。
请建议我是否需要做任何其他事情才能使其正常工作。
谢谢,
苏曼
CSRF 和 CORS 不是一回事。您现在可能已经对 CORS 部分进行了排序,但是您需要向任何 POST/PUT/DELETE 请求添加一个 CSRF 令牌。 Spring 安全性在您引用的博客系列中的 header 中发送令牌,然后 Angular 从那里获取它(您需要添加几行代码才能使其正常工作)。
问题陈述: 我有一些 restful API 使用 spring 安全性进行 CSRF 保护。此外,这些 API 将通过 Angular WEB UI 从 不同的 Origin/domain 访问。我不需要 Spring 身份验证,因为身份验证由 Siteminder 处理。
方法: 我遵循了来自 Dave Syer 的 link 的 CSRF 保护:The Login Page: Angular JS and Spring Security Part II 除了一个问题(下图)外工作完美。
问题:当我的 angular html 客户端访问相同 origin/domain 上的 RESTful API 时,这段代码工作得很好];但是当我尝试从不同来源访问相同的 API 时,出现错误 403 - Access Forbidden - CSRF token error.
到目前为止,我通过扩展您的示例尝试过的方法:
添加了 CORS 过滤器 - Enabling Cross Origin Requests for a RESTful Web Service
response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); response.setHeader("Access-Control-Max-Age", "3600"); response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
以上没有运气。
请建议我是否需要做任何其他事情才能使其正常工作。
谢谢, 苏曼
CSRF 和 CORS 不是一回事。您现在可能已经对 CORS 部分进行了排序,但是您需要向任何 POST/PUT/DELETE 请求添加一个 CSRF 令牌。 Spring 安全性在您引用的博客系列中的 header 中发送令牌,然后 Angular 从那里获取它(您需要添加几行代码才能使其正常工作)。