Так что же такое JWT? JWT означает веб-токен JSON. JWT — это замкнутый способ безопасной передачи информации между сторонами. Эти токены можно подписывать и использовать для сокрытия или демонстрации определенных требований от определенных сторон. Эта статья предназначена для введения в JWT и объяснения того, почему JWT является хорошим решением для аутентификации пользователей, а также для того, чтобы помочь объяснить, что происходит за кулисами, а не научить вас, как реализовать его в вашем собственном приложении.

Наиболее распространенным примером использования JWT является проверка подлинности пользователя. В настоящее время аутентификация пользователей встречается повсюду, и с появлением одностраничных приложений (SPA) JWT становится все более и более распространенным явлением. С JWT пользователь может войти на страницу и ограничить доступ к определенной информации или страницам. Примером, с которым вы, вероятно, сталкивались, может быть любой сайт социальной сети. Вы, как пользователь, должны войти в систему, а затем получить доступ к вашему профилю. В своем профиле вы можете вносить изменения в свою личную информацию, но разрешено только просматривать сообщения и информацию других пользователей.

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

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

  • Клиент отправляет имя пользователя/пароль на сервер
  • Сервер проверяет (аутентифицирует) запрос и, если он успешен, создает токен JWT, который отправляется обратно в качестве ответа клиенту.
  • Клиент сохраняет токен в локальном хранилище для использования в будущих запросах к серверу.
  • Каждый новый запрос к серверу будет отправляться с токеном JWT, который затем проходит аутентификацию перед возвратом ответа клиенту.

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

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

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