Лучшие практики использования JWT для аутентификации - PullRequest
0 голосов
/ 02 марта 2020

Я прочитал много статей, связанных с использованием JWT (JSON веб-токен) для аутентификации, и запутался, так как у каждого свое мнение о том, как их использовать безопасно. Говоря о безопасности, я имею в виду обработку выходов из системы и смены пароля. Кроме того, какие данные не следует сохранять в полезной нагрузке JWT.

Мой вопрос - существуют ли какие-либо отраслевые стандарты при использовании JWT для аутентификации, если да, то каковы они? Если нет, то безопасно ли сохранять пароль ha sh и дату выхода из системы в JWT для обработки выходов из системы и смены пароля, если нет, каковы альтернативы?

1 Ответ

0 голосов
/ 02 марта 2020

Существуют ли какие-либо отраслевые стандарты при использовании JWT для аутентификации, если да, то каковы они?

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

Насколько я понимаю, вы хотите иметь возможность отзывать токены, когда происходит какое-то событие. В этом случае вам следует рассмотреть возможность отслеживания токенов где-то на вашем сервере.

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

И, чтобы назначить уникальный идентификатор каждому токену, вы можете использовать jti претензия:

4.1.7. Заявка "jti" (идентификатор JWT)

Заявка jti (идентификатор JWT) предоставляет уникальный идентификатор для JWT. Значение идентификатора ДОЛЖНО быть назначено таким образом, чтобы обеспечить незначительную вероятность того, что одно и то же значение будет случайно назначено другому объекту данных; если приложение использует несколько эмитентов, коллизии ДОЛЖНЫ быть предотвращены среди значений, созданных разными эмитентами. Заявка jti может быть использована для предотвращения воспроизведения JWT. Значение jti является регистрозависимой строкой. Использование этого требования НЕОБЯЗАТЕЛЬНО.


Если нет, то безопасно ли сохранять пароль ha sh и дату выхода из системы в JWT для обработки выходов из системы и смены пароля, если не что? альтернативы?

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

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