Можно ли использовать JWT для междоменной аутентификации в файле cookie HTTPOnly? - PullRequest
0 голосов
/ 28 октября 2019

Кажется, что лучшим вариантом использования для JWT является временная, межсерверная общая аутентификация. Прочитав эту статью , она выдвинула на первый план два момента, которые мне трудно понять, так как они кажутся противоречивыми:

JWT должен храниться в безопасном месте внутрибраузер пользователя ... как атака XSS может позволить внешнему злоумышленнику получить доступ к токену ... Не хранить его в локальном хранилище .

...

JWT - это отличная технология для аутентификации API и авторизации между серверами ... Допустим, у вас есть один сервер, на котором вы вошли в систему, SERVER1, который перенаправляет вас на другой сервер SERVER2 для выполнения какой-либо операции. SERVER1 может выдать вам JWT, который авторизует вас на SERVER2.

Мне кажется, что если JWT не доступны для JS, они становятся более защищенными от атак XSS. Я видел предложения о том, что «разработчик должен уменьшить XSS, JWT более полезны, если они отправляются не с каждым запросом и т. Д.», Но это не было универсальным мнением, и мне показалось, чтоотговорка

Хранение их в безопасном файле cookie (при условии защиты CSRF) не звучит как плохое предложение. Тем не менее, если JWT хранится в cookie, как вы передаете его с сервера на сервер для аутентификации, если серверы находятся в разных доменах?

Я видел некоторые примеры междоменных файлов cookie через теги <img> и <iframe>;однако, это казалось чем-то вроде взлома, и якобы не всегда было независимым от браузера. Другие использовали определенные конфигурации заголовков, которые казались более разумными, но некоторые пользователи отмечали, что некоторые аспекты могут создавать другие уязвимости, если они не установлены должным образом. Он также не будет работать, если сторонние файлы cookie отключены (в некоторых браузерах они используются по умолчанию).

Итак, да, если JWT находится в защищенном файле cookie HTTPOnly, как вы можете использовать его для межсерверной аутентификации (независимо от браузера)?

Редактировать : Глядя на это предложение от Stormpath, автора решения develolper , они рекомендуют использовать файлы cookie httpOnly и говорят следующее. Есть ли стандартная реализация для этого, или это действительно просто в каждом конкретном случае?

Несмотря на то, что файлы cookie более безопасны для хранения вашего JWT, файлы cookie могут вызвать головную боль разработчиков, в зависимости от того, требуется ли для работы ваших приложений междоменный доступ. Просто имейте в виду, что файлы cookie имеют дополнительные свойства (домен / путь), которые можно изменить, чтобы указать, куда разрешено отправлять файлы cookie. Используя AJAX, ваша серверная сторона также может уведомлять браузеры о том, следует ли отправлять учетные данные (включая файлы cookie) с запросами с помощью CORS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...