JWT-авторизация для API без кода: шаблон выдачи и проверки токенов
JWT-авторизация для API без кода начинается в nana800 с готового шаблона из двух частей: первый вебхук выдаёт подписанный токен, второй проверяет токен из запроса и отвечает результатом. Свой сервер и библиотеки не нужны, токены подписываются алгоритмом HS512 вашим секретным ключом. Баланс каждый месяц бесплатно пополняется до 350 ₽, карта для старта не нужна.
Собрать в конструкторе
Цепочка блоков
- 1
Триггер
«button» запускает выдачу токена вручную, без запроса: так удобно проверить настройки блока «sign jwt». Кнопка бесплатная.
- 2
Триггер · Вебхук (триггер)
«webhook» для выдачи принимает запрос на токен. В шаблоне у него метод GET и путь «/», задайте свой путь, например /token.
- 3
Действие · Выпуск JWT-токена
«sign jwt» подписывает токен алгоритмом HS512. Секретный ключ, владельца токена (sub), данные внутри токена и срок жизни заполняете вы. Блок возвращает token и время окончания expires_at.
- 4
Действие · Ответ на вебхук
«webhook response» возвращает отправителю выданный токен. Тело ответа в шаблоне пустое: впишите в body json объект с токеном.
- 5
Триггер · Вебхук (триггер)
«webhook» для проверки принимает запрос с токеном. У него тоже метод GET и путь «/», поэтому ему нужен свой путь, например /verify, иначе запросы до него не дойдут.
- 6
Действие · Проверка JWT-токена
«validate jwt» проверяет подпись и срок действия токена тем же секретным ключом. Возвращает valid (true или false), данные из токена в payload и причину отказа в error_text.
- 7
Действие · Ответ на вебхук
«webhook response» отвечает результатом проверки. Тело ответа тоже пустое: верните в нём valid и payload из блока проверки.
Для каких задач подходит
- Вход в мобильное приложение или личный кабинет: после проверки логина выдать токен и дальше пускать только с ним
- Закрыть свой API на вебхуках nana800 от чужих запросов
- Временный доступ для партнёра или подрядчика на неделю или месяц
- Проверка токенов, которые ваш сервер подписал алгоритмом HS512 тем же ключом
- Передача id пользователя и его роли между системами внутри подписанного токена
Как настроить
- 1
Создайте схему из шаблона
В конструкторе откройте «Готовые решения», найдите шаблон «Jwt Token Auth» и нажмите «Использовать». Выберите проект и схему и нажмите «Создать»: появятся обе части, выдача и проверка токена. Токен - это подписанная строка, которую приложение прикладывает к запросам вместо логина и пароля.
- 2
Разведите адреса вебхуков
В первом блоке «webhook» выберите метод POST и путь /token, во втором - POST и путь /verify. В шаблоне у обоих стоит путь «/», и пока пути одинаковые, второй вебхук не получает запросов.
- 3
Настройте выдачу токена
В блоке «sign jwt» вставьте секретный ключ: длинную случайную строку не короче 32 символов. В поле владельца (sub) подставьте id пользователя из тела запроса, срок жизни задайте, например 7d. В следующем блоке ответа впишите в body json объект с полем token и подставьте в него token из блока «sign jwt».
- 4
Настройте проверку токена
В блоке «validate jwt» в поле jwt token подставьте токен из запроса, например поле token из тела, а в поле jwt secret вставьте тот же ключ, что в «sign jwt». В последнем блоке ответа верните valid и payload из блока проверки.
- 5
Включите схему и проверьте
Включите схему, затем нажмите кнопку в триггере «button» и посмотрите токен в результате блока «sign jwt» в истории запусков. Блок ответа покажет ошибку: ответ некому отправить, так и должно быть. Потом нажмите «API» в конструкторе, во вкладке «Попробовать» запросите токен и отправьте его на /verify. Пока схема включена, она стоит 0,42 ₽ в час.
Сервисы в шаблоне
- Вебхук
Принимайте заявки с сайта и события сервисов через вебхук и отвечайте на запросы без своего сервера и кода. Бесплатный баланс каждый месяц, карта не нужна.
- JWT
Выпускайте и проверяйте JWT-токены без кода: вход в свой API, срок жизни токена и свои данные внутри. Бесплатный баланс каждый месяц, карта не нужна.
Частые вопросы
Соберите первую схему бесплатно
Регистрация бесплатная, карта не нужна. Каждый месяц баланс бесплатно пополняется до 350 ₽, этого хватает примерно на 3 500 запусков простых блоков.
Собрать в конструкторе