Протокол аутентификации - 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