Специфікація JWT описує лише корисне навантаження та те, як він надсилається, але залишає відкритим протокол аутентифікації, що дозволяє гнучкість, але цілком, на жаль, гнучкість може призвести до антишарових моделей та неправильного проектування.
Я шукаю добре продуманий шаблон для перевірки автентичності JWT, який я міг би використати або адаптувати, але мені не вдалося знайти щось повне.
Про що я думав:
- коли жоден заголовок авторизації не виконаний, або маркер JWT недійсний або закінчився, надішліть HTTP 401
- для автентифікації використовуйте / увійдіть в REST-канал, надішліть ім'я користувача та пароль як об’єкт JSON
- щоб зберегти маркер живим, використовуйте / keepalive канал REST, викликайте його кожні N (5) хвилин, отримуйте новий JWT маркер і заміняйте існуючий після кожного дзвінка (термін закінчується через M (15) хвилин)
Однак те, що мене турбує, - це необхідність того / Keepalive каналу. З іншого боку, це змушує мене запобігати закінченню автентифікації, навіть якщо користувач відсутній (рішення, якщо ми хотіли б, щоб зберегти ще не виконано), і, звичайно, це додаткові дзвінки та додаткове ускладнення для протоколу. Що було б цікаво, це те, що сервер автоматично продовжує маркер. У середовищі, заснованому на сеансі, це відбувається шляхом скидання часової позначки, тут, однак, сервер повинен був би надсилати новий маркер, можливо, не кожен раз, але як тільки маркер закінчиться через R (скажімо, 10) хвилин. Але розміщення його у органі відповіді означало б змінити протокол відповідей JSON (отже, рішення є інвазивним та непрозорим), а розміщення додаткового заголовка HTTP, який клієнт міг би обробити, не обов'язково може бути хорошою схемою. Я '
Чи є якісь готові структури підприємств, які відповідають на мої відкриті моменти? Чи проект мого протоколу є надійною ідеєю? Я вважаю за краще використовувати щось готове, ніж дизайн з нуля.