Это демонстрация использования JWT (JSON Web Token) с Spring Security и Spring Boot . Я полностью переписал свою первую версию. Теперь это решение основано на базе кода проекта JHipster. Я попытался извлечь минимальную конфигурацию и классы, необходимые для JWT-аутентификации, и внес некоторые изменения.
Эта демонстрация создана с использованием Maven 3.6.x и Java 11.
Просто запустите приложение с помощью плагина Maven Spring Boot ( mvn spring-boot:run
). Приложение работает по адресу http://localhost:8080.
Вы можете использовать H2-консоль для просмотра базы данных по адресу http://localhost:8080/h2-console:
Существуют три учетные записи пользователей, демонстрирующие различные уровни доступа к конечным точкам в API и различные исключения авторизации:
Admin - admin:admin
User - user:password
Disabled - disabled:password (this user is deactivated)
Есть четыре конечных точки, которые подходят для демонстрации:
/api/authenticate - authentication endpoint with unrestricted access
/api/user - returns detail information for an authenticated user (a valid JWT token must be present in the request header)
/api/persons - an example endpoint that is restricted to authorized users with the authority 'ROLE_USER' (a valid JWT token must be present in the request header)
/api/hiddenmessage - an example endpoint that is restricted to authorized users with the authority 'ROLE_ADMIN' (a valid JWT token must be present in the request header)
Я написал небольшой клиент Javascript и добавил в код несколько комментариев, которые, надеюсь, сделают эту демонстрацию понятной. Вы можете найти его по адресу /src/main/resources/static/js/client.js.
Я использую bcrypt для шифрования паролей. Вы можете генерировать хэши с помощью этого простого инструмента: Bcrypt Generator.
На самом деле в этой демонстрации используется встроенная база данных H2, которая автоматически настраивается Spring Boot. Если вы хотите подключиться к другой базе данных, вам необходимо указать соединение в файле application.yml в каталоге ресурсов. Вот пример базы данных MySQL:
spring:
jpa:
hibernate:
# possible values: validate | update | create | create-drop
ddl-auto: create-drop
datasource:
url: jdbc:mysql://localhost/myDatabase
username: myUser
password: myPassword
driver-class-name: com.mysql.jdbc.Driver
Подсказка: для других баз данных, таких как MySQL, последовательности не работают для генерации идентификаторов. Поэтому вам нужно изменить GenerationType в объектных компонентах на «AUTO» или «IDENTITY».
Здесь вы можете найти ссылку на все свойства приложения.
#81
В этом проекте есть образ докера. Вы можете найти его по адресу https://hub.docker.com/r/hubae/jwt-spring-security-demo/.
Если у вас есть вопросы, связанные с проектом, просмотрите предыдущие вопросы или создайте новый запрос со своим вопросом.
Если у вас есть вопросы, которые не имеют прямого отношения к этому проекту (например, общие вопросы по Spring Framework или Spring Security и т. д.), выполните поиск в Интернете или посмотрите Stackoverflow.
Извините, но я сейчас очень занят и у меня мало времени.
Стефан Церхузен
Код выпущен под лицензией MIT.
Пожалуйста, не стесняйтесь присылать мне отзывы или вопросы!