У меня есть веб-сайт, который пытается вызвать действие контроллера MVC на другом веб-сайте. Эти сайты устанавливаются как доверительные доверительные отношения в AD FS 2.0. Все аутентифицируется и отлично работает при открытии страниц в окне браузера между двумя сайтами. Однако при попытке вызвать действие контроллера из JavaScript с использованием метода jQuery AJAX он всегда терпит неудачу. Вот фрагмент кода того, что я пытаюсь сделать...
$.ajax({
url: "relyingPartySite/Controller/Action",
data: { foobar },
dataType: "json",
type: "POST",
async: false,
cache: false,
success: function (data) {
// do something here
},
error: function (data, status) {
alert(status);
}
});
Проблема заключается в том, что AD FS использует JavaScript для отправки скрытой формы html доверяющей стороне. При трассировке с Fiddler я вижу, что он попадает на сайт AD FS и возвращает эту html-форму, которая должна публиковать и перенаправлять на действие контроллера, прошедшее проверку подлинности. Проблема заключается в том, что эта форма возвращается в результате запроса ajax и, очевидно, будет терпеть неудачу с ошибкой парсера, поскольку запрос ajax ожидает json от действия контроллера. Похоже, что это будет распространенным сценарием, так что, как правильно связаться с AD FS из AJAX и обрабатывать это перенаправление?