2013-12-02 4 views
0

Я работаю над приложением, позволяющим пользователям регистрироваться и регистрироваться с помощью Google и Yahoo через OpenID с использованием ASP.NET MVC4 и библиотеки DotNetOpenAuth. Google работает нормально, и Yahoo работает на несколько месяцев, а также несколько дней назад.Ответы на две аутентификации OpenID, возвращающиеся с Yahoo с помощью Internet Explorer

По какой-то причине, используя мою локальную версию IE 11 после аутентификации с Yahoo, два ответа отправляются обратно на веб-сервер, и каждый проверяется в отдельном потоке. Один ответ определяется как действительный, а другой ответ считается недействительным, поскольку первый ответ уже проверен. Затем ответы отправляются обратно пользователю, и в зависимости от того, какой из них отправлен первым, могут произойти два очень разных результата.

Использование Chrome и Firefox работает правильно. Yahoo возвращает только один ответ. Использование разных версий IE на других машинах (включая 11) также работает правильно. Используя скрипт, я проверил, что отправляются правильные запросы. Я попытался очистить свой кеш, отключить любые аддоны и изменить режимы работы с документами и браузерами с помощью инструментов dev и не повезло. Есть ли что-то, что может привести к возврату двух ответов?

Основной код для отправки запроса ниже. Файл конфигурации использует все значения по умолчанию.

OpenIdRelyingParty openid = new OpenIdRelyingParty(); 
IAuthenticationRequest request = openid.CreateRequest(Identifier.Parse("https://me.yahoo.com")); 

var fields = new ClaimsRequest(); 
fields.Email = DemandLevel.Require; 

request.AddExtension(fields); 

return request.RedirectingResponse.AsActionResult(); 
+0

Из того, что я прочитал, это не проблема с DNOA. Вы пытались отлаживать внутри IE, чтобы понять, почему он дважды запускает submit? –

+0

Я отлаживал страницу входа в Yahoo, но это сложно, потому что скрипты минитируются. Одна особенная вещь, которую я заметил, - это когда я вхожу в сокращенный код, только один ответ отправляется обратно, а не два. Это заставляет меня думать, что что-то не так с моим экземпляром IE. – user3059017

ответ

0

Оказывается, что проблема заключалась в том, что я отправлял запрос, чтобы сказать Yahoo перенаправить обратно к незащищенному соединению после аутентификации. Если я скажу Yahoo, чтобы вернуться к URL-адресу https, а не http, все работает правильно, и я получаю только один запрос, возвращающийся в приложение.