2013-02-12 2 views
4

Я использую Spring framework и REST architecutre в своем api. В настоящее время я аутентифицирую свой вызов REST, отправляя имя пользователя и пароль при каждом вызове. И пользователи хранятся в моей базе данных.Войти с помощью facebook и с помощью oauth 2.0 для аутентификации вызовов REST api

Теперь я планирую использовать oauth 2.0 для доступа к моим защищенным ресурсам, а также я планирую использовать функцию Facebook Login в качестве механизма аутентификации.

Я прочитал о spring-security-oauth2 и реализовал в небольшом примере, он отлично работает.

Я читал о весне-социальной, а также реализовал ее и могу получить доступ к facebook api.

Теперь все, что я хочу знать, это то, как я могу войти в систему с помощью facebook, а затем использовать oauth 2.0 для защиты своих ресурсов .

Любая помощь будет глубоко оценена.

+0

У вас возникли проблемы с – smk

+0

@SajitKunnumkal Использование facebook api дает мне токен доступа к facebook, а при аутентификации с помощью oauth 2.0 требуется токен, созданный oauth 2.0. Теперь я смущен, как я могу использовать токен доступа facebook для аутентификации запросов к моим защищенным ресурсам api. – khobab

ответ

3

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

Подумайте об этом так: когда вы используете API Facebook, ваше приложение (A) является потребителем, Facebook (FB) является провайдером, и есть общий пользователь (U1), который объединяет их вместе. Но когда кто-то потребляет ресурсы на вашем сервере, ваше приложение (A) входит в роль поставщика, другое приложение (X) является потребителем, и есть общий пользователь (U2), который объединяет их вместе. Это может быть один и тот же человек (например, U1 == U2), который согласился на договоренность в обоих случаях, но роли поставщика и потребителя изменились.

Я предполагаю, что, вероятно, есть способ получить Spring Security для OAuth, чтобы выпустить тот же токен доступа, который опубликовал Facebook, но это не очень хорошая идея.

+0

, поэтому я хочу войти в мою защищенную oauth api через facebook login, Как я могу это достичь? – khobab

+2

Что обычно делается здесь, так это то, что ваш пользователь будет аутентифицироваться на вашем лицевом интерфейсе HTML вашего приложения через Facebook. Это приведет к тому, что Facebook выдаст токен доступа, с которым вы должны аутентифицировать пользователя. Сервис SpringSignInController или SocialAuthenticationFilter может помочь там. После аутентификации в вашем приложении они разрешат клиенту вашего API получить доступ к API от их имени. Это приведет к тому, что S2OAuth выдаст токен доступа клиенту. –

+1

Обычный пример (не обязательно использование Spring Social или S2OAuth, однако) этого подхода - Foursquare. Вы можете подписаться на Foursquare через Facebook. И вы можете разрешить другому клиенту получить доступ к Foursquare от вашего имени. Но это два разных разрешения и 2 diff. соглашений. Другим примером такого подхода, который использует Spring, является Greenhouse (https://github.com/SpringSource/greenhouse). –