我很难使用IIS/ARR反向代理到WildFly应用服务器。在Linux上,我们使用web服务器从应用服务器卸载HTTPS、身份验证和安全功能,所以最初的想法是对IIS也这样做。
似乎IIS阻止或中断了客户端和应用服务器之间的协商。我放置在应用服务器中的测试servlet可以很好地直接访问,但是弹出身份验证窗口是通过IIS/ARR访问的。
<rule name="ReverseProxyInboundRuleAT" enabled="true" stopProcessing="true">
<match url="^(auth-test)(/.*|$)"/>
<action type="Rewrite" url="http://127.0.0.1:8080/{R:0}" logRewrittenUrl="true" />
<serverVariables>
<set name="HTTP_SEC_WEBSOCKET_EXTENSIONS" value="" />
<set name="HTTP_X-Forwarded-Proto" value="https" />
<set name="HTTP_X-Forwarded-Port" value="443" />
<set name="HTTP_X-Forwarded-HOST" value="site.example.com" />
</serverVariables>
</rule>身份验证失败,出现华夫饼错误:
error logging in user: com.sun.jna.platform.win32.Win32Exception: The token supplied to the function is invalid这种情况发生在Windows Server 2016/2019和IIS 10上。是否可以将受Kerberos保护的SSO应用程序放在IIS后面?
UPD:我已经检查过Apache没有破坏代理WildFly请求的协商协议,但是IIS破坏了。与Apache服务器相比,IIS在协商过程中“吃”了两个包,比如初始建议和回复。
发布于 2022-10-25 19:34:20
如果刚刚安装了此功能,我发现IIS“吃”身份验证包。因此,如果您希望通过协商传递,您可以通过服务器管理器卸载它。无论如何,整个任务更加复杂,因为在协商中的NTLMSSP数据包似乎可以通过IIS/ARR传递,但是Kerberos可能不能。如前所述,它在IIS上中断,就像在额外跳转上一样。
https://serverfault.com/questions/1113864
复制相似问题