За останнє десятиліття JSON Web Tokens перетворилися на де-факто стандарт аутентифікації у веб-застосунках. Кожен туторіал із REST API пропонує JWT як першу відповідь на питання «як зберегти стан авторизації». Простота видалась оманливою: один підписаний токен — і жодних звернень до бази даних при кожному запиті. Але нова хвиля дискусій довкола маніфесту «Stop Using JWTs» підняла незручне питання: а чи правильно ми взагалі обрали інструмент?

Проблема не в тому, що JWT погані самі собою. Проблема в тому, що їх масово використовують не там, де вони задумані. Це створює архітектурні та безпекові вразливості, які особливо болючі в AI-продуктах із складними flow аутентифікації та тисячами API-викликів на день.

Для команд, що будують AI-сервіси — від agent pipelines до SaaS-платформ — це не академічна дискусія. Це питання архітектурних рішень, які потім складно й дорого переробляти.

Де JWT пішли не туди

JSON Web Tokens народилися для конкретного сценарію: передача claims між різними системами без необхідності звертатися до центральної бази даних при кожній перевірці. Класичний кейс — OAuth: Google видає токен, ваш сервіс верифікує його локально без зворотного запиту. Для цього JWT ідеальні.

Але розробники почали використовувати JWT для управління сесіями веб-застосунків — і тут починаються проблеми. Кілька фундаментальних обмежень роблять JWT поганим вибором для сесій:

Чому це критично саме для AI-продуктів

AI-застосунки мають специфічні вимоги, що загострюють ці проблеми. Уявіть типову архітектуру: фронтенд → API Gateway → кілька мікросервісів (LLM router, RAG service, billing) → зовнішні провайдери. JWT виглядають привабливо: один токен, всі сервіси верифікують його локально, немає центральної точки відмови.

Але на практиці виникає два сценарії, де це ламається. Перший: якщо потрібно заблокувати зловмисного користувача в реальному часі — JWT змушує або чекати до expiry, або підтримувати revocation list у Redis чи PostgreSQL. Ось і «stateless» перевага зникла. Другий: якщо JWT витікли через XSS або log injection — а в AI-системах outputs часто потрапляють у логи — у вас немає швидкого способу анулювати всі активні токени одним рухом.

Є ще ризик, специфічний для AI: довгі pipeline виклики. Якщо agent workflow виконується 10–30 хвилин, короткий термін дії JWT може призвести до помилок автентифікації посередині виконання. Обхід — збільшити термін — але це прямо посилює ризики компрометації.

Що варто використовувати замість

За даними HackerNews, дискусія зводиться до простого принципу: правильний інструмент для правильного завдання. Для різних сценаріїв — різні рішення.

Для сесійного управління у веб-застосунках (браузер ↔ ваш API):

Для machine-to-machine взаємодії (де JWT справді доречний):

Висновок AiiN

JWT не «мертві» і не «шкідливі» — вони просто неправильно застосовуються у більшості веб-проєктів. Тренд «Stop Using JWTs» — це корекція спрощення, яке виникло від масового копіювання туторіалів без розуміння оригінального контексту їх появи.

Для AI-білдерів практичний висновок такий: якщо браузер взаємодіє з вашим API — використовуйте сесійні cookies з Redis. Якщо ви видаєте токени для третіх сторін або між сервісами — JWT із коротким терміном та ротацією. Якщо ваш JWT живе довше 15 хвилин без механізму відкликання — у вас є проблема безпеки, яку варто закрити до запуску продукту.

Архітектурні рішення, ухвалені на старті, визначають технічний борг на роки вперед. Аутентифікація — саме те місце, де «просто скопіювати з туторіалу» може коштувати дуже дорого.