Токены доступа обычно выдаются после того, как вызывающий абонент представит свои жесткие учетные данные (например, имя пользователя и пароль).Чтобы получить доступ к защищенным ресурсам, ожидается, что вызывающая сторона отправит токен доступа на сервер для выполнения аутентификации для каждого запроса.
В веб-приложениях к токенам доступа не должен обращаться ни JavaScript, ни хранимый влокальное хранилище.Вместо этого токены доступа следует отправлять через HTTPS-соединение и сохранять в файле cookie с установленными флагами Secure
и HttpOnly
:
4.1.2.5.Атрибут Secure
Атрибут Secure
ограничивает область действия cookie «защищенными» каналами (где «secure» определяется агентом пользователя).Когда cookie имеет атрибут Secure, пользовательский агент будет включать cookie в HTTP-запрос, только если запрос передается по безопасному каналу (обычно HTTP по протоколу безопасности транспортного уровня (TLS)).[...]
4.1.2.6.Атрибут HttpOnly
Атрибут HttpOnly
ограничивает область действия куки-файла HTTP-запросами.В частности, атрибут инструктирует пользовательский агент пропускать куки при предоставлении доступа к куки через API «не HTTP» (например, API веб-браузера, который предоставляет куки для скриптов).[...]
В JWT полезной нагрузкой является строка JSON, закодированная как Base64.Поэтому он не подходит для хранения конфиденциальных данных, таких как пароли.
Подписанные токены позволяют серверу выполнять аутентификацию без сохранения состояния , то есть сообщать, кто пользователь, просто проверяя содержимое токена доступа.Сервер не будет зависеть от внешних сервисов для аутентификации пользователя.
Токены JWT должны быть подписаны с помощью сильного криптографического ключа (который должен быть защищен насервер), и подпись должна быть проверена перед доверием токена.