2010-10-21 47 views
0

我们有一个应用程序当前需要使用两种身份验证方案(表单身份验证和Active Directory或NTLM/Windows身份验证)进行访问。一套代码,两种身份验证方案表单身份验证+ Windows身份验证:恶意中的较小者

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

在任何人燃起我之前,这是一个继承的应用程序,但我现在负责。我们有机会做一些重构,并试图找出继续进行的最佳方式。

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

现在假设同样的应用程序也需要从组织外的用户访问。使用表单身份验证和Membership提供程序。什么是配置此应用程序最不可怕的方式?

是否有任何可能的方式来配置IIS使用一个文件命名为其他然后web.config文件的配置文件?那可能会把它扼杀在那里。

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

我对路由做了一些实验,但好像你不能路由到应用根目录之外的文件,这需要与定义不同的认证方案有所不同,所以我认为这不会工作。

任何想法,意见或想法是极大的赞赏,

BD

回答

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身份验证(无匿名访问)。内部用户可以访问网站并通过此默认页面进行身份验证,然后默认页面将重定向到应用程序主页/主页。请求外部用户使用登录页面进行表单身份验证,然后重定向到主页面。

+0

甜,我认为这将为我工作感谢雅。 – BrooklynDev 2010-10-22 15:34:53