Федеративная аутентификация выбрасывает "обнаружена потенциально опасная величина request.form
У нас есть клиент, который просит нас защитить раздел своего сайта Sitecore 8.0 с помощью федеративной аутентификации. Они размещают сайт на одном сервере, а их система аутентификации размещается где-то еще в их серверной части. Вот код, который мне дали для реализации аутентификации:
Startup.Auth.cs открытый частичный класс Startup {частная статическая строка 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, я не мог понять, как получить информацию заголовка этого и никаких HTTP-запросов (post или get) не происходило с моей защищенной страницей, которую я мог видеть.
Есть ли другие вещи, которые я могу попытаться устранить это? Почему ValidateInput(false) не соблюдается в моем действии контроллера? Я бы подумал, что как минимум это позволит мне попасть на мою страницу.
Наконец, я скажу, что я прочитал это и добавил requestValidationMode на свой сайт, но теперь их ADFS не работает, поэтому я не могу проверить, что это было сделано, пока не будет выполнено резервное копирование.
1 ответ
Мне удалось использовать конвейер Sitecore, чтобы отключить проверку запросов.
http://blog.baslijten.com/how-to-add-federated-authentication-with-sitecore-and-owin/