我在让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(似乎是零星的)。
任何指导将不胜感激。谢谢!
我尝试更改IIS中的“ authPersistNonNTLM”选项,如此处所述:https://boyan.io/kerberos-load-balancers/(不走运)
答案 0 :(得分:2)
我意识到这是一个非常陈旧的问题,但万一这可以帮助其他人。
我可以确认Windows集成身份验证使用TCP而不是HTTP路由器在Traefik 2.x上能够成功工作,并且在Windows / Mac上使用Safari / Chrome / IE证明了成功的登录成功。
请注意,在进行测试时,确保已清除cookie缓存非常重要,否则由于先前尝试登录的非工作配置可能会导致不可预测的结果,这一点很重要。确实,在重置浏览器之前,我反复遇到无法解释的登录提示,从而遇到了与您描述的行为类似的事情。
在我们的配置中,我们有一个混合操作系统的Docker Swarm(Linux / Windows),其中Traefik在Linux上运行,并将请求直接发送到在Windows swarm节点上运行的后端Windows容器。
如果您已经正确配置了Windows应用程序和容器,我可以通过以下方式进行确认:
从Traefik配置的角度来看,我们的Docker容器具有如下标签:
- "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集成身份验证本身并非易事,但已记录在here中。