Спорадический вход с использованием Traefik с интегрированной аутентификацией Windows

У меня проблема с получением Traefik для прокси-приложений, защищенных с помощью встроенной аутентификации Windows (IWA). Когда обслуживаемый контент - это просто виртуальный каталог IIS, защищенный IWA, проблем не возникает. Однако, когда это приложение.NET Core или приложение MVC или даже просто простая страница Default.aspx и IWA включен, у меня постоянно запрашиваются мои учетные данные (никогда не принимаются). Смотрите ниже для моей конфигурации:

Traefik Configuration:

  # ns-ws
  [frontends.ns_ws]
  passHostHeader=true
  entrypoints=["http","https"]
  backend = "ns_ws"
    [frontends.ns_ws.routes.match_all]
    rule = "Host:ns-ws.example.com"

  [backends.ns_ws]
    # ns-ws
    [backends.ns_ws.loadbalancer.stickiness]
    [backends.ns_ws.servers.server1]
    url = "http://x.x.x.x:80"

Я играл с удалением заголовков проходов и липкости, но не повезло.

Похоже, что исходный запрос делает это, потому что я не получаю сообщение об ошибке не прошедшей проверку подлинности от IIS для страницы, но большинство последующих запросов к серверу будет возвращать 401 (кажется спорадическим).

Любое руководство будет оценено. Спасибо!

Пример изображения:пример

Я попытался изменить параметр "authPersistNonNTLM" в IIS, как описано здесь: https://boyan.io/kerberos-load-balancers/ (без удачи)

0 ответов

Я понимаю, что это очень устаревшая проблема, но на случай, если это поможет другим.

Я могу подтвердить, что встроенная проверка подлинности Windows успешно работает с Traefik 2.x с использованием TCP, а не с маршрутизатором HTTP с успешным входом, подтвержденным на Windows/Mac с использованием Safari/Chrome/IE.

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

В нашей конфигурации у нас есть докер Swarm со смешанной ОС (Linux/Windows) с Traefik, работающим в Linux и отправляющим запросы прямо во внутренние Windows-контейнеры, работающие на узлах Swarm Windows.

Если вы правильно настроили приложение и контейнеры для Windows, я могу подтвердить это по:

  • Машина, присоединенная к домену, вы получите прямой вход в серверные контейнеры Windows с использованием учетных данных Kerberos машины, присоединенной к домену.
  • При подключении к машине, не присоединенной к домену, выполняется переход на проверку подлинности Windows NTLM и запрашиваются учетные данные для проверки подлинности Windows.

С точки зрения конфигурации Traefik, наши контейнеры докеров имеют такие метки:

    - "traefik.tcp.routers.dotnet-tcpexample.entrypoints=websecure"
    - "traefik.tcp.routers.dotnet-tcpexample.tls=true"
    - "traefik.tcp.routers.dotnet-tcpexample.tls.options=default"
    - "traefik.tcp.routers.dotnet-tcpexample.rule=HostSNI(`windows.foo.bar`)"
    - "traefik.tcp.routers.dotnet-tcpexample.tls.passthrough=true"
    - "traefik.tcp.routers.dotnet-tcpexample.service=dotnet-tcpexample"
    - "traefik.tcp.services.dotnet-tcpexample.loadbalancer.server.port=443"

Обратите внимание, что настройка контейнеров для встроенной проверки подлинности Windows сама по себе нетривиальна, но задокументирована здесь.

Другие вопросы по тегам