将Windows身份验证与表单身份验证混合

时间:2010-07-06 09:04:10

标签: asp.net asp.net-membership

考虑用于Intranet的站点,该站点也应该可以从Internet访问。在Intranet上,您希望使用Windows身份验证,并且在Internet上您希望用户使用表单身份验证访问该站点。

是否可以设置这两种混合模式?我只想验证用户是否使用其中任何一个登录,而不使用两个站点。

3 个答案:

答案 0 :(得分:4)

您可能希望查看类似的问题:mixed mode authentication against AD and fallback to the database if it fail with Membership providers

在答案中,我提出了一个使用立面的解决方案。我利用这种方法将AD集成到多个域,aspnet sql提供程序和遗留认证数据库上,并取得了可观的成功。

答案 1 :(得分:2)

我知道没有内置的方式来做到这一点。但是你可以使用一个简单的解决方法:

选择表单身份验证作为主要身份验证,并将窗口身份验证映射到它。您可以使用global.asax或特殊的http处理程序或模块在应用程序AuthenticateRequest中执行此操作。在此请求中标识您的Intranet用户,并以编程方式使用FormsAuthentication.SetAuthCookie设置表单身份验证cookie。

我实际上将它用于混合模式表单和IP数字身份验证,但我认为它也适用于表单和窗口身份验证。

顺便说一句:也许混合模式表单和IP数字身份验证是您的问题的第二个解决方案。如果您的服务器是DMZ的一部分,您可以通过IP号子网检测您的Intranet用户。

答案 2 :(得分:1)

Hei,我看过这个页面讨论了IIS7的{2}级身份验证:IIS 7.0 Two-Level Authentication with Forms Authentication and Windows Authentication,另一个与你有相同要求:ASP.NET应用程序的IIS混合模式身份验证 - http://beaucrawford.net/post/IIS-ldquo3bmixed-moderdquo3b-authentication-for-ASPNET-Application.aspx ,但我没有尝试任何,也许它适合你?我想你只需要根据自己的需要进行调整。