0

В настоящее время я работаю над мобильным приложением, которое позволит пользователю войти в систему через имя пользователя/пароль (OAuth 2.0 Password Grant), Facebook, Twitter или Google. Бэкэнд для этого мобильного приложения закодирован в Spring Boot/Cloud (Java) и использует принципы Microservices. У меня есть несколько небольших сервисов, которые можно обнаружить через Eureka и использовать Spring Cloud Config для централизованной настройки. Все они подвержены мобильному устройству с использованием Spring Cloud Zuul, который действует как обратный прокси. Настройка Spring Security OAuth 2.0, которую я использую в имени пользователя и пароле, затем возвращает токен JWT, этот токен проверяется каждый раз, когда запрос делается на бэкэнд. Я также локально храню пользователей в MongoDB и использую защиту уровня метода. Я хочу добавить Social Вход в моем приложении и он сделать следующее:Каков наилучший способ защитить мобильное приложение и базовую архитектуру Microservices?

  1. на мобильном устройстве сделать OAuth танец и получить маркер доступа

  2. Отправить маркер доступа к серверу, и используя Spring Social, создайте нового пользователя локально и свяжите его с Facebook/Twitter/Google, а затем верните токен JWT, который можно использовать для проверки запросов.

  3. Этот токен JWT должен быть создан Spring Security, и я должен все еще иметь возможность использовать метод Level Security и иметь локальных пользователей

  4. В основном я хочу, чтобы все функции, которые я имею с моим обычаем Spring Security OAuth 2.0 Пароль Грант с Социальными Логин

Это моя первая попытка в проектировании системы, и поэтому с нетерпением жду ответов от тех, с гораздо большим опытом, чем у меня. Я видел много примеров, которые используют Spring Social, но все они предназначены для веб-приложений, а не для мобильных устройств, вот где я сейчас застрял.

Вопросы, которые я бы следующие:

  1. ли мой предложенный подход адекватным? Существуют ли другие подходы, которые являются без гражданства и лучше подходят для мобильных приложений?
  2. Является ли Spring Security OAuth 2.0 и Spring Social Security достаточным для достижения этого? Если да, есть ли ресурсы, которые я могу использовать? Я не нашел много онлайн.
  3. Возможно ли использование Spring Cloud Security в качестве решения?
  4. Должен ли я использовать сторонний провайдер для аутентификации, такой как Auth0 или OKTA?

ответ

1
  1. использование oauth2 без гражданства решения в моей opionion адекватен, из-за:
  2. oauth2 в целом представляет собой протокол, разработанный, чтобы быть полезными в каждом клиенте, который способен выполнить запросы HTTP. Поскольку социальные сети, о которых вы говорили, поддерживают OAuth2. Если все пойдет не так, вы все равно можете использовать их вручную, учитывая спецификации oauth2, которые они реализуют.

В общем, я вижу проблему с «аутентификацией с помощью XXX и использованием этого токена как JWT для моих запросов». Это невозможно, потому что этот токен предназначен для серверов ресурсов. Вместо этого вам нужно разделить два процесса: аутентификация и авторизация. Короче говоря, вы можете использовать конечные точки социальных сетей для аутентификации пользователя в своем бэкэнд, что приводит к созданию второго поколения oauth2 с вашего сервера авторизации. Это может создать JWT, используя все функции от spring-oauth.

  1. Этот libary должен использоваться дополнительно, поскольку он помогает настроить решение безопасности для широкого спектра приложений. В качестве примера у вас есть собственный сервер авторизации (который аутентифицируется с использованием социального входа) и нескольких серверов ресурсов. Spring-cloud-security помогает строить вещи поверх этого, так как Zuul SSO, hystrix + ленточные приводы для симуляции, уважающие аутентификацию oauth2 и т. д.

  2. Не знаю, это вам поможет, поскольку эти сервисные услуги служат вы как поставщик идентичности, в то время как вы собираетесь пару ваших пользователей идентичности через социальных сети

Я надеюсь, что я мог бы прояснить свой вопрос в некотором роде

+0

Благодарим за рекомендации, я обязательно посмотрю, как я могу реализовать решение с существующими технологиями Spring и не платить за что-то вроде auth0. –

0

я достиг его, ссылаясь два пружинным примером приложения. Проверьте this шагов, вы сможете достичь социального входа sso с Zuul, Auth-сервером и несколькими фоновыми проектами REST.

+0

Это решение работает для социального входа с устройства Android или IOS? И создание жетонов JWT, которые можно использовать и использовать Spring Security? –

+0

Я не тестировал его для собственного приложения для Android или iOS, но он работает в браузере Chrome/Safari в качестве веб-сайта. –

+0

Для мобильного родного приложения проверьте [link] (http://www.slideshare.net/rohitsghatol/oauth-20-simplified), слайд 64 для обработки перенаправления в приложении. В этой презентации они упомянули, как обрабатывать обратный вызов OAuth в родном приложении Android/iOS. –

Смежные вопросы