Spring OAuth2 + REST WS с социальным входом

Я собираюсь создать мобильное (и веб) приложение, которое позволит регистрировать электронную почту/пароль вместе с регистрацией в социальных сетях (facebook, google). Собственное или веб-приложение будет вызывать веб-службы REST (защищенные Spring OAuth2). Социальный вход будет обрабатываться собственным /веб-приложением. Служба REST не будет знать, если пользователь вошел в систему. В случае регистрации по электронной почте имя пользователя/пароль будет передано в WS. Учитывая факты, каков стандартный или хороший подход к обеспечению безопасности служб REST? Есть ли опыт работы с подобной архитектурой?

Пара идей, которые мы прорабатываем:

  1. В начале, когда приложение запускается, передайте идентификатор устройства в WS. WS автоматически отправит push-уведомление на устройство (используя apple/google), содержащее один код авторизации. Этот код будет передан для аутентификации OAuth2. Но не уверен, как обращаться с веб-приложением здесь.
  2. После того, как пользователь войдет в социальную сеть, получите токен передачи социального идентификатора от поставщика социальных услуг. Передайте токен социального доступа и этот идентификатор в WS. WS проверит токен по идентификатору, выполняющему вызов службы oauth провайдера (например, https://graph.facebook.com/me?fields=id&access_token=XXX ).

person Mithun    schedule 16.01.2015    source источник
comment
будьте осторожны с идентификатором устройства, не гарантируется, что он всегда останется неповрежденным   -  person mariubog    schedule 16.01.2015
comment
Возможно, это поможет: это и это   -  person FrAn    schedule 17.01.2015
comment
Спасибо FrAn и пользователю 1289300. Я просмотрел статьи и еще несколько статей в Интернете. Каждый реализовал собственные решения и не может найти стандартизированное, хорошо задокументированное решение. Моя основная проблема заключается в том, что пользователь аутентифицируется на мобильном устройстве с помощью социальных сетей (facebook, google) и хочет получить доступ к службе REST приложения. Но служба REST моего приложения не знает, действительно ли пользователь вошел в систему.   -  person Mithun    schedule 19.01.2015


Ответы (1)


В конце концов мы решили использовать вариант № 2, так как он выглядит более надежным, а аналогичная архитектура использовалась во многих проектах. Мы передадим токен социальной сети в службу REST через безопасный HTTP.

person Mithun    schedule 28.01.2015
comment
Не могли бы вы поделиться более подробной информацией о том, как вы этого добились, у нас точно такая же проблема - person zalis; 03.02.2017
comment
Прошло много времени с тех пор, как я опубликовал это, и я уверен, что технология, конечно, изменилась :) Вы используете Spring Social? Я как бы отталкиваюсь от того, что узнал изначально. Вместо того, чтобы использовать JS-библиотеку на стороне клиента для входа в социальные сети, вы можете скорее вызвать конечную точку Spring Social. У меня есть легкодоступный код, но он находится в бэкэнде Ionic + Node. Я почти уверен, что вы можете сделать то же самое с Spring social. - person Mithun; 04.02.2017
comment
Ionic - это именно то, что мне нужно. В идеале я хочу сделать танец OAuth2 в самом приложении, а позже, как только access_token будет получен от facebook, отправить его на мой Java-сервер, где я предполагаю, что Spring Social проверит этот токен и предоставит моему пользователю другой access_token, который можно использовать внутри мое приложение - person zalis; 23.03.2017