一组代码,两种身份验证方案Forms Auth + Windows Auth:较小的邪恶

时间:2010-10-21 23:48:17

标签: asp.net windows iis authentication forms-authentication

我们目前需要使用两种身份验证方案(Forms Auth和Active Directory或NTLM / Windows身份验证)访问该应用程序。

现在应用程序的方式,有两个IIS站点指向具有相同文件集的不同文件夹,除了web.config之外,所有内容都相同。

在任何人开火之前,这是一个继承的应用程序,但是我现在负责的是。我们有机会进行一些重构,我正试图找出最好的方法。

假设应用程序的直接NTLM身份验证的要求。您必须能够通过集成的AD提示访问该应用程序,允许内部网络上的员工访问该站点,而无需手动登录。

现在假设同样的应用程序也需要也可以从组织外部的用户访问。使用表单身份验证和成员资格提供程配置此应用程序的最不可靠的方法是什么?

是否有任何可能的方法来配置IIS以使用名为web.config以外的文件来配置它的配置文件?那可能会把它扼杀在那里。

在源代码控制中,我认为要走的路是将所有源文件放在一个项目中,一个“共享”项目,并使用构建时事件将自己复制到两个消费的Web项目中构建任何一个消费项目。然后我们可以继续在两个不同的文件夹中部署应用程序,但至少在源代码控制中,公共源文件只存在于一个位置。这样做的缺点是我们会失去动态编译,这真的很糟糕。但更好的是,然后大量的重复。

我做了一些路由实验,但似乎你不能路由到应用程序根目录之外的文件,这需要不同来定义不同的身份验证方案,所以我认为这不会起作用。

非常感谢任何想法,反馈或想法,

BD

1 个答案:

答案 0 :(得分:3)

您可以尝试使用某种混合模式身份验证的网站。查看此文章:http://www.pluralsight-training.net/community/blogs/craig/archive/2004/07/24/1699.aspx

我们的想法是在ASP.NET配置中使用Forms身份验证,并在IIS中标记匿名访问和Windows身份验证。因此,每当服务器发送401时,浏览器将提供Windows凭证,否则将显示登录表单。文章作者在登录表单上提供了一个复选框,该复选框将发出401以获取Windows凭据,然后使用它们来颁发身份验证凭证。

另一种变体(从用户体验的角度来看)是一个默认页面,它将在IIS中请求集成的Windows身份验证(无匿名访问)。内部用户可以访问站点并通过此默认页面进行身份验证,然后默认页面将重定向到应用程序主页/主页。请求外部用户使用进行表单身份验证的登录页面,然后重定向到主页。

相关问题