两阶段身份验证 IIS7

Posted

技术标签:

【中文标题】两阶段身份验证 IIS7【英文标题】:Two stage Authentication IIS7 【发布时间】:2011-11-01 16:24:01 【问题描述】:

我知道混合模式身份验证的问题,并且 IIS7 已经完成,但我有一个稍微不同的问题。

我正在开发一个额外的网络来托管许多应用程序(在它们自己的应用程序池下运行)以进行测试。

这些应用程序有自己的表单身份验证,当它们在现场时,这是它们的身份验证模式,理想情况下我不想在那里更改任何内容。

我需要的是在他们进入应用程序之前进行另一次身份验证检查,以检查它们是否被允许在外联网上。我什至不希望他们看到应用程序的登录页面。

很明显,我可以在外网设置windows认证,只有我们设置的人才能看到。但是内部应用程序使用表单身份验证,如果您只输入整个 url(例如http://extranetsite/applicationtotest/login),那么它不会检查 Windows 身份验证。

有没有人对我如何实现这一点提出任何建议?

(仅供参考,我使用的是 IIS7、.net 3.5、mvc2) 附言。我真的想避免在经典管道中运行它,因为我正在使用 MVC。

【问题讨论】:

你所有的应用都在同一个网站下还是每个应用都是一个网站? 正如我所说,我有一个网站,其中运行着许多应用程序 - 作为应用程序而不是虚拟目录。 您应该能够使用经典应用程序池来实现这一点,但您不会使其与集成一起使用,因为表单和 win auth 根本不兼容,而且 IIS 甚至不允许您设置它起来。 这就是我认为的答案:( 嘘 【参考方案1】:

您在此外联网前是否有防火墙?您可以通过限制允许查看的 IP 范围来限制对整个站点的访问。

或者,您可以设置另一个站点,作为受 Windows 身份验证保护的应用程序的入口点。然后在每个应用程序的登录页面上,您可以检查用户是否有来自此登录页面的有效引荐来源网址引用。如果没有,您可以将它们重定向回登录页面或显示一条消息。无论如何都不是万无一失的,但可能会获得您正在寻找的部分结果。

【讨论】:

以上是关于两阶段身份验证 IIS7的主要内容,如果未能解决你的问题,请参考以下文章

为啥 cURL 不适用于 IIS7 上的 Windows 身份验证?

IIS7 表单身份验证不会拒绝图像访问

在IIS7中通过PHP连接到SQL SERVER 2008(使用Windows身份验证)?

使用 IIS7、WCF Rest、自定义身份验证模块进行模拟

iis7 基于挑战和基于登录重定向的身份验证不能同时使用

Asp.net 形成身份验证 cookie 不遵守 IIS7 的超时