flask-jwt Как обращаться с токеном?

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

Но теперь мне интересно, как мне обращаться с более чем одним токеном? Я имею в виду, что пользователь публикует свои учетные данные в "myserver / auth", а затем возвращает токен клиенту. Когда клиент отправляет новый запрос, он должен отправить токен.

У меня вопрос, как я узнаю, какой "токен" принадлежит какому пользователю и где хранятся "токены"?

1 ответ

Решение

JWT состоят из трех частей, разделенных точками (.), Которые:

  • заголовок
  • полезная нагрузка
  • Подпись

Поэтому JWT обычно выглядит следующим образом.

xxxxx.yyyyy.zzzzz

Давайте посмотрим краткое резюме по RFC и это

заголовок

Заголовок обычно состоит из двух частей: типа токена, который является JWT, и алгоритма хеширования, такого как HMAC SHA256 или RSA.

{
  "alg": "HS256",
  "typ": "JWT"
}

полезная нагрузка

Вторая часть токена - это полезная нагрузка, которая содержит заявки. Заявки - это заявления о сущности (обычно о пользователе) и дополнительные метаданные. Это интересная часть, потому что внутри токена мы можем проверить, кто из вас принадлежит. { "userid": "1234567890", "expiration_date": "2016-05-129" }

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

Подпись

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

Серверная сторона

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

Как обновить токен?: со стороны клиента

Процесс создания обновленного токена такой же, поэтому клиентская сторона должна запросить услугу обновления (HTTP-запрос, например, www.myhost.com/renew) и отправить старый токен для генерации нового. Помните, что вы можете проверить, к какому пользователю принадлежит этот токен, поэтому токен обновления должен содержать ту же полезную нагрузку, но с другой датой истечения срока действия.

Единая точка входа

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

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