我在Umbraco旁边经营着一个MVC网站. MVC站点处理自己的身份验证,完全独立于Umbraco,以及ASP.NET Forms身份验证.它设置一个cookie并在内部使用它来跟踪事物.
在大多数情况下一切正常,但如果我使用上述cookie集登录到我的MVC站点,我尝试使用正确的Umbraco凭据登录到Umbraco管理部分,它会对我进行身份验证并将我重定向到管理部分但是WebAPI调用开始失败.第一个是调用:/ umbraco / backoffice / UmbracoApi / UpdateCheck / GetCheck,它返回一个417 Missing token null HTTP错误响应.
如果我删除我的自定义cookie并刷新页面一切正常.
我不明白我的饼干如何干扰Umbraco的.它不使用ASP.NET Forms身份验证或任何东西.
解决方法
发生此错误是因为您的请求未发送所需的角度CSRF标头cookie.我不确定为什么会出现这种情况,但如果它是您的自定义cookie的错误,它似乎很奇怪.也许您可以告诉我们有关您的问题的更多信息:Cookie名称/值,重现步骤,Umbraco的特定版本,托管环境等….
关于发生了什么的一些信息,返回此错误的代码在这里:
https://github.com/umbraco/Umbraco-CMS/blob/dev-v7/src/Umbraco.Web/WebApi/Filters/AngularAntiForgeryHelper.cs#L94
这是设置CSRF cookie的地方:
https://github.com/umbraco/Umbraco-CMS/blob/dev-v7/src/Umbraco.Web/WebApi/Filters/SetAngularAntiForgeryTokensAttribute.cs
此属性应用于两个操作,一个用于登录,另一个用于检索当前用户数据:
> https://github.com/umbraco/Umbraco-CMS/blob/dev-v7/src/Umbraco.Web/Editors/AuthenticationController.cs#L103
> https://github.com/umbraco/Umbraco-CMS/blob/dev-v7/src/Umbraco.Web/Editors/AuthenticationController.cs#L84
这是在JS中设置标头的地方:
https://github.com/umbraco/Umbraco-CMS/blob/5b9a98ad6ae9e63322c26f7b162204e34f7fcb54/src/Umbraco.Web.UI.Client/src/init.js#L11
根据您的托管环境/设置,有一些奇怪的报告显示某些防火墙剥离/更改数据,例如:
http://our.umbraco.org/forum/umbraco-7/using-umbraco-7/47340-Umbraco-7-plus-ISA-Server-2006
希望根据上面的信息,您可能能够确定问题的开始位置.