Аутентификация отдыха с весенней безопасностью и mongodb - PullRequest
0 голосов
/ 02 января 2019

Я реализовал Spring приложение с mongodb, а теперь я внедрил Rest-аутентификацию с помощью Spring security и Mongodb , и теперь мне нужно добавить заголовок Authorization, и онтолько показывает данные из вызова API, если Authorization в порядке, с этого момента все в порядке, но мне интересно, как я могу получить это значение?Я имею в виду, что я хочу сделать Вход в приложение, у меня должна быть авторизация для этого?Если нет, то ответ при входе должен вернуть эту авторизацию, чтобы использовать ее в следующих вызовах?Я также прочитал о aws token также oauth2, но я действительно хочу знать процесс, я имею в виду, в каком потоке обычный пользователь может войти в приложение и затем делать вызовы с авторизацией?

Мои платформы:

БД - MongoDB

Сервер - Spring

Веб - угловой

Приложение - Android

Это проект для игры-викторины, который может поддерживать мультиигровые варианты (более 1 игрока играют одновременно)

Так что мне нужно понять, что из APP / WEB мне нужно позвонить, скажем, api/ v1 / login и затем отправить пользователя и пароль, хорошо, где часть, когда мне нужно создать bcrypted и salt-материал для хранения его в db?Нужно ли делать это в приложении, а затем отправлять, например, материал SHA через JSON при вызове входа в систему, или лучше отправить пароль на сервер, чтобы сервер выполнял все операции и сохранял их на БД?

Ответы [ 2 ]

0 голосов
/ 13 января 2019

В описываемом вами сценарии нет смысла использовать ни OpenID Connect , ни OAuth2 . Существует единый сервер для аутентификации и ресурсов. Сценарий может быть примерно таким:

  1. Клиент (Angular или App) отправляет учетные данные на сервер в виде простого текста по защищенному HTTP-соединению для входа в систему
  2. Сервер отвечает access и токен обновления
  3. Оба токена необходимо сохранить на клиентском устройстве (например, в локальном хранилище)
  4. Вы отправляете токен доступа вместе с каждым запросом, требующим аутентификации
  5. До истечения срока действия токена вы запускаете определенный вызов REST для обновления токенов с помощью токена обновления
  6. Сервер отправляет обратно новый доступ и новый токен обновления . Сохраните их и удалите старые.

Используя SpringBoot , вы получаете все это бесплатно. Если у вас нет конкретного примера, я бы не стал давать фрагменты кода. На сайте auth0 .

вы найдете замечательные и сжатые примеры.

Найдите здесь Угловое руководство по отправке токена доступа вместе с вашими запросами

Что касается вопросов о вашей БД, простой, но правильный сценарий может заключаться в том, чтобы хранить (в БД) зашифрованный пароль рядом с вашим пользователем. Если пользователь входит в систему, он отправит вам простой текстовый пароль, который вам нужно зашифровать, и сравните его с тем, который вы сохранили. Никогда не храните простой текстовый пароль, просто используйте его для входа в систему. Существует несколько рекомендаций , которые вы могли бы рассмотреть, используя пароли в приложениях Java.

0 голосов
/ 07 января 2019

Я настоятельно рекомендую вам использовать токены Spring Security, OAuth2 и JWT для защиты вашего REST API.Процесс выглядит следующим образом:

  • пользователь может войти в приложение
  • сгенерирован токен
  • этот токен устанавливается в заголовке каждого запроса

Обычно токены имеют длительность. В основном OAuth2 определяет 2 объекта:

  • Сервер авторизации: это объект, ответственный за процесс авторизации.Он проверяет предоставленные учетные данные и, если все в порядке, генерирует маркер
  • Resource Server: это объект, который будет предоставлять REST API.Этот объект будет проверять, присутствует ли в каждом запросе токен и токен действителен

Информация о моём доступна здесь https://www.baeldung.com/spring-security-oauth-jwt

ОБНОВЛЕНИЕ

Здесь https://github.com/angeloimm/spring_oauth Я загрузил простой пример og Spring (а не spring boot) аутентификации OAuth JWT на основе DB H2.

Вы можете скачать его и адаптировать к mongodb.Я думаю, что достаточно просто адаптировать его.К сожалению, это очень напряженный рабочий период для меня, и я не могу это сделать.

Надеюсь, это полезно

Анджело

...