Протокол аутентификации - AlexMisha/callcenter GitHub Wiki
В проекте аутентификация/авторизация реализована по протоколу JWT
Неавторизованный пользователь имеет доступ только к эндпоинту /login по методам GET и POST.
Аутентификация
Клиент отправляет POST запрос серверу по адресу /login.
Запрос должен включать заголовок Content-Type: application/json и json-объект, состоящий из полей login и password
Пример:
curl -i -H "Content-Type: application/json" -X POST -d '{"login":"userLogin", "password":"userPassword"'} http://localhost:8080/login
В случае, если аутентификация прошла успешно, сервер вернет код 200 и сгенерированный токен, который будет представлен в заголовке Authorization: Bearer. Клиент сохраняет токен и использует его для дальнейших запросов.
Пример ответа с заголовком Authorization: Bearer:
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ0ZXN0QXV0aFVzZXIxIiwiZXhwIjoxNTg1MzAyMzY4fQ.VOeBWFB4hIRTMZUradG1H-A1BLXfnIKRYZfrxSbHNBXy5WZr3KwuUAfvsoO1NaJNfZKSKd6kiSjqUr8RBu7uDw
В случае, если произошла ошибка аутентификации (неправильный логин, пароль, токен устарел или внутренняя ошибка на сервере), сервер вернет код 403.
Клиенту необходимо запросить повторную аутентификацию.
Авторизация
Для любого запроса к серверу, отличном от пути /login, требуется проверка подлинности клиента.
Проверка подлинности осуществляется путем добавления заголовка Authorization: Bearer к каждому запросу.
Пример валидного запроса:
curl -H "Content-Type: application/json" -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ0ZXN0QXV0aFVzZXIxIiwiZXhwIjoxNTg1MzAyMzY4fQ.VOeBWFB4hIRTMZUradG1H-A1BLXfnIKRYZfrxSbHNBXy5WZr3KwuUAfvsoO1NaJNfZKSKd6kiSjqUr8RBu7uDw" http://localhost:8080/api/clients