Согласно исследованию:
Различные вызовы 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)
Дополнительный ресурс:
Надеюсь, эта помощь.