Чаще всего это зависит от ваших клиентов. Например, для мобильных клиентов (например, полезная нагрузка JSON через HTTP) такой вещи, как Сессия, не существует.
JWT
- JWT имеет преимущество передработать с разными источниками в разных доменах
- Поэтому аутентификация на основе JWT лучше
- очень популярна в эпоху одностраничных приложений (SPA) / веб-API
- для защиты целостности с помощью подписи или MAC. Не разрешать использование незащищенных JWT: {"alg": "none"}
Session
- , которые в основном используются вместе с веб-браузерами
- Проще сделать недействительным (удалить) сеанс. JWT имеет только срок действия и действителен до истечения срока его действия
- . Обратите внимание на следующие атрибуты cookie: secure;HttpOnly и для обеспечения некоторой защиты от атак подделки межсайтовых запросов: SameSite = Strict или SameSite = Lax
Другие подходы: Провайдеры идентификации с открытым исходным кодом, такие как Keycloak, например, traefik в качестве нагрузкиБалансировщики стали довольно популярными. Это дает преимущество в том, что новые маршруты могут работать без перезапуска какого-либо сервиса. Кроме того, в некоторых случаях это экономит время простоя приложений, вызванное чрезмерной скоростью вызовов API.
Вывод: многие дороги ведут в Рим. Это всегда зависит от конкретных требований, окружающей среды и навыков команды. Так как вы все равно используете Spring MVC, и я думаю, что масштабируемость не критична, просто выберите ту, которая вам удобнее ..