Выход из системы/аннулирование JWT

Я использую пользовательскую аутентификацию в Azure Mobile Services, генерируя JWT (JSON Web Token) в пользовательском API входа. Как только пользователь имеет JWT, он действителен до тех пор, пока не будет достигнуто его закодированное время истечения.

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

3 ответов


Не совсем так. Когда пользователь выходит из системы в клиенте, JWT, который он использует, не является недействительным-он просто удаляется из памяти клиента (см. код на управляемый SDK, например). Проверка JWT выполняется путем проверки его подписи на главном ключе мобильной службы, и если этот ключ не изменен (что сделало бы недействительным все токенов JWT вашего сервиса, которые я не думаю, что это то, что вы хотите), токен будет действителен до тех пор, пока он истeкший.

поскольку вы сами генерируете JWTs, вы можете рассмотреть возможность использования меньшего времени истечения, которое может помочь в вашем случае.

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


для поддержки JWT invalidation (всегда есть причины):

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


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