JWT-авторизация без программирования: выпуск и проверка токенов

JWT-токен в nana800 выпускается и проверяется двумя блоками без кода: один подписывает токен секретным ключом, второй проверяет подпись и срок действия. Так к своему API на вебхуках добавляется вход по токену, как на обычном сервере. Выпуск или проверка токена стоит 0,10 ₽, а баланс каждый месяц бесплатно пополняется до 350 ₽.

Собрать в конструкторе
  • Запуск блока: 0,10 ₽
  • Бесплатно каждый месяц: 350 ₽
  • Карта не нужна

Что можно сделать

  • Выдавать токен в ответе на запрос, например после проверки логина в вашей базе данных
  • Закрывать вебхуки от чужих: схема выполняет работу, только если токен из запроса прошёл проверку
  • Задавать срок жизни токена: 30m, 12h, 7d, 2w или число секунд, либо выпускать токен без срока
  • Класть в токен свои данные в JSON, например id пользователя и роль, и читать их после проверки
  • Указывать владельца (sub), издателя (iss) и получателя (aud), если их проверяет принимающая система
  • Проверять токены, которые ваш сервер подписал алгоритмом HS512 тем же секретным ключом

Блоки в конструкторе

  • Выпуск JWT-токена

    Действие · 0,10 ₽ за запуск

    Подписывает новый токен алгоритмом HS512. Поля: секретный ключ, владелец (sub), данные в JSON, срок жизни, издатель (iss) и получатель (aud). Возвращает token, время окончания expires_at, success и error_text.

  • Проверка JWT-токена

    Действие · 0,10 ₽ за запуск

    Проверяет подпись и срок действия токена тем же секретным ключом. Возвращает valid (true или false), данные из токена в payload и причину отказа в error_text, например истёкший срок.

Как настроить

  1. 1

    Придумайте секретный ключ

    Сгенерируйте длинную случайную строку, не короче 32 символов, и сохраните её в переменных проекта. Этим ключом подписываются токены, поэтому его нельзя никому показывать. Обоим блокам нужен один и тот же ключ.

  2. 2

    Соберите выдачу токена

    Создайте схему и добавьте триггер «webhook» с методом POST и путём, например /token. Подключите блок «sign jwt»: вставьте ключ, в поле владельца (sub) подставьте id пользователя из запроса, задайте срок жизни, например 7d. Верните токен блоком «webhook response».

  3. 3

    Соберите проверку токена

    Добавьте второй триггер «webhook» для закрытого запроса и подключите блок «validate jwt». В поле токена подставьте токен из запроса, в поле ключа тот же ключ. Блоком «condition» проверьте valid: при true выполняйте работу, при false отвечайте кодом 401.

  4. 4

    Включите и проверьте схему

    Включите схему, нажмите кнопку «API» в конструкторе и во вкладке «Попробовать» запросите токен, а затем отправьте его на закрытый вебхук. Готовая основа есть в шаблоне «Jwt Token Auth». Пока схема включена, она стоит 0,42 ₽ в час.

Шаблоны с этим сервисом

  • Выдача и проверка JWT (Jwt Token Auth)

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

Частые вопросы

Выпуск токена стоит 0,10 ₽, проверка - ещё 0,10 ₽. Токен, который не прошёл проверку, не списывается. Включённая схема стоит 0,42 ₽ в час. Баланс каждый месяц бесплатно пополняется до 350 ₽, карта не нужна. Если схема включена круглосуточно весь месяц, большая часть этой суммы уходит на часы её работы.

HS512: токен подписывается и проверяется одним общим секретным ключом. Токены с другими алгоритмами, например RS256 с парой из открытого и закрытого ключа, блок «validate jwt» не примет.

Длинную случайную строку, не короче 32 символов. Храните её в переменных проекта и подставляйте в оба блока оттуда. Если ключ попал к посторонним, замените его: все выданные раньше токены перестанут проходить проверку.

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

В поле «Срок жизни токена» впишите число с единицей: 30m, 12h, 7d или 2w, либо просто число секунд, например 3600. Пусто или 0 - токен без срока действия. Блок вернёт время окончания в expires_at, а после него проверка токен отклонит.

Такой заголовок обычно выглядит как слово Bearer и сам токен. Блоку проверки нужен токен без слова Bearer: отрежьте его блоком «run custom script» или попросите клиента присылать токен в отдельном заголовке или поле тела.

Соберите первую схему бесплатно

Регистрация бесплатная, карта не нужна. Каждый месяц баланс бесплатно пополняется до 350 ₽, этого хватает примерно на 3 500 запусков простых блоков.

Собрать в конструкторе