DotNetOpenAuth oAuth2 Сообщение уже обработано - PullRequest
0 голосов
/ 10 октября 2011

Я открываю dotnetopenauth и пытаюсь использовать его с выпуском oauth2 ctp. Я, должно быть, глуп, но очень сложно заставить это работать на меня.

Так что после многих испытаний я застрял в какой-то момент.

Итак, мое приложение хочет получить токен доступа. Мой обратный вызов приложения http://localhost/myapp/accept.aspx?... Мой oauth-сервер http://localhost/oauth/

Мое приложение запрашивает код. На сервере отобразится страница входа. Я вхожу в систему. Затем спрашивается, хочу ли я предоставить доступ к своему приложению. Я сказал да.

Мое приложение получает ответ с помощью кодового ключа. Поэтому мое приложение запрашивает токен для моего oauth. И когда мой oauth выполняет строку:

public ActionResult Token()
{
    var request = this.authorizationServer.ReadAccessTokenRequest();

Я получил сообщение об ошибке "сообщение уже обработано. Возможно, повторная атака ..." Поэтому я пытаюсь понять, что случилось. Я не могу поиграть с исходным кодом, потому что версия в git не совпадает (интерфейс icryptostore не найден, вы получаете список URL обратных вызовов, а не только один, ...). Если кто-то может объяснить мне, что именно происходит. Из того, что я прочитал, это потому, что это должен быть второй веб-ответ, но поскольку это запись контроллера, я не знаю, что мне не хватает.

Надеюсь, я дал вам достаточно информации.

Заранее спасибо за помощь.

М.

Отредактировано: Я копирую и вставляю неверный вызов действия. Это функция "Token".

1 Ответ

1 голос
/ 12 октября 2011

Возможно, у вас есть два места, которые пытаются ответить на запрос маркера доступа.Тот, который терпит неудачу, будет вторым.У вас должно быть только одно место для разбора этого запроса, чтобы избежать этой ложной ошибки «атаки воспроизведения».

Возможно, в вашем проекте есть реализация INonceStore.Установите точку останова в методе StoreNonce, затем повторите проблему.Скорее всего, вы увидите два попадания в метод StoreNonce.Вы сможете наблюдать за стеками вызовов обоих вызовов, чтобы определить, какой из них вы хотите сохранить, а какой удалить.

...