как сделать переадресацию аутентификации на бэкэнд-запись в Traefik 1.7 - PullRequest
1 голос
/ 28 января 2020

Traefik 1.7 Docker Spring Boot

Мне нужно использовать возможности пересылки аутентификации Traefik.

Моя конечная точка аутентификации открывается компонентом весенней загрузки позади Traefik и отображается как " backend-аутентификация "с URI" http://123.1.23.5: 8081"в Traefik Dashboard.

В моей конфигурации traefik маршрутизирует все от" http://api-dev.mycompany.com "до бэкэндов API с использованием правил PathPrefix. Поэтому мой компонент аутентификации доступен как «http://api-dev.mycompany.com/authentication»

Когда я делаю переадресацию аутентификации следующим образом:

[entryPoints]
    [entryPoints.https]
        address = ":443"
        [entryPoints.https.auth.forward]
            address = "http://api-dev.mycompany.com/commerce/authentication/v1/ldap/auth"
            trustForwardHeader = true
            authResponseHeaders = ["Authorization"]

Traefik проходит бесконечную пересылку l oop .

Когда я использую следующую конфигурацию, она работает как хотелось бы:

[entryPoints]
    [entryPoints.https]
        address = ":443"
        [entryPoints.https.auth.forward]
            address = "http://123.1.23.5:8081/commerce/authentication/v1/ldap/auth"
            trustForwardHeader = true
            authResponseHeaders = ["Authorization"]

Я хотел бы использовать имя службы, относящееся к backend-аутентификации, как видно на панели инструментов Traefik, но когда я попробуйте эту конфигурацию:

[entryPoints]
    [entryPoints.https]
        address = ":443"
        [entryPoints.https.auth.forward]
            address = "http://backend-authentication/commerce/authentication/v1/ldap/auth"
            trustForwardHeader = true
            authResponseHeaders = ["Authorization"]

Я столкнулся с ошибкой 500.

Мне нужна возможность использовать имя logi c, а не IP, поскольку возможны изменения.

Я не могу запустить компонент на другом порту или в другой сети ... Любая идея будет оценена.

1 Ответ

1 голос
/ 28 января 2020

Может быть, вы могли бы перейти на v2, там немного яснее:

В Traefik v2 согласно документам вы должны использовать forwardAuth в качестве промежуточного программного обеспечения. Вы должны создать роутер следующим образом:

## Dynamic configuration
[http.routers]
  [http.routers.my-router]  <-- name it auth-router or whatever
    rule = "Path(`/foo`)"
    # declared in next code block
    middlewares = ["test-auth"]
    service = "youre-service-docker-or-file" <-- probably your "backend-authentication"

Где ваше промежуточное программное обеспечение:

# Forward authentication to authserver.com
[http.middlewares]
  [http.middlewares.test-auth.forwardAuth]
    address = "https://authserver.com/auth" <---  Your auth server here

Опционально, глядя на документы v1.7, вы можете установить

authResponseHeaders = ["X-Auth-User", "X-Secret"]

ниже точек входа и, возможно, попробуйте добавить несколько доверенных ips:

[entryPoints]
  [entryPoints.http]
    address = ":80"

    # Enable Forwarded Headers
    [entryPoints.http.forwardedHeaders]
      # List of trusted IPs
      #
      # Required
      # Default: []
      #
      trustedIPs = ["127.0.0.1/32", "192.168.1.7"]
...