2017-01-09 12 views
0

В последнее время я читаю о токенах JWT, и у меня есть момент; У меня есть идея, которая, кажется, хороша в моей голове, но я подозреваю, что это не так здорово, когда дело доходит до конца.JWT Tokens global + private secret

Я вижу, что люди шифруют токены с помощью одного ключа для глобальной цели. Что делать, если я буду генерировать совершенно новый ключ для каждого пользователя, присоединить две строки впоследствии и использовать вывод для шифрования токена? Это потребует создания черных списков для пользователей, которым больше не нужен доступ и так далее. Что мне не хватает? Потому что я уверен, что у кого-то была похожая идея, и по какой-то причине она широко не используется. Где я потерялся?

ответ

2

JWT подписаны (не зашифрованы) с закрытым ключом эмитента, как правило, на сервере. Цифровая подпись идентифицирует подписчика и защищает контент от изменений.

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

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

+0

конечно! Простите, вы совершенно правы. Это не шифрование, это подпись. И я не хотел обрабатывать список выпущенных токенов, но список пользователей, которые должны быть вынуждены выйти из системы - я могу изменить соль пользователя, и после этого его токен будет недействительным. Считаете ли вы, что моя концепция имеет какое-то преимущество, или это не очень хорошо? –

+0

Изменение ключа для пользователя, когда вы предлагаете или хешируете группу критических атрибутов пользователя, является правильной альтернативой маркерам черного списка, чтобы принудительно аннулировать JWT. Есть люди, которые не любят подобные методы, потому что нарушают безгражданство JWT и требуют доступа к базе данных в каждом запросе. Они предпочитают пропускать токены и устанавливать короткое время обновления. Выберите наиболее подходящий вариант для вашего проекта в каждом случае – pedrofb

+0

Я вижу вашу точку. Но чтобы проверить токен, вам все равно придется делать запрос к вашему черному списку, поэтому я не думаю, что моя альтернатива была бы преступлением: D Большое спасибо, я подумаю об этом, но хорошо знать, что это приемлемо. –