Как удалить пользовательский доступ к приложению, если их JWT / cookie все еще действителен [дубликат]

navigationView.ItemBackground = new ColorDrawable(Android.Graphics.Color.Green);

Это может помочь.

6
задан wlingke 29 May 2016 в 08:21
поделиться

3 ответа

Есть несколько причин, чтобы сделать недействительным токен JWT до истечения срока его действия: учетная запись удалена / заблокирована / приостановлена, изменен пароль, изменены права доступа, пользователь вышел из системы администратором. Итак, ваш вопрос по теме

Существует несколько методов применения или объединения в зависимости от вашего варианта использования

1) Удалить токен клиента из локального хранилища

2 ) Token blacklist: хранить токены, которые были между выходом и amp; время истечения срока действия, срок действия истек и проверить его в каждом запросе. Используйте уникальный идентификатор jti или включите последнюю дату входа и выданную в iat для удаления старых токенов

Это необходимо для хранения сервера. Если вы не ожидаете, что слишком много токенов отменят, вы также можете использовать черный список в памяти. Вам нужно только установить запись после обновления важных данных для пользователя и currentTime - maxExpiryTime < lastLoginDate (iat)‌. Запись может быть отброшена, если currentTime - maxExpiryTime > lastModified (не больше не просроченных токенов). В этом случае не требуется хранить весь токен. Только sub, iat и, возможно, jti

3) Время истечения кратковременно и повернуть их. Выпустите новый токен доступа каждые несколько запросов. Используйте токены обновления , чтобы ваше приложение могло получать новые токены доступа, не требуя повторной аутентификации и объединения с sliding-sessions

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

Другие распространенные методы

  • Разрешить изменение уникального идентификатора пользователя, если учетная запись скомпрометирована с новым именем пользователя и входа в систему
  • Чтобы недействить токены, когда пользователь меняет свой пароль, подпишите токен с хешем своего пароля. Если пароль изменяется, все предыдущие токены автоматически не проверяются. Расширьте этот механизм с другим интересующим знаком знаком. Недостатком является то, что он требует доступа к базе данных
  • Изменить алгоритм подписи для отмены всех текущих токенов в основных проблемах безопасности

Взгляните на Недействительный JSON Web Лексемы

11
ответ дан Community 25 August 2018 в 23:49
поделиться

Я сделал домашнюю работу и, похоже, лучший подход к реализации отзыва заключается в использовании jti (id on Jtw) и черного списка отозванного идентификатора (который будет очищен, когда токен истёк). Это сделает JTW stateful только для части черного списка.

2
ответ дан Hooch 25 August 2018 в 23:49
поделиться

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

Я лично использую эти два метода в своих проектах (отдельные или комбинированные, в зависимости от потребностей в производительности):

  1. Журнал токенов. Я записываю каждый маркер, выпущенный в моем проекте, с идентификатором, претензиями, истечением срока действия и я проверяю его по каждому запросу. Если токен истек, он будет перемещен из этого журнала в архив. Снижение производительности не так уж и страшное.
  2. Я также добавляю к утверждениям в дополнение к имени пользователя хэш секретности пользователя (что-то вроде автогенерированного скрытого токена или пароля), который разрешен в следующем шаге при загрузке пользователя из dbo. Это не приводит к существенному снижению производительности, поскольку запрос пользователя выполняется в любом случае. Недостатком является то, что вы не можете аннулировать конкретный токен, только весь сеанс пользователя.
0
ответ дан Luke1988 25 August 2018 в 23:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: