Защита REST API с помощью Facebook OAuth - PullRequest
20 голосов
/ 07 сентября 2011

Я создаю приложение / API, которое позволяет пользователю входить через Facebook, Twitter или Google.Мне интересно, каковы лучшие практики, позволяющие этим пользователям использовать одну и ту же учетную запись для входа в API.

  1. Пара идей, которые у меня были, - передать токен / cookie аутентификации в заголовкеAPI для каждого запроса и используйте его для аутентификации на бэкэнде.
  2. Запустите мою собственную настройку OAuth и сделайте так, чтобы пользователь аутентифицировался один раз с помощью бэкенда, чтобы получить мой токен OAuth и использовать его с тех пор.

Ответы [ 2 ]

1 голос
/ 29 сентября 2012

Я делаю то же самое, и мое решение состоит в том, чтобы сопоставить адреса электронной почты, которые вы получаете от этих соответствующих API.

Для Facebook вам нужно специальное разрешение от конечного пользователя, чтобы получить зарегистрированный там адрес электронной почты. Вы делаете это, добавляя &scope=email к первому запросу oauth.

Недостатком является то, что вам необходимо получить это разрешение от конечного пользователя, и оно может отклониться. Другим недостатком является то, что пользователям необходимо использовать одинаковые адреса электронной почты для Google, Facebook и Twitter.

Преимущество состоит в том, что пользовательские записи объединяются автоматически, поэтому пользователи могут напрямую получать доступ ко всем своим данным, если они вошли в первый раз через Google, а второй раз через Facebook.

Другой подход заключается в том, чтобы вручную объединить их данные, заставив их войти в Google, когда они уже вошли через Facebook. Затем вы можете сделать вывод, что это один и тот же пользователь, даже если они используют разные адреса электронной почты для обоих. Но это более утомительный подход, так как вам все равно нужно объединить пользовательские данные приложения из обеих учетных записей.

0 голосов
/ 13 декабря 2012

Ваше первое решение - именно то, как я это делаю. Поскольку все мои остальные службы не имеют состояния, токен доступа идет в заголовке и анализируется фильтрами аутентификации Spring при каждом запросе. Я использую Grails Sever с плагином spring-security-oauth. У нас также есть веб-сайт, который позволяет использовать сеансовые куки для доступа через браузер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...