Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 一组代码,两个身份验证方案构成Auth+;Windows身份验证:罪恶中的较小者_Asp.net_Windows_Iis_Authentication_Forms Authentication - Fatal编程技术网

Asp.net 一组代码,两个身份验证方案构成Auth+;Windows身份验证:罪恶中的较小者

Asp.net 一组代码,两个身份验证方案构成Auth+;Windows身份验证:罪恶中的较小者,asp.net,windows,iis,authentication,forms-authentication,Asp.net,Windows,Iis,Authentication,Forms Authentication,我们有一个应用程序,当前需要使用两种身份验证方案进行访问,即Forms Auth和Active Directory或NTLM/Windows Auth 按照应用程序现在的方式,有两个IIS站点指向具有相同文件集的不同文件夹,除了web.config之外,所有内容都相同 在任何人解雇我之前,这是一个继承的应用程序,但我现在负责这个应用程序。我们有机会进行一些重构,我正试图找出进行重构的最佳方式 假设对应用程序的直接NTLM身份验证的要求仍然有效。您必须能够通过集成的广告提示访问该应用程序,允许内部

我们有一个应用程序,当前需要使用两种身份验证方案进行访问,即Forms Auth和Active Directory或NTLM/Windows Auth

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

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

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

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

是否有任何可能的方法将IIS配置为使用名为web.config以外的文件作为其配置文件?这样就可以把它扼杀在萌芽状态

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

我对路由做了一些实验,但似乎无法路由到应用程序根目录之外的文件,这需要不同的路径来定义不同的身份验证方案,因此我认为这不起作用

非常感谢您的任何想法、反馈或想法


bd

您可以尝试一个具有混合模式身份验证的网站。检查此文章:

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


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

您可以尝试一个具有混合模式身份验证的网站。检查此文章:

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

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