我有一个Java引导微服务,在那里我有一个管理网站和REST端点。该网站在myserver.com/serverwebpage上访问,REST web服务位于myserver.com/api/restendpoint。我使用Spring,在web端具有登录安全性和CSRF,在REST端点端使用HMAC授权。我在网站端有@Controller注释,REST web服务有@RestController注释。该网站运行良好,webservice与GET的工作良好。然而,我只是尝试删除,得到403错误:禁忌,消息:“无法验证提供的CSRF令牌,因为您的会话没有找到”。看起来MVC安全看到REST MVC服务请求并发出CSRF错误,因为我没有提供CSRF号码。当然,我确实为MVC跨脚本安全提供了网页上的CSRF。有人知道怎么解决这个问题吗?是否需要使用不同的端口创建单独的微服务?
发布于 2018-02-18 18:07:59
我无法用Spring来解决这个问题。因此,我刚刚在同一个AWS实例上创建了两个单独的微服务。一个端口号为443的微服务处理web服务并使用Spring。端口8443的另一个微服务处理没有Spring的所有REST调用。这件事很好用。失望的是,我找不到答案,只好继续前进。
发布于 2018-02-09 22:27:23
当您调用DELETE方法时,它们需要CSRF令牌。也许您的DELETE API不带CSRF令牌。您需要在请求头中添加CSRF令牌。
在标头中添加CSRF取决于Ajax框架。如果您的组合是Security + Thymeleaf + jQuery,那么请参考Security文档:
https://stackoverflow.com/questions/48714652
复制相似问题