OAuth с DotNetOpenAuth? - PullRequest
       23

OAuth с DotNetOpenAuth?

2 голосов
/ 27 сентября 2011

Хорошо, вот мой вопрос. Я понимаю процесс протокола OAuth, однако у меня есть некоторая путаница вокруг него. Я пытаюсь воспользоваться DotNetOpenAuth. Здесь я ничего не понимаю. Предположим, пользователь (новый пользователь) пытается войти на мой сайт с помощью Twitter. Процесс идет так (не стесняйтесь поправлять меня, если я ошибаюсь):

  • Выдается токен запроса (если мои ConsumerKey и ConsumerSecret в порядке).
  • Затем выдается авторизационный токен, и пользователь перенаправляется в Twitter.
  • Пользователь авторизует мое приложение. И токен доступа выдается.
  • Я получаю данные текущего пользователя и сохраняю их в базе данных (вместе с токеном доступа).

Пока все хорошо. Теперь вот запутанная часть. Пользователь выходит из системы. Затем возвращается и пытается снова авторизоваться в Twitter. Как определить его токен доступа, если я не могу получить его личность до того, как у меня есть токен доступа? У меня есть его в базе данных, однако я не могу определить, кто он, пока он не повторил те же самые шаги снова и снова. Я уверен, что что-то упустил, и я буду признателен, если вы укажете на это. Мне известно о IConsumerTokenManager, я попытался выполнить обратный инжиниринг InMemoryTokenManager и посмотреть, как он работает, но до сих пор не ясно.

1 Ответ

5 голосов
/ 30 сентября 2011

Ах, радости (хм, их отсутствие) использования протокола авторизации для аутентификации . Мне не нравится OAuth для входа в систему. Grrr ...

В связи с этим позвольте мне немного пояснить поток:

  • Выдается «несанкционированный» токен запроса (если ваш ConsumerKey и ConsumerSecret в порядке).
  • Пользователь авторизует ваше приложение и отправляется обратно в ваше приложение
  • Ваш токен запроса теперь «авторизован», и DotNetOpenAuth обменивает его на токен доступа.
  • Вы используете токен доступа, чтобы получить данные текущего пользователя и сохранить их в базе данных.

Когда позже анонимный пользователь заходит на ваш сайт и хочет войти в систему, вы начинаете процесс заново. Только на этот раз, поскольку Twitter распознает пользователя (после того, как они войдут в систему, если потребуется), Twitter, скорее всего, немедленно перенаправит пользователя обратно в ваше приложение, а не попросит пользователя подтвердить вход в систему. Токен запроса будет авторизован, вы обменяете его на токен доступа и будете использовать его для получения данных пользователя. Ой! Теперь вы видите, что данные соответствуют записи, уже имеющейся в вашей базе данных, и приветствуете вашего посетителя обратно.

...