Как Ingress поддерживает аутентификацию JWT? - PullRequest
0 голосов
/ 22 октября 2019

Сейчас я использую Ingress-Nginx в качестве службы маршрутизации трафика извне. Тем не менее, в нескольких статьях рассказывается, как Ingress воспроизводит аутентификации JWT для защиты внутренних API. Может кто-нибудь поделиться информацией об этом?

1 Ответ

0 голосов
/ 22 октября 2019

Согласно исследованию:

Различные вызовы API аутентификации были объединены в форме маркеров доступа OAuth 2.0.

Это учетные данные аутентификации, передаваемые от клиента к серверу API, иобычно передается в виде заголовка HTTP.

Web-токен JSON (JWT), как определено RFC 7519 , - один из них.

Согласно документам:

JSON Web Token (JWT) - это компактное, безопасное для URL средство представления претензий, передаваемых между двумя сторонами. Заявки в JWT кодируются как объект JSON, который используется в качестве полезной нагрузки структуры JSON Web Signature (JWS) или в виде открытого текста структуры JSON Web Encryption (JWE), что позволяет утверждениям иметь цифровую подпись или защищать целостностьс кодом аутентификации сообщения (MAC) и / или зашифрованным.

Этот механизм может применяться с использованием различных контроллеров входа, таких как kubernetes nginx-ingress или контроллер входа nginxinc .

Согласно документам nginx inc:

NGINX auth_request Модуль используется для проверки токенов от имени бэкэнд-сервисов.

Запросы поступают только к внутренним сервисамкогда клиент предоставил действительный токен Существующие внутренние службы могут быть защищены токенами доступа, не требуя изменения кода. Только экземпляр NGINX (не каждое приложение) должен быть зарегистрирован в IdP. Поведение является непротиворечивым для каждого состояния ошибки, включая отсутствующие или недействительные токены.

Так что для NGINX, действующего какОбратный прокси-сервер для одного или нескольких приложений, мы можем использовать модуль auth_request для запуска API-вызова IdP перед передачей запроса на бэкэнд.

Чтобы использовать существующую службу, которая обеспечивает аутентификацию, правило Ingress может быть аннотировано с помощью nginx.ingress.kubernetes.io / auth-url для указания URL-адреса, куда следует отправлять HTTP-запрос.

Здесь вы можете найти рабочий пример nginx-subrequest-auth-jwt

Этот проект реализует простую конечную точку проверки JWT, предназначенную для использования с аутентификацией подзапроса NGINX, и особенно хорошо работает с внешними аутентификационными аннотациями контроллера входа NGINX Kubernetes

Он проверяет токен JWT, переданный в заголовке авторизации, на соответствиенастроенный открытый ключ и далее проверяет, что JWT содержит соответствующие утверждения.

В этом примере используется Python-библиотека PyJwt , которая позволяет кодировать и декодировать веб-токены JSON (JWT)

Дополнительный ресурс:

Надеюсь, эта помощь.

...