联合身份验证抛出"检测到潜在危险的request.form值

时间:2018-02-20 14:06:58

标签: security authentication runtime-error sitecore8 federated

我们有一位客户要求我们使用联合身份验证来保护其Sitecore 8.0网站的一部分。他们将网站托管在一台服务器上,并且他们的身份验证系统位于其后端的其他位置。以下是他们为实现身份验证而给我的代码:

Startup.Auth.cs     公共部分类启动     {         private static string realm = System.Configuration.ConfigurationManager.AppSettings [" ida:Wtrealm"];         私有静态字符串adfsMetadata = System.Configuration.ConfigurationManager.AppSettings [" ida:ADFSMetadata"];

    public void ConfigureAuth(IAppBuilder app)
    {
        app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
        app.UseCookieAuthentication(new CookieAuthenticationOptions());

        app.UseWsFederationAuthentication(
            new WsFederationAuthenticationOptions
            {
                Wtrealm = realm,
                MetadataAddress = adfsMetadata
            });
    }


}

然后,就像将[Authorize]属性添加到控制器操作一样简单。对于此特定控制器操作,有[HttpGet]操作和[HttpPost]操作。

当我访问安全页面时,我会被正确地重定向到他们的ADFS系统。然后我可以输入凭据,输入正确的凭据后,我会被重定向回我的安全页面,但是会引发以下错误:

  

从客户端检测到潜在危险的Request.Form值   (wresult = T:RequestSecurityTo ...)

我知道我已成功登录,因为我可以浏览并访问其他页面或完全关闭浏览器,并且它不会再将我重定向回登录页面,它只是让我回来带有该错误的安全页面。

我已经尝试在get动作和post动作上禁用输入验证,我尝试从这些动作中删除所有内容,只是返回一个字符串而不是ActionResult,这样我就可以确保页面上没有任何内容导致任何奇怪的事情。

我认为ADFS登录页面导致了问题,因为看起来当您访问登录页面时,在成功登录后,页面会回发到您尝试访问的安全页面,可能包括一些标头中的HTML或JS并导致验证错误。在随后访问我的安全页面时,由于我已经登录,我可以看到该页面短暂地重定向到ADFS页面(可能是为了测试我还没有登录)然后将我反弹回我的安全页面。

我也尝试过运行Wireshark和Fiddler尝试查看标题中的内容,但我似乎无法从这些工具中获得任何有用的东西(特别是Wireshark,我无法和#39;弄清楚如何从中获取标题信息,并且没有HTTP请求(发布或获取)发生在我可以看到的安全页面上。

我可以尝试解决此问题吗?为什么我的控制器操作没有遵守ValidateInput(false)?我认为至少,它至少会让我到达我的页面。

最后,我说我已经读过这个并将requestValidationMode添加到我的网站,但现在他们的ADFS已关闭,所以我无法验证这是否有效,直到#39 s备份。

https://kb.sitecore.net/articles/031258

1 个答案:

答案 0 :(得分:0)