我们有一个应用程序,当前需要使用两种身份验证方案进行访问: Forms Auth和Active Directory或NTLM / Windows Auth。
应用程序现在的方式是,有两个IIS站点指向具有相同文件集的不同文件夹,除了web.config之外,所有内容都相同。
在任何人批评我之前,这是一个继承的应用程序,但无论如何,我现在要对它负责。我们有机会做一些重构,我正在尝试找出最好的继续进行的方法。
假设应用程序的直接NTLM身份验证的要求是成立的。您必须能够使用集成的AD提示符访问应用程序,从而允许内部网络上的员工完全无需手动登录即可访问站点。
现在,假设组织外部的用户也需要访问相同的应用程序。使用窗体身份验证和成员资格提供程序。配置这个应用程序最不可怕的方式是什么?
有没有可能将IIS配置为使用除web.config之外的其他名称的文件作为配置文件?可能会把它扼杀在萌芽状态。
在源代码控制中,我想的方法是将所有的源文件放在一个项目中,一个“共享”项目,并使用构建时事件将它们自己复制到两个消费web项目中。然后,我们可以继续将应用程序部署在两个不同的文件夹中,但至少在源代码控制中,公共源文件将只存在于一个位置。这样做的缺点是我们会失去动态编译,这真的很糟糕。但这总比一大堆重复要好。
我做了一些路由的实验,但似乎你不能路由到应用程序根目录之外的文件,这将需要不同的定义不同的身份验证方案,所以我认为这是行不通的。
我们非常感谢您的任何想法、反馈或想法,
bd
发布于 2010-10-22 16:59:00
您可以尝试使用一种混合模式身份验证的网站。查看这篇文章:http://www.pluralsight-training.net/community/blogs/craig/archive/2004/07/24/1699.aspx。
其思想是在ASP.NET配置中具有窗体身份验证,并在IIS中标记匿名访问和windows身份验证。因此,每当服务器发送401时,浏览器将提供windows凭据,否则将显示登录表单。本文作者在登录表单上提供了一个复选框,该复选框将发出401以获取windows凭据,然后使用它们来颁发身份验证票证。
另一种变化(从用户体验的角度来看)是有一个默认页面,该页面将在IIS中请求集成的windows身份验证(无匿名访问)。内部用户可以访问网站并通过此默认页面进行身份验证,然后默认页面将重定向到应用程序主页/主页。外部用户被要求使用进行表单身份验证的登录页面,然后重定向到主页。
https://stackoverflow.com/questions/3992892
复制相似问题