2015-05-02 3 views
6

Я понимаю, что JWT являются токенами без государственной регистрации, которые хранят подписанную информацию о претензии клиента и передаются на сервер через HTTP-заголовок авторизации.Зачем нам JWT, когда у нас есть сеансы клиентов?

Мой вопрос: зачем нам JWT, когда у нас уже есть сеансы клиентов (https://github.com/mozilla/node-client-sessions)? Клиентские сеансы концептуально одинаковы. Это файлы cookie, которые содержат подписанную информацию, которая при проверке означает, что cookie не был отпущен. Кроме того, клиентские сеансы хранятся в файле cookie и передаются через HTTP-заголовок Cookie. Это одно и то же, только используя разные слова. Я ошибаюсь?

Итак, почему JWT даже вокруг? Я мог понять, что, возможно, дело в том, чтобы стандартизировать работу токенов проверки подлинности, но мы отлично ладили без стандартного идентификатора сеанса (каждая реализация делала все по-своему). Кроме того, почему JWT не использует файлы cookie в качестве средства передачи. С помощью файлов cookie вам не нужно явно отправлять правильный заголовок для каждого запроса (упрощая Ajax-запросы).

Я что-то упустил?

ответ

6

Знаки JWT подписываются форматированными документами JSON, которые утверждают претензии пользователя (или любого принципала). Если вы доверяете эмитенту токена, вы доверяете требованиям в токене и можете принимать решения об авторизации на основе этого.

Значки JWT часто используются для вызова внешних веб-API. Эти API не обязательно живут в том же домене, что и ваш веб-сайт, и поэтому не могут использовать те же файлы cookie, что и ваш сайт. Значки JWT используются в службах REST, так как им не нужна информация о сеансе, хранящаяся на сервере. Использование токенов JWT также не является допустимым для CSRF атак.

+0

Примечание: Согласно реестрам Stormpath (https://stormpath.com/blog/where-to-store-your-jwts-cookies-vs-html5-web-storage/) - токены JWT уязвимы для атак CSRF если они хранятся в файлах cookie. –

+0

Конечно, если вы храните JWT в файле cookie и используете его для аутентификации вашего API, вы вернетесь с неявной аутентификацией. Точки JWT обычно не хранятся в файлах cookie, а отправляются в качестве маркеров-носителей в HTTP-заголовке 'Authorization'. См. Также эту статью: http://leastprivilege.com/2015/04/01/implicit-vs-explicit-authentication-in-browser-based-applications/ – MvdD

Смежные вопросы