DotNetOpenAuth - перенаправление входа в систему OpenId зависает, когда проверяющая сторона является доверенным сайтом - PullRequest
4 голосов
/ 25 августа 2009

Я использую пример кода проверяющей стороны 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 защищенные сайты и обычную интернет-зону в «Защищенном режиме». Кажется, это решило мою проблему.

1 Ответ

2 голосов
/ 25 августа 2009

Доверенные сайты - это строго функция IE, которая не влияет на выполнение на RP. Поэтому я подозреваю, что RP отправляет инструкцию для перенаправления в пользовательский агент. Скрипач может подтвердить или опровергнуть это. Если в IE есть «функция», которая нарушает перенаправление с доверенного сайта на ненадежный, то я не уверен, что RP может что-то с этим поделать.

Кстати, StackOverflow использует DotNetOpenId (предшественник DotNetOpenAuth), поэтому тот факт, что вы говорите, что он работает для вас, говорит о том, что в вашей конфигурации есть что-то другое, что, возможно, вы можете контролировать, чтобы исправить.

Обновление : в Win7 RC была ошибка в IE8, а в Win7 RTM есть исправление. Если вы работаете с RC, сидите спокойно, чтобы RTM был доступен. Вы также можете повторить этот сценарий в любой другой операционной системе Windows RTM и браузере IE.

...