Digg.com стиль oauth - PullRequest
       27

Digg.com стиль oauth

1 голос
/ 14 марта 2011

Я пытался выяснить, как digg.com и другие подобные сайты работают с аутентификацией через oauth.Создать учетную запись через oauth довольно просто, пользователь нажимает кнопку подключения Twitter / Facebook, которая затем digg отправляет наш секрет, и если все работает, этот секрет возвращается и сохраняется в качестве токена доступа.

Однако как аутентификация работает таким образом?Например, когда я нажимаю на кнопку входа через твиттер, в твиттер отправляется случайный секрет.Вместо этого Twitter возвращает прежний токен доступа или digg получает идентификатор пользователя Twitter, например, сравнивает его с сохраненным значением в БД, а затем использует оттуда сохраненный токен доступа?

Например: 1. пользовательнажимает логин через твиттер.2. отправляется секрет, твиттер выполняет некоторую обработку и возвращает информацию, такую ​​как имя пользователя / идентификатор / и т. Д. 3. на основе одного из этих возвращаемых значений выполняется опрос базы данных и загружаются строки пользователя, аутентификация проходит успешно.

Я уже не в этом разбираюсь?Может кто-нибудь, пожалуйста, просветите меня?

Ответы [ 2 ]

1 голос
/ 14 марта 2011

Следующее основано на Рабочий процесс , предоставленный hueniverse:

Пользователь нажимает на логин через Twitter.

Digg запрашивает у Twitter токен запроса (не для конкретного пользователя, может использоваться Digg для получения одобрения пользователя от пользователя для доступа к информации пользователя ).

Digg получает маркер запроса и перенаправляет пользователя на URL-адрес авторизации пользователя Twitter OAuth с помощью RequestToekn и просит Twitter перенаправить пользователя обратно после получения подтверждения.

OAuth требует, чтобы поставщики услуг (Twitter) сначала аутентифицировали пользователя, а затем попросили предоставить ему доступ к потребителю (Digg).

Пользователь вводит имя пользователя и пароль (если Пользователь не вошел в систему).

Twitter информирует пользователя о том, кто запрашивает доступ (Digg), и о типе предоставляемого доступа. (Я не знаком с Digg, поэтому возьмем Stack Exchange в качестве другого примера, он только запрашивает доступ к имени пользователя.)

Пользователь утверждает.

Twitter помечает маркер запроса как авторизованный пользователем. Пользователь браузер перенаправлен обратно на Digg.

Digg использует авторизованный токен запроса и обменивает его на токен доступа (используется для доступа к защищенным ресурсам. В случае Stack Exchange - имя пользователя, хотя звучит немного странно).

Digg авторизован через Twitter.

Вот неофициальная фотография, сделанная мной: enter image description here


Выше приведено в Официальном руководстве к OAuth 1.0, но согласно Представляем OAuth 2.0 :

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

0 голосов
/ 14 марта 2011

Если вы хотите реализовать такую ​​аутентификацию, вы можете взглянуть на пример приложения ZF , в котором показан один из способов использования Twitter, facebook, google и т. Д. Для этой цели.

...