DotNetOpenId - получение ошибки повторного воспроизведения с помощью программного и веб-входа - PullRequest
1 голос
/ 24 июля 2009

Я добавляю дополнительную аутентификацию OpenID в систему. Все работает без проблем с DotNETOpenID. Тем не менее, у меня возникает проблема, когда:

  1. Пользователь входит в веб-приложение с использованием стандартного входа в систему (FormsAutentication)
  2. Пользователь связывает некоторый OpenID с учетной записью (мы используем программный вход в систему OpenID здесьчтобы получить заявленное удостоверение)
  3. Пользователь выходит из FormsAuthentication и снова входит в систему с OpenID (используя элемент управления Login).

На последнем шаге мы получаем атаку воспроизведенияошибка. Я подозреваю, что OpenID сохраняет некоторую информацию в хранилище приложений (которая будет использоваться для запросов), которая используется для получения предыдущего запроса вместо запуска нового.

Может ли кто-нибудь помочь пролить свет на проблему здесь? ?

Если проблема в том, как я ее понял, как я могу очистить эту конкретную информацию о состоянии после успешной привязки OpenID к учетной записи, используя программный логин (учитывая, что у меня под рукой успешный запрос)?

Ответы [ 2 ]

2 голосов
/ 24 июля 2009

С каким провайдером вы тестируете? Честно говоря, это звучит как наиболее вероятная виновная сторона в этом случае, поскольку она составляет значение openid.response_nonce. Другое вероятное место, чтобы посмотреть, поддерживаете ли вы (случайно) все параметры строки запроса openid. * В URL между первым и вторым именами входа? Например, на второй странице входа в систему до того, как пользователь вводит свой OpenID, находятся ли его параметры openid. * В URL-адресе страницы? Если это так, то это, вероятно, проблема, и она может быть исправлена ​​вашей программной страницей, заставляя чистый редирект избавиться от них после попытки входа в систему.

0 голосов
/ 05 сентября 2009

Хорошо, реальная проблема, кажется, исчезает после добавления Session.Abandon () (и немного очищает логику аутентификации) между моментом первого назначения OpenID и фактической аутентификацией с ним.

...