Итак, в этом посте я расскажу о функции регистрации и входа пользователя, которая является общей для всех приложений, поэтому мы можем разработать отдельное приложение для регистрации и входа пользователя. Эта служба будет служить для аутентификации для всех других служб. В целях аутентификации мы будем использовать JSON Web Token (JWT). Подробнее о JWT можно прочитать здесь.

Подключение пользователей и вход в систему с помощью Spring Boot:

В этом микросервисе мы будем разрабатывать три конечных точки.

  1. /register = для регистрации пользователя
  2. /login = для входа пользователя
  3. /welcome= Тестовая конечная точка с разными ролями.

Создайте проект из инициализатора Spring и добавьте зависимости безопасности Spring и jjwt для работы с JWT и безопасностью.

Для использования Spring Security необходимо понять основы Spring Security, а затем мы можем продолжить реализацию.

Структура проекта:

В структуре проекта в первую очередь мы создадим различные пакеты, такие как:

  1. Entity — для хранения структур, связанных с БД.
  2. Модель — для запросов и ответов
  3. Сервис — для бизнес-логики
  4. Контроллер — для конечных точек API
  5. репозиторий для подключения к БД
  6. helper, util, config — для множества других целей.

Дизайн:

После этого это служба аутентификации, поэтому нам нужно спроектировать отношения между пользователями и ее ролями.

Пользователь. — — — — — —› Роль

Таким образом, у одного пользователя может быть несколько ролей, поэтому у нас будет одна соединительная таблица, в которой будут храниться идентификатор пользователя и идентификатор роли.

Роль Spring Security:

Используя зависимость безопасности Spring, мы расширим его встроенные классы, такие как WebSecurityConfigurerAdapter, и аннотацию, такую ​​​​как @EnableWebSecurity. в нашем классе конфигурации SecurityConfig.

После переопределения методов этого класса (WebSecurityConfigurerAdapter) для предоставления сведений о том, какие конечные точки будут включены и как они будут настроены.

Образец кода

После этого уровня в обслуживании мы создадим собственную реализацию UserDetail. который будет иметь метод loadUserByusername() (он получит пользователя из БД и сопоставит его с объектом сведений о пользователе)

Теперь для каждого запроса мы хотим применить фильтр JWT, поэтому для этого нам нужно создать один фильтр.

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

Это завершит часть безопасности spring и jjwt.

Теперь мы можем создать один контроллер и протестировать наши варианты использования, такие как первая регистрация, затем войти в систему и использовать токен входа для проверки других запросов.

Вы можете протестировать все эти конечные точки с помощью postman.

Вот ссылка на полный рабочий код на Github

Дайте мне знать ваши мысли в комментариях ниже.

Спасибо за прочтение!!!