添加的应用程序的Windows身份验证无效

时间:2016-02-09 13:37:01

标签: asp.net authentication iis

我有一个托管在Windows Server 2012 R2上的Intranet站点,它运行良好。我在同一站点上设置了多个应用程序,混合使用MVC和ASP Forms。但出于某种原因,一个站点不会对移动设备或非域计算机的某些浏览器进行身份验证。

IOS和Android设备都使用Chrome或Android设备上的默认浏览器或IOS设备上的Safari。他们都没有挑战用户名和密码。

我已经尝试跨两个设备清除所有已保存的密码并开始清理,但它仍会导致401未经授权的页面没有质疑。

在台式机上,此站点可在非域计算机上按预期无法应对的域计算机上运行,​​但根据浏览器的不同,它会受到影响。 Chrome和IE似乎可以正常运行,而Firefox并不适用。 Firefox显示与根网站进行身份验证的相同行为,但甚至没有对子应用程序提出质疑。注意:firefox的行为在域计算机和非域计算机之间都是一致的。

我已经尝试梳理每个网站的web.config和IIS设置,我唯一能找到的是不同的是我使用的是不同的应用程序池,这个特定的网站需要额外的权限,所以我有一个带有新身份。

还有一点,在我的开发机器上调试网站时,我可以让所有设备和浏览器进行身份验证,只有在部署到发生此问题的服务器时才会进行身份验证。

编辑:我已经做了一些调试,并创建了一个指向同一文件夹的新应用程序,它可以工作。到目前为止,我不确定旧应用程序的问题是什么,但重新启动似乎已经奏效。

1 个答案:

答案 0 :(得分:0)

Windows身份验证由 Kerberos NTLM 组成。

INTRANET 中的KERBEROS,因为客户端需要访问域控制器,而您不希望在Internet上公开您的DC。 另一方面,许多代理不支持NTLM,因此它适用于某些代理而不适用于其他代理。

同时,存在一些客户端依赖性。客户端还应支持Windows身份验证。 AFAIK,Internet Explorer是唯一为Windows Auth提供一流支持的浏览器。

结论,如果您的应用需要在Internet上进行通信,则不应使用Windows身份验证。

我的建议是使用其他身份验证机制,如:

  • 使用SSL的BASIC AUTH
  • OAUTH,如Facebook / Google等