JWT-токены и API-ключи
(описание к предыдущему посту)
Токены (JWT)
- Описание: Временные, самодостаточные учетные данные, которые содержат информацию о пользователе и автоматически истекают. Похожи на билет в кино с информацией о вашем месте, напечатанной на нем.
- Особенности:
- Содержат данные пользователя (утверждения)
- Имеют срок действия
- Могут быть проверены без обращения к базе данных
- Бесконтекстная аутентификация
- Идеально подходят для пользовательских сессий
API Ключи
- Описание: Долговечные, простые учетные данные, которые идентифицируют приложения или сервисы. Похожи на ключ от дома — простые, постоянные и предоставляют доступ.
- Особенности:
- Простой строковый идентификатор
- Долговечные (до отзыва)
- Идентифицируют приложения/сервисы
- Легко реализовать
- Отлично подходят для аутентификации между сервисами
Поток токенов
1. Пользователь входит в систему, предоставляя имя пользователя и пароль.
2. Сервер проверяет учетные данные против базы данных.
3. Создается JWT с утверждениями пользователя и сроком действия.
4. Токен отправляется клиенту и сохраняется локально.
5. Токен используется для аутентификации при последующих вызовах API.
6. Токен проверяется на сервере и проверяется подпись и срок действия.
7. Предоставляется доступ к службе.
Поток API ключей
1. Разработчик регистрируется в системе.
2. Система создает уникальный ключ и сохраняет его в базе данных.
3. Разработчик получает API ключ.
4. API ключ передается в качестве параметра при вызове API.
5. Ключ проверяется на сервере.
6. Предоставляется доступ к службе.
Сравнение
- Безопасность: Токены (JWT) — высокая, API ключи — средняя
- Срок действия: Токены (JWT) — автоматически истекают, API ключи — ручной отзыв
- Контекст пользователя: Токены (JWT) — содержат данные пользователя, API ключи — только на уровне приложения
- Масштабируемость: Токены (JWT) — бесконтекстные, высокая масштабируемость, API ключи — требуют обращения к базе данных
- Реализация: Токены (JWT) — сложная (поток аутентификации), API ключи — простая
Post #1987
2.12K