Нужен совет по использованию JWT для аутентификации - PullRequest
1 голос
/ 24 сентября 2019

При создании своего сайта я решил использовать JWT для функции аутентификации.В интерфейсе у меня есть React, а в фоновом сервере Express с базой данных Postgres.

Прямо сейчас, когда пользователь пытается войти в систему, я проверяю его учетные данные в базе данных, а затем выдаю токен, который затем сохраняется в файле cookie только для http в браузере.

Однако прямо сейчасЯ борюсь с некоторыми внешними проблемами.Мне нужно иметь какой-то объект «CurrentUser» на стороне клиента.Проблема в том, что я не могу декодировать токен и извлекать из него данные с помощью React, поскольку он доступен только по протоколу http.Я мог бы дополнительно отправить учетные данные пользователя вместе с токеном и затем сохранить их в локальном хранилище / хранилище сеансов, но мне это не кажется безопасным.

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

1 Ответ

1 голос
/ 24 сентября 2019

Клиент не может декодировать token, поэтому клиент не может декодировать , поэтому он безопасен для Local/session storage

Для получения дополнительной информации

A JWT технически представляет собой механизм проверки владельца некоторых данных JSON .Это зашифрованная строка, безопасная для URL, которая может содержать неограниченный объем данных (в отличие от файла cookie) и криптографически подписанная.

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

Важно отметить, что JWT гарантирует владение данными, но не шифрование: данные JSON, которые вы сохраняете в JWT, может увидеть любой, кто перехватывает токен, так как онтолько сериализованный, не зашифрованный.

По этой причине настоятельно рекомендуется использовать HTTPS с JWT (и, кстати, HTTPS в целом).

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