避免使用NTLM每个请求401响应(Avoiding 401 response for each r

2019-06-27 16:40发布

在这里,我们有使用基于NTLM Windows身份验证一个asp.net 3.5应用程序。 该系统实际上分布在不同地域的地方(通过VPN连接)的专用网络上运行。

我们现在正在努力优化网站的性能。 因为NTLM方式的工作原理,在IIS每个新的请求是由3个不同的要求,而前2个是401级的响应。 我们正试图尽量减少这些请求的金额是只在会议开始。 我们发现这个解决方案。 遗憾的是它并没有改变任何东西,我们不断收到这401响应(消耗时间)。

为了看交通我第一次使用的提琴手应用。 不知怎的,当我使用Fiddler,只有1在会话(正是我希望的话)的开始认证过程,但是当我关闭小提琴手,并通过Wireshark的检查流量,我可以看到,我还是有着对每个请求该401响应。

所使用的客户端是IE6,IIS 6版本。

谁能指教?

Answer 1:

NTLM /协商,与所有其他HTTP认证方案,是面向连接的协议。

在IIS中,有其控制认证是否会要求对先前验证的连接(例如AuthPersistSingleRequest)上的所有请求的各种设置。 独立该设置的,我相信做一个POST请求时,IIS会自动要求重新认证。

如果您的服务器被损害连接复用(例如,通过发送连接:在回应关闭头),你必须解决这个问题,否则将出现重新验证。 你可以很容易地检查使用招这样的认证重用挫败头。



Answer 2:

唯一的办法是只登录页上使用NTLM和使用的cookie喜欢这里



Answer 3:

在一个相关的话题; 如果您使用的是IIS7.0和Kerberos身份验证它出现AuthPersistNonNTLM = TRUE可用于避免401往返为每个请求。

http://msdn.microsoft.com/en-us/library/aa347548(VS.90).aspx

http://blogs.technet.com/b/configurationmgr/archive/2010/06/03/solution-you-may-experience-slow-performance-when-using-bits-and-kerberos-authentication-on-configmgr- 2007年,分布points.aspx



Answer 4:

你有没有在您的域名试过吗?

setspn -a FQDNServerName applicationPoolServiceAccount
setspn -a biosServerName applicationPoolServiceAccount

它允许应用程序池服务NTLM身份验证请求。



Answer 5:

这可能是对IE6的安全设置的网站。 试着改变当地intranett或受信任的站点。



Answer 6:

我有完全一样的问题! 我现在用的是相同的环境你。 除了我看到2个401的,即使在提琴手。 我花了几天的那个问题,然后就放弃了它。 AuthPersistence并没有为我工作的。 但这里是我找到的联系,也许他们会在你的情况下工作。

http://msdn.microsoft.com/en-us/library/ms525244.aspx

http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/b0b4ec5c-74f8-43e9-ac64-d8b852568341.mspx?mfr=true

http://technet.microsoft.com/en-us/library/cc786094.aspx

http://technet.microsoft.com/en-us/library/cc781339(WS.10).aspx

我试图在两个虚拟目录和网站级别设置标志,但它并没有帮助。 您使用的是IIS元数据库资源管理器来编辑这些属性呢? 其清洁方式来编辑特性,并且可以帮助不是直接编辑XML文件的更多。

规避问题的方法是插入Cache-Control头在未将任何网页上经常变化的资源HTTP响应。 就我而言,我缓存的CSS(使用外部CSS尽可能优化这个),JS和IMG文件。 因为我有大约60得到加载我们的网页上,这些类型的文件,我们能够消除对120的401错误,马上!

请确保您使用的Cache-Control头,而不是如改性或基于其中401和304仍然会即使文件缓存产生的电子标签缓存。



Answer 7:

我是有这个问题,以及不同的是,对我来说,这是造成这主要是JS和CSS文件。 我的网站(最喜欢的网站)保持JS和CSS文件中有自己的目录。 所以我的解决办法是简单地去在IIS这些目录并启用匿名身份验证(我说的简单,但它历时两年对我来说,工作了这一点,由于这个职位)。 目前该网站仍需要Windows身份验证,但对于JS和CSS文件的子目录没有。 IOW,它似乎是完美的工作。

我也从来没有把敏感信息的JS文件(或CSS文件为此事),并建议你也不会。 如果你这样做,你会明显要移动这些文件中的敏感信息,这些目录。



文章来源: Avoiding 401 response for each request using NTLM