Какой лучший способ реализовать аутентификацию с использованием логина / пароля И других социальных сетей? - PullRequest
1 голос
/ 15 декабря 2010

Я попытаюсь объяснить мою проблему:

Я бы хотел, чтобы пользователи могли подключаться к моему API через свои собственные учетные записи (логин / пароль) или через социальную сеть (сначала Facebook).

Тогда я бы позволил любому приложению использовать мой API с аутентификацией пользователя.

Моя первая мысль, когда авторизировать пользователя через его / ее логин / пароль и вернуть используемый токенкак сеанс для следующих запросов.

Но OAuth может показаться лучшей реализацией, за исключением того, что я не знаю, как это сделать:

  • Одно из моих приложений будет иметьподключиться через логин / пароль, как в твиттере (я должен где-нибудь реализовать аутентификацию логин / пароль, если я не хочу, чтобы мой пользователь входил в систему: p)
  • Придется ли мне также регистрировать свои приложения в oauthsystem (неужели твиттер добавил свое веб-приложение к своему oauth?)
  • Как объединить аутентификацию через другие социальные сети.Конкретно, пользователь должен будет OAuth к моему API, который будет авторизоваться в социальной сети.

Я немного растерялся, как это сделать, если кто-то может мне помочь, я был бы очень признателен!

Спасибо

Обновление 1 : Flickr и Lastfm, похоже, не используют OAuth, а альтернативную систему аутентификации, которая выглядит следующим образом:

  • Пользователь перенаправляется на Flickr / Lastfm
  • Пользователь сам авторизуется и принимает использование приложения
  • Flickr / Lastfm возвращается на URL-адрес обратного вызова с временной лягушкой (для flickr) или токеном (дляlastfm)
  • Приложение должно вызвать провайдера с временным frob / token (среди прочего, как api_key и api_sig) и получить взамен токен сеанса, который будет использоваться для следующих вызовов.

Обновление 2 : На самом деле StackApps является конкретным случаем моей проблемы: вы можете войти в систему через их систему логина / пароля или ИЛИ openId, и вы можете использовать их API.

1 Ответ

1 голос
/ 15 декабря 2010

OAuth требуется только для того, чтобы заставить других использовать ваш API в других сервисах, т. Е. Авторизовать сервисы для использования вашего API без явной необходимости для пользователей сервиса-посредника входить в ваш сервис, предоставляя учетные данные пользователя для третий участник.

Мне кажется, что вам нужен OpenID , механизм кросс-прикладной аутентификации . Вам просто нужно реализовать клиент OpenID, принимающий сторонние OpenID для аутентификации пользователей, чтобы впоследствии идентифицировать их, когда они используют API вашего сервиса. Это должно быть дополнено обычным «локальным» механизмом аутентификации пользователя (то есть страница ввода логина / пароля)

Вам понадобится OAuth, чтобы предоставить возможность использовать ваш API на других сайтах.

...