Входные аннотации nginx для перенаправления на аутентификацию и возврата заголовков - PullRequest
0 голосов
/ 28 мая 2018

У меня есть приведенный ниже файл nginx conf, который перенаправляет все запросы (по умолчанию) в / auth (моего сервиса), а затем возвращает заголовок ответа (foo_id).Этот заголовок будет перенаправлен на исходный URI запроса, инициированный пользователем.Ниже работает правильно с nginx....

location / 
{
    auth_request /auth;
    auth_request_set $foo_id $upstream_http_foo_id;
    proxy_pass    $request_uri
    proxy_set_header X-foo-Token $foo_id;
    root   html;
    index  index.html index.htm;
}

location /auth 
{
    internal;
    proxy_pass   https://myhost/myservice;
    proxy_pass_request_body off;
    proxy_set_header        Content-Length "";
    proxy_set_header        X-Original-URI $request_uri;
}

Но мне нужны соответствующие правила входа / аннотации, которые необходимы для достижения вышеуказанного варианта использования.Я не смог получить соответствующие аннотации, связанные с аутентификацией / прокси-пропуском.Пожалуйста, помогите.

1 Ответ

0 голосов
/ 28 декабря 2018

Вы можете использовать Входящие аннотации Nginx для достижения этой цели.

В двух словах:

Предполагается, что у вас есть внешняя служба аутентификации, для которой настроена служба Kubernetes,Вам нужна аннотация, которая отправляет запросы на авторизацию этой службе:

nginx.ingress.kubernetes.io/auth-url: http://auth-service.<NameSpace>.svc.cluster.local/auth

Кроме того, вы можете использовать аннотацию nginx.ingress.kubernetes.io/auth-snippet, чтобы установить пользовательскую конфигурацию для запроса на аутентификацию, например

nginx.ingress.kubernetes.io/auth-snippet: |
    auth_request_set $foo_id $upstream_http_foo_id;
    proxy_pass    $request_uri
    proxy_set_header X-foo-Token $foo_id;

Если вам нужно вернуть некоторые заголовки при успешной аутентификации, вы можете использовать nginx.ingress.kubernetes.io/auth-response-headers:

nginx.ingress.kubernetes.io/auth-response-headers:  X-Auth

И, nginx.ingress.kubernetes.io/auth-signin, чтобы указать пользовательскую страницу ошибки

...