Какая связь между клиентом и сервером необходима для проверки JWT? - PullRequest
1 голос
/ 18 июня 2020

Меня очень смущает специфика проверки JWT. Я знаю, что это нужно делать на сервере, но JWT также создается / подписывается на сервере.

Это означает, что (запутался в жирных частях):

  • Пользователь делает запрос на вход (пользователь / пароль отправляется на сервер)
  • Сервер проверяет наличие наличие пользователя и правильный пароль, возвращает подписанный JWT
  • Клиент получает JWT, отправляет его обратно на сервер для проверки?
  • Сервер проверяет JWT, затем отправляет OK ответ?

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

Я, очевидно, не совсем понимаю это. Может ли кто-нибудь заполнить за меня пропуски?

1 Ответ

2 голосов
/ 18 июня 2020

Предположим, что у вас есть два API на двух разных серверах (или вы можете создать образ на бессерверной платформе, чтобы не было напрямую разделяемых ресурсов) - [POST]login и [GET]orders. Ваш [POST]login API сгенерирует токен JWT, если данные учетные данные действительны, а [GET]orders вернет размещенные заказы только для авторизованных клиентов. Тогда шаги должны быть

  1. Ваш клиент отправит запрос [POST]login. API проверит учетные данные и сгенерирует токен JWT. Клиент должен сохранить полученный токен JWT.
  2. Когда клиент хочет отправить [GET]orders запросов, он должен поместить токен JWT в запрос, иначе он получит 401 неавторизованный.
  3. Затем сервер проверяет, действителен ли данный токен JWT. Не только сам токен JWT может быть проверен, но также может быть несколько данных для проверки ( rfc7519 имеет несколько необязательных утверждений, так что вы можете их использовать или вы можете поместить пользовательские данные для проверки, например: привилегии).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...