Digg.com стиль oauth

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

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

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

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

2 ответа

Решение

Следующее основано на рабочем процессе, предоставляемом hueniverse:

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

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

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

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

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

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

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

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

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

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

Вот неофициальная картина от меня:


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

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

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

Другие вопросы по тегам