1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/micai-code-springboot-springsecurity-jwt-demo

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Прибыла новая версия Spring Boot + Spring Security + JWT 2.0 ☟☟☟

Новая версия, основанная на Spring Boot, Spring Security, OAuth2 и других технологиях, реализует управление правами доступа и аутентификацию, поддерживает авторизацию через третьи стороны и получение информации о ресурсах. Подробности можно найти по ссылке ниже. Приглашаем вас использовать и оценить проект. Если вам понравится, оставьте звездочку, спасибо! Проект: https://gitee.com/micai-code/micai-platform-auth

Добавление функции аутентификации JWT к REST API

После ввода пользователем имени пользователя и пароля, происходит сравнение с данными, хранящимися в базе данных. Если сравнение проходит успешно, аутентификация считается успешной. Традиционно после успешной аутентификации создается сессия, и клиенту возвращается cookie. Теперь мы используем JWT для обработки аутентификации имени пользователя и пароля. Разница заключается в том, что после успешной аутентификации сервер генерирует токен и возвращает его клиенту. Клиент должен включать этот токен во все последующие запросы в заголовке HTTP. При получении запроса сервер проверяет легальность токена. Проверка включает:Правильный формат JWT Проверка подписи Проверка claims Проверка прав доступа Обработка входа Создание класса JWTLoginFilter, основная функция которого заключается в генерации токена после успешной проверки имени пользователя и пароля и возврате его клиенту: Класс наследуется от UsernamePasswordAuthenticationFilter, переопределяя два метода: attemptAuthentication: принимает и расшифровывает учетные данные пользователя. successfulAuthentication: вызывается после успешного входа пользователя, в этом методе генерируется токен.### Проверка авторизации

После успешного входа пользователь получает токен, который включается во все последующие запросы. Сервер проверяет легальность токена. Создание класса JwtAuthenticationFilter, в котором реализуется функция проверки токена. Класс наследуется от BasicAuthenticationFilter, в методе doFilterInternal из заголовка HTTP Authorization извлекается токен, и с помощью методов из пакета Jwts проверяется его легальность. Если проверка пройдена успешно, это считается легальным запросом с правами доступа.

Конфигурация Spring Security

Через конфигурацию Spring Security объединяются вышеупомянутые методы. Это стандартная конфигурация Spring Security, подробное объяснение которой не требуется. Обратите внимание на следующие строки: .addFilter(new JWTLoginFilter(authenticationManager())) .addFilter(new JwtAuthenticationFilter(authenticationManager())) Эти строки добавляют определенные методы JWT в процесс обработки Spring Security.

Простой тест

Ниже приведены простые проверки нашего приложения:

1. Запрос на получение списка пользователей по URL: http://localhost:8080/users/userList вернёт ошибку 401

{
    "timestamp": 1567564486909,
    "status": 401,
    "error": "Unauthorized",
    "message": "Полная аутентификация требуется для доступа к этому ресурсу",
    "path": "/users/userList"
}
curl http://localhost:8080/users/userList

Причина ошибки заключается в том, что этот URL не имеет соответствующего разрешения, поэтому возвращается код ошибки 401. введите описание изображения здесь#### 2. Регистрация нового пользователя

curl -H "Content-Type: application/json" -X POST -d '{
    "username": "admin",
    "password": "password"
}' http://localhost:8080/users/signup

введите описание изображения здесь

3. Вход в систему, который вернёт токен. Часть строки Authorization: Bearer после слова Bearer — это токен.

curl -i -H "Content-Type: application/json" -X POST -d '{
    "username": "admin",
    "password": "password"
}' http://localhost:8080/login

Внимание: метод login является частью стандартного URL для входа в систему, предоставленного фреймворком Spring Security. введите описание изображения здесь

4. Использование полученного токена для повторного запроса на URL /users/userList

4.1 Замените XXXXXX на полученный токен. 4.2 Теперь запрос будет успешным.

curl -H "Content-Type: application/json" -H "Authorization: Bearer XXXXXX" http://localhost:8080/users/userList

введите описание изображения здесь

5. Токен истекает через 1 минуту. Если запросить /users/userList через 1 минуту после получения токена, будет возвращена ошибка истечения срока действия токена, как показано на следующем рисунке:

введите описание изображения здесь### Интеграция Swagger-ui для удобства разработки front-end и back-end, по умолчанию доступен по адресу: http://localhost:8080/swagger-ui.html
Вставьте описание изображения Вставьте описание изображения Вставьте описание изображения Внимание: В настоящее время используемый входящий интерфейс для входа по-прежнему использует по умолчанию адрес. Если ваш токен истек, вам потребуется заново войти, чтобы сгенерировать новый токен.

Взаимодействие через WeChat
Для улучшения общения мы создали WeChat-группу. Учитывая, что QR-коды WeChat-групп имеют срок действия, просим всех сканировать QR-код ниже, подписаться на официальный аккаунт, ввести [добавить в группу], и следуя инструкциям, добавить автора WeChat. Автор добавит вас в группу. Спасибо за сотрудничество!

WeChat-группа

Журнал обновлений

См. wiki

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Проект, реализующий управление правами и аутентификацию для RestApi с использованием Spring Boot, Spring Security и JWT. Если проект автора был вам полезен, не забудьте поставить звездочку в правом верхнем углу 🔝🔝 для отслеживания обновлений, спасибо! Развернуть Свернуть
Java
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/micai-code-springboot-springsecurity-jwt-demo.git
git@api.gitlife.ru:oschina-mirror/micai-code-springboot-springsecurity-jwt-demo.git
oschina-mirror
micai-code-springboot-springsecurity-jwt-demo
micai-code-springboot-springsecurity-jwt-demo
develop