我有一个使用 Windows 身份验证的 ASP .NET WCF 服务 Web。将 Web 服务部署到服务器 (Windows Server 2012) 并在 IIS 上启用 Windows 身份验证后,我使用 localhost 直接访问服务器的页面。它提示输入凭据,我提供一次 AD 用户名/密码,它就可以工作。
现在,如果我在 AWS 应用程序负载均衡器后面有相同的服务器,并且我访问了映射到应用程序负载均衡器的 Web 服务的 DNS,那么就会注意到这里存在问题。
将弹出用于输入 Windows 凭据的窗口。但是当我输入正确的凭据时,它不会接受它们。反复提示输入用户名/密码? 发生什么事了? ALB 不支持 IIS 的 AD 集成身份验证?
有什么想法吗?
由于登录问题和与其他用户会话的连接,应用程序负载均衡器将无法工作。
Windows 身份验证(Kerberos 或 NTLM 后备)需要 TCP 连接维护相同的源端口才能保持身份验证。您必须使用 网络负载均衡器 而不是应用程序负载均衡器。
无法通过第 7 层“应用程序”负载均衡器进行 Windows 身份验证。
AWS Application Load Balancer 中似乎有此解决方案的解决方法。您需要在 ALB 设置中启用粘性会话。我尝试了这个,现在我没有收到重复的 Windows 身份验证弹出窗口,反复提示输入启用了 Windows 身份验证的 Web 应用程序的用户名和密码。但这种快速修复可能对无状态应用程序没有帮助。
我遇到了这个问题,除非您可以在 ALB 上将连接长度设置为亚毫秒,否则您最终会以 userB 作为 userA 登录。如果连接释放得不够快,ALB 会保留最初经过身份验证的用户,并将其重新用于后续请求。当 IWA 身份验证或反映域加入环境中当前登录用户的工具需要高度可用时,建议切换到 NLB 是正确的。