2015-10-11 4 views
5

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

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

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

+0

Я, наконец, понял, что это глупый вопрос. Я скоро ответю на это. – Ricardo

+0

Я напишу ответ в этот уик-энд. – Ricardo

ответ

2

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

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

Таким образом, JWT, как правило, выглядит следующим образом.

xxxxx.yyyyy.zzzzz 

Давайте посмотрим, краткое изложение в соответствии с RFC и this

Заголовок

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

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

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

Вторая часть маркера является полезной нагрузкой, которая содержит формулу изобретения. Претензии - это заявления об объекте (обычно, пользователь) и дополнительных метаданных. Это интересная часть, потому что внутри маркера мы можем проверить, к чему вы относитесь. { «USERID»: «1234567890», « expiration_date»: «2016-05-129» }

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

Подпись

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

стороны сервера

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

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

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

Единый вход

Мы можем использовать JWT с большим количеством стратегий, как single sign-on обеспечить только один пользователь с теми же учетными данными протоколировать одновременно.

+3

Вы буквально просто скопировали дословно из 'https: // jwt.io/introduction /' и не дали оригинальному автору (-ам) кредит, связав его назад. BOO для кражи интеллектуальной собственности. BOOOOOOO. –

Смежные вопросы