通过 Internet 使用 Windows 身份验证访问内部托管的 IIS

通过 Internet 使用 Windows 身份验证访问内部托管的 IIS

我在防火墙后面的 IIS 上运行了 .NET Web 应用程序。
应用程序使用 Windows 身份验证 (NTLM) 对用户进行身份验证。
我需要使此应用程序可从 Internet 访问,以便:

  • 当用户尝试访问应用程序时,将显示由[反向代理]生成的登录表单。
  • 用户输入登录名和密码并提交表单。
  • [反向代理] 将外部凭据与 Windows 凭据匹配,我们可以将 Windows 域登录名和密码存储在某些数据库中。
  • [反向代理] 使用提供的凭据访问 Web 应用程序。

需要明确的是,我不希望 NTLM 直通到用户,我需要 [反向代理] 代表用户与 IIS 对话。用户可以输入不同的凭据,可以使用其他身份验证类型(Google、FB 等),并且 [反向代理] 会将外部帐户与内部帐户匹配。例如,员工将配置他们想要用来访问内联网门户的外部帐户。

我有什么选择?
我可以使用 Nginx 或 Squid 借助自定义模块/插件来实现这种情况吗?

答案1

听起来 SAML 或 oOth 对你来说是个不错的选择。你有没有研究过这个方法?通常它用于委托其他站点的凭据,但它也应该适用于内部站点。不过,你可能必须在 DMZ 中构建自定义前端。

答案2

您希望反向代理执行此操作,这使事情变得有点复杂。我不知道有任何现成的代理人可以执行此操作的软件,但一些 Junipers VPN 设备提供了一个 Web 界面,不仅允许用户启动 VPN 连接,而且在用户通过 VPN 设备 Web 界面进行身份验证后,还可以用作代理。

答案3

为了实现此目标,使用反向代理不是一个好主意。Windows 身份验证旨在用于仅有的在内部网应用程序中。您不希望这样做的原因有很多,其中一些原因如下:这里。最重要的一点是,您打开了从 DMZ 到内部网络的通道,这可能会被黑客滥用。

您应该使用 VPN 来获得您想要的目标。这里这是免费 VPN 软件的列表。我个人最喜欢的是 OpenVPN。

另一种可能性是在 Web 应用程序中使用表单身份验证,并使用单独的凭据让用户登录 Web 应用程序。

相关内容