我们已准备好开始将一些IIS6站点迁移到IIS7,并且该应用程序当前使用表单身份验证。我们已经开始从各个站点获取一些请求,以便为用户使用Windows身份验证。虽然这很容易实现(并且我已经在内部展示了应用程序没有问题,正如预期的那样),然后问题是如何在集成Windows不起作用时继续保持表单身份验证。我已经看过几个关于如何在IIS6上配置它的演练,我可以在IIS7上做同样的事情,但后来我必须打开经典模式处理。如果可能的话,任何解决方案也应该可以移植到IIS6,以保持构建树的简单。
那么我的选择是什么?我是否使用IIS7中的集成Windows身份验证,web.config中的Forms Auth设置应用程序,并将401错误重定向到“错误页面”,允许他们使用表单登录,然后返回常规应用程序?
可能需要表格的情况将保留给合同工,我们的支持人员,以及是否有人需要从他们的外部网访问他们的网站。所以主要是我们的员工登录检查功能并确认错误报告。我建议我们只是坚持认为,为了让我们的支持人员工作,我们需要一个永远存在的Windows登录,然后我们将对谁可以登录该网站强制执行当地责任,但我被告知我们会这样做最好有表单身份验证。
有什么想法?我可以发布我已经阅读的文章的一些链接,如果这有助于论坛更好地缩小我的需求。
tl; dr:如何在IIS7中进行混合模式身份验证(窗体,窗口),而无需更改为经典管道,并且如果可能,仍然可以在IIS6中使用构建。
答案 0 :(得分:7)
不,这不太正确,但我不能在评论回复中做代码块,所以我会发布一个新答案......
以下代码块允许我控制来自IIS7的匿名访问,而不必在配置数据库中进行清理(IIS6上的GUI更改已应用)
<location path="WindowsLogin.aspx" >
<system.web>
<authorization>
<deny users="?" />
<allow users="*" />
</authorization>
</system.web>
<system.webServer>
<security>
<authentication>
<anonymousAuthentication enabled="false" />
<windowsAuthentication enabled="true" />
</authentication>
</security>
</system.webServer>
</location>
答案 1 :(得分:2)
感谢回到我身边,我已经开始玩几个星期几个实现了几周,我已经在互联网上阅读了(javascript,401,2个虚拟目录)但仍然havnt真的找到了我想要的任何东西。我们可能会将其推广到多个客户端 - 每个客户端具有不同的硬件/设置甚至不同版本的iis,因此希望它尽可能通用。在一些建议的解决方案上,我遇到了一堵砖墙......
当你说IIS7 +你在web配置中删除了anon访问时,我假设是这样的: -
<location path="Authent/WinLogin.aspx" >
<system.webServer>
<security>
<authorization>
<add accessType="Deny" users="?" />
</authorization>
</security>
</system.webServer>
</location>
答案 2 :(得分:1)
我花了几天时间尝试让它工作,略有不同......我希望第一个登录屏幕显示表单登录,下面有一个按钮&#34;使用Windows身份验证登录&#34;。< / p>
我最终放弃了所有这些技巧,因为我永远无法获得满意的结果。我的解决方法如下,并且完美运行:
因此,如果用户单击按钮&#34;使用Windows身份验证登录&#34;,服务器将重定向到Windows身份验证站点(传递&#34; ReturnUrl&#34;)。该站点挑战并登录用户,然后重定向回来,再次通过&#34; ReturnUrl&#34;以及HashKey。
这一切都发生得非常快,看起来非常无缝。
我知道这是一个hacky解决方法,但就我的情况而言,它运作良好。