Я использую пример кода проверяющей стороны DotNetOpenAuth MVC (с некоторыми косметическими изменениями) для интеграции OpenId в приложение ASP.NET MVC.
Код работает отлично, за исключением следующей ситуации: когда проверяющая сторона (мое приложение) является доверенным сайтом под IE, и я перехожу на этот сайт из любого места, кроме хост-компьютера, происходит перенаправление на поставщика OpenId висит.
В частности, код достигает точки, когда метод контроллера возвращает ActionResult, который перенаправляет к провайдеру, а затем IE просто сидит и выполняет циклы.
Я знаю, что можно поддерживать аутентификацию OpenId в MVC, даже если проверяющая сторона является доверенным сайтом, потому что я сам проверил stackoverflow и он работал нормально.
Я использовал Fiddler, чтобы посмотреть трафик, и никакой провайдер никогда не обращался к провайдеру, когда мое приложение является доверенным сайтом.
Есть идеи?
Строка в рассматриваемом примере кода DotNetOpenAuth:
возврат
openid.CreateRequest (Request.Form [ "openid_identifier"]) RedirectingResponse.AsActionResult ();.
Обновление № 1
В Fiddler я вижу, что вызываемое мной действие контроллера возвращает ответ 302 с заголовком местоположения для перенаправления, но после этого ничего не происходит. Я перепроверил с stackoverflow.com и с nerdbank.org и увидел точно такое же сбойное поведение на этих двух сайтах. Я добавил оба сайта как доверенные, полностью закрытые из IE, а затем, когда вернулся на эти сайты, я НЕ смог успешно войти в систему.
Я использую IE 8 в Windows 7. Я могу предоставить полные журналы Fiddler, если это будет полезно.
Кроме того, в разных местах я видел упоминание о том, что когда сайт является «доверенным», IE блокирует перенаправления на ненадежные домены.
Обновление № 2
Я добавил поставщика открытых идентификаторов на свои доверенные сайты, и теперь происходит перенаправление, поэтому процесс входа в систему работает. Так что, похоже, это проблема агента пользователя (IE).
Обновление № 3
Я нашел эту ссылку: текст ссылки
Кажется, для описания подобной проблемы. Я следовал предложенным решениям и установил в IE защищенные сайты и обычную интернет-зону в «Защищенном режиме». Кажется, это решило мою проблему.