Как передать защищенные данные, такие как имя пользователя / пароль, в Json Web Token?
Существует много дискуссий и высказывается за то, чтобы архитектура аутентификации MEAN на основе токенов была безопасной. Но у меня есть вопрос, действительно ли он передает имя пользователя и пароль для авторизации и аутентификации в качестве полезной нагрузки в JSON Web Token, и если мы не передаем защищенную информацию в полезную нагрузку, то как JSON Web Token аутентифицирует пользователя без имени пользователя / пароля на сервере боковая сторона.
Я читал много архитектурных вещей, но они не могут объяснить, какую логику они использовали для аутентификации токена без использования имени пользователя / пароля.
Допустимо ли хранить маркер аутентификации в файлах cookie, а не в веб-хранилище?
Да, я знаю, что они использовали закрытый ключ и открытый ключ для проверки, но этого недостаточно для аутентификации. Для аутентификации конкретного пользователя требуются некоторые значения ключа, такие как имя пользователя / пароль или любой доступ к ключу, который требуется для идентификации конкретного пользователя.
1 ответ
Нет, отправлять пароль в JWT небезопасно. Это потому, что утверждения JWT просто кодируются и могут быть легко декодированы любым, кто их видит. Хранение конфиденциальной информации в JWT, возвращенной пользователю, небезопасно.
Похоже, вы неправильно поняли, что JWT проверяет подлинность. Как правило, аутентификация JWT заменяет систему сеансов с сохранением состояния. Во многих обычных потоках пользователь аутентифицируется, используя свое имя пользователя и пароль, и сервер устанавливает для пользователя cookie сеанса. Когда пользователь возвращается на веб-сайт, его браузер отправляет сессионный cookie вместе с ним. Сервер видит запрос, поступающий с файлом cookie сеанса, и ищет соответствующие данные сеанса из некоторой базы данных.
Во многих системах на основе JWT пользователь аутентифицируется, как обычно, под своим именем пользователя и паролем, но вместо того, чтобы сервер авторизации установил cookie-файл сеанса, который ссылается на что-то в базе данных, он установит cookie-файл, содержащий JWT данных сеанса пользователя. Это может включать их имя пользователя, любые роли, которые они имеют, или любые другие необходимые данные.
Теперь, когда пользователь возвращается на веб-сайт и его браузер представляет этот новый файл cookie JWT, серверу нужно только проверить, что он был подписан сервером авторизации, чтобы доверять утверждениям внутри. Избегание поиска в базе данных информации о сеансе имеет много преимуществ, не последним из которых является скорость.