Спорадический вход с использованием 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 сама по себе нетривиальна, но задокументирована здесь.