K8s -> nginx Вход: SSO - PullRequest
       18

K8s -> nginx Вход: SSO

3 голосов
/ 21 марта 2019

У меня есть служба с базовой аутентификацией HTTP. Перед ним у меня nginx Ingress, у которого также есть basic-auth. Как я могу прикрепить заголовок авторизации с учетными данными после входа в систему с входом, чтобы добиться единого входа?

Это конфигурация моего Ingress:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/auth-realm: Authentication Required
    nginx.ingress.kubernetes.io/auth-secret: kibana-user-basic-auth
    nginx.ingress.kubernetes.io/auth-type: basic
  name: kibana-user
  namespace: {{.Release.Namespace}}
spec:
  tls:
  - secretName: kibana-tls
    hosts:
    - {{.Values.ingress.user.host}}
  rules:
  - host: {{.Values.ingress.user.host}}
    http:
      paths:
      - backend:
          serviceName: kibana-logging
          servicePort: {{ .Values.kibana.service.internalPort }}
        path: /

Ответы [ 2 ]

2 голосов
/ 28 марта 2019

Вы можете использовать аннотацию nginx.ingress.kubernetes.io/configuration-snippet: proxy_set_header Authorization $http_authorization; для пересылки заголовка Authorization во внутреннюю службу.

Ресурс Ingress должен выглядеть следующим образом

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/auth-realm: Authentication Required
    nginx.ingress.kubernetes.io/auth-secret: kibana-user-basic-auth
    nginx.ingress.kubernetes.io/auth-type: basic
    nginx.ingress.kubernetes.io/configuration-snippet: "proxy_set_header Authorization $http_authorization;"
  name: kibana-user
  namespace: {{.Release.Namespace}}
spec:
  tls:
  - secretName: kibana-tls
    hosts:
    - {{.Values.ingress.user.host}}
  rules:
  - host: {{.Values.ingress.user.host}}
    http:
      paths:
      - backend:
          serviceName: kibana-logging
          servicePort: {{ .Values.kibana.service.internalPort }}
        path: /
0 голосов
/ 22 марта 2019

Я полагаю, что вы можете распространять заголовок авторизации в nginx.ingress.kubernetes.io/auth-response-headers аннотации :

nginx.ingress.kubernetes.io/auth-response-headers: Authorization

Или, альтернативным способом, вы можете достичь того же подхода, применяяproxy_set_header внутри целевого местоположения входа через фрагмент конфигурации аннотация, как описано здесь :

annotations:
    nginx.ingress.kubernetes.io/configuration-snippet: |
        proxy_set_header Authorization "Basic base64 encode value";
...