Подтвердить что ты не робот

Защита API REST с помощью Facebook OAuth

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

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

Ответ 1

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

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

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

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

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

Ответ 2

Ваше первое решение - это именно то, как я это делаю. Поскольку все мои службы отдыха не имеют статуса, токен доступа входит в заголовок и анализируется фильтрами проверки подлинности spring для каждого запроса. Я использую grails с плагином spring -security-oauth. Мы также запускаем веб-сайт, который позволяет использовать файлы cookie сеанса для доступа на основе браузера.