Anti Forgery Cookie Token具有不同的ID

时间:2017-05-23 10:51:22

标签: ajax cookies asp.net-core asp.net-core-mvc csrf

我正在使用MVC视图和Web API的组合开发ASP.NET Core Web应用程序。我还使用Identity进行用户管理。

我现在想为我们的Web API启用Anti-Request-Forgery Tokens。为此,我将Razor视图中的IAntiForgery服务用于GetAndStoreTokens,并将RequestToken转发为$.ajax作为标题的调用,如the official documentation中所述部分JavaScript。

当我运行与用户登录时执行Web API请求的相应页面(Cookie-Authentication)时,我还可以看到请求令牌已正确设置为HTTP标头(请参阅图像中的橙色框)。但是,ASP.NET Core的Anti-Forgery验证通过以下消息拒绝请求:

防伪令牌验证失败。所需的防伪cookie" .AspNetCore.Antiforgery.ybHEizTXFmU"不存在。

因此,Anti-Forgery-Token(蓝盒子)的cookie部分就是问题 - 密钥以不同的ID开头: .AspNetCore.Antiforgery.lUjKpn5xN20 而不是 .AspNetCore.Antiforgery.ybHEizTXFmU

Request Headers

这怎么可能发生? Web App和Web API位于同一个进程/同一个域中,因此不会执行Cross-Origin-Calls。这是$.ajax的问题(我无法解释,因为目标网站的浏览器cookie应该被重用)或ASP.NET Core Anti-Forgery(甚至是Identity)模块中的问题?

0 个答案:

没有答案