尽管如此,使用 Windows 身份验证的 IIS Web 应用程序仍会生成登录提示

Posted

技术标签:

【中文标题】尽管如此,使用 Windows 身份验证的 IIS Web 应用程序仍会生成登录提示【英文标题】:IIS Web App Using Windows Authentication Nevertheless Generates Login Prompts 【发布时间】:2016-04-17 14:57:35 【问题描述】:

所以,我的问题是我有一个 Web 应用程序,它应该使用 Windows 身份验证,但仍然提示用户输入密码 一天的使用。

详情: 这是一个仅供内部使用的应用程序,仅供与该应用程序位于同一 Intranet 上的人员使用。

服务器为Windows Web Server 2008R2,IIS版本为7.5.7600.16385。

我用于测试的浏览器是 IE 11.09600.18124。它将站点识别为本地 Intranet |保护模式:关闭。为该区域选择的用户身份验证、登录选项是“使用当前名称和密码自动登录”。启用集成 Windows 身份验证已打开。

应用程序是 ASP.NET v4,在 ASP.NET v4.0 应用程序池、经典管道和用于标识的 NetworkService 上运行。

应用的身份验证禁用匿名,启用 ASP.NET 模拟,禁用表单,启用 Windows 身份验证。

提供商首先是 NTLM,其次是协商。 扩展保护已接受,内核模式身份验证已启用。

Authenticated Users、NETWORK SERVICE、aspnet_wp 帐户和域用户都有权查看该站点,以及通常的嫌疑人。

我用于该站点的 URL 不是 FQDN。是http://machinename/DUmmyNameOfApp 等等。

.NET 授权规则下没有“拒绝”规则。

我已尝试根据 MS 支持的文章 896861 禁用环回检查,但这没有帮助,而且似乎也不适用于我的问题。

我尝试将第一个提供程序切换到 Negotiate:Kerberos,但没有帮助。

我尝试将应用程序池标识切换为应用程序池 ID,但没有帮助。

我已将网络服务(应用程序池标识)添加到 IIS_IUSRS。

我在这里阅读了问题 5402381,但没有帮助。

典型事件的 IIS 日志如下:

#Software: Microsoft Internet Information Services 7.5
#Version: 1.0
#Date: 2016-01-12 19:23:31
#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status time-taken
2016-01-12 19:23:31 10.1.1.60 GET /DummyNameOfApp/Default.aspx - 80 - 10.1.28.54 Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+6.1;+WOW64;+Trident/7.0;+SLCC2;

+.NET+CLR+2.0.50727;+.NET+CLR+3.5.30729;+.NET+CLR+3.0.30729;+Media+Center+PC+6.0;+.NET4.0C;+.NET4.0E;+InfoPath.3;+.NET+CLR+1.1.4322) 401 1 2148074254 78
2016-01-12 19:23:34 10.1.1.60 GET /DummyNameOfApp/Default.aspx - 80 DUMMYDOMAIN\jwoodward 10.1.28.54 Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+6.1;+WOW64;

+Trident/7.0;+SLCC2;+.NET+CLR+2.0.50727;+.NET+CLR+3.5.30729;+.NET+CLR+3.0.30729;+Media+Center+PC+6.0;+.NET4.0C;+.NET4.0E;+InfoPath.3;+.NET+CLR+1.1.4322) 401 5 0 

249
2016-01-12 19:23:43 10.1.1.60 GET /DummyNameOfApp/Default.aspx - 80 DUMMYDOMAIN\jwoodward 10.1.28.54 Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+6.1;+WOW64;

+Trident/7.0;+SLCC2;+.NET+CLR+2.0.50727;+.NET+CLR+3.5.30729;+.NET+CLR+3.0.30729;+Media+Center+PC+6.0;+.NET4.0C;+.NET4.0E;+InfoPath.3;+.NET+CLR+1.1.4322) 200 0 0 

7004
2016-01-12 19:23:43 10.1.1.60 GET /DummyNameOfApp/null sEcho=1&iColumns=10&sColumns=&iDisplayStart=0&iDisplayLength=-

1&mDataProp_0=0&mDataProp_1=1&mDataProp_2=2&mDataProp_3=3&mDataProp_4=4&mDataProp_5=5&mDataProp_6=6&mDataProp_7=7&mDataProp_8=8&mDataProp_9=9&_=1452626623940 80 

DUMMYDOMAIN\jwoodward 10.1.28.54 Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+6.1;+WOW64;+Trident/7.0;+SLCC2;+.NET+CLR+2.0.50727;+.NET+CLR+3.5.30729;+.NET+CLR

+3.0.30729;+Media+Center+PC+6.0;+.NET4.0C;+.NET4.0E;+InfoPath.3;+.NET+CLR+1.1.4322) 404 17 50 0

编辑:web.config 中的身份验证标签是 。没有授权标签。

【问题讨论】:

我做了你在我过去的项目中尝试过的同样的事情;但是无论我在配置中进行了什么更改,我都无法抑制此登录提示;我会等着看,如果有人有任何解决办法 能否在 web.config 中添加认证和授权标签? 与其将网站放在浏览器安全设置中的本地 Intranet 中,不如将网站 url 添加到受信任的站点中。您可能仍然会在第一次收到提示,但记住登录的复选框会在该登录提示之后起作用。它适用于我的网络。 对于我的用户来说,任何登录提示都是不可接受的。我也认为没有必要。 【参考方案1】:

从 Windows 7 开始,默认启用名为 Extended Protection for Authentication 的附加安全功能。我的怀疑是这导致了您正在观察的问题。您已经在服务器上为此 Web 应用程序设置了“扩展保护”为“接受”。如果您确认客户端已设置,然后更新服务器以使用“要求”进行扩展保护,提示应该会消失。

有关如何在客户端和服务器上设置 EPA 的更多详细信息,请参阅 http://blogs.technet.com/b/srd/archive/2009/12/08/extended-protection-for-authentication.aspx。

【讨论】:

恐怕这行不通。将扩展保护设置为必需,经过测试,尝试了第一次推荐的注册表更改,经过测试,尝试了第二次注册表更改,经过测试,没有乐趣。 (无论如何,注册表更改可能是不必要的。文章说Win7默认设置正确。)

以上是关于尽管如此,使用 Windows 身份验证的 IIS Web 应用程序仍会生成登录提示的主要内容,如果未能解决你的问题,请参考以下文章

匿名之前的 IIS Windows 身份验证

使用 Windows 身份验证的 IIS 托管 WCF 服务和 SQL 查询

IIS7:像在 IIS6 中一样设置集成 Windows 身份验证

在IIS7中通过PHP连接到SQL SERVER 2008(使用Windows身份验证)?

IIS 节点和 Windows 身份验证:IIS 网站不断提示输入凭据

Silverlight 4中的IIS Windows身份验证问题