JWT (Nginx Plus)

Тема дорожной карты · Nginx

Nginx Plus предоставляет нативную валидацию JSON Web Token (JWT) как коммерческую функцию, позволяя веб-серверу аутентифицировать и авторизовывать API-запросы на уровне прокси без передачи непроверенного трафика вышестоящим серверам приложений. При поддержке JWT в Nginx Plus настраивается директива auth_jwt совместно с auth_jwt_key_file, указывающей на файл JWKS (JSON Web Key Set) с публичными ключами для проверки подписей JWT. Nginx Plus может извлекать утверждения (claims) из полезной нагрузки JWT и сопоставлять их с переменными Nginx, обеспечивая тонкозернистые политики контроля доступа — например, ограничение скорости на пользователя или маршрутизацию к различным upstream-бэкендам в зависимости от уровня подписки. Такой подход выносит логику аутентификации из кода приложения, улучшая как безопасность, так и производительность: несанкционированные запросы отклоняются на уровне обратного прокси, не расходуя ресурсы сервера приложений. Валидация JWT в Nginx Plus поддерживает алгоритмы RS256, RS384, RS512, HS256, HS384 и HS512, охватывая весь спектр стандартных методов подписи JWT, используемых в современных API-шлюзах и микросервисных архитектурах.

Как это работает

JWT (Nginx Plus) имеет встроенную HTTP Basic auth (auth_basic + auth_basic_user_file с htpasswd), верификацию client TLS-сертов (ssl_client_certificate + ssl_verify_client on) и auth_request для делегированной auth (subrequest к auth-сервису — идеально для OAuth-flow, SSO, JWT-верификации через sidecar). Для SSO + OIDC — модуль lua-resty-openidc (с OpenResty/Lua) или vouch-proxy как sidecar.

Когда применять

HTTP Basic — для непубличных admin / internal dashboards: быстро настроить, достаточно поверх HTTPS. auth_request — для делегирования к OAuth-прокси (oauth2-proxy, vouch-proxy) когда нужен реальный SSO. Client TLS-серты — для very-high-assurance B2B API или замены VPN. Не пишите свою JWT-верификацию в nginx — OpenResty/Lua или sidecar.

Типичные ошибки

Ловушки JWT (Nginx Plus): HTTP Basic поверх HTTP (credentials в открытом виде — всегда HTTPS); htpasswd-файлы в git ("internal only"); JWT-верификация через regex в nginx (пожалуйста, нет); неверно защищены /.well-known/ пути (admin-эндпойнты утекают).

Связанные понятия

Полезные ресурсы