当服务器具有不同的补丁组合时,似乎在某些时候存在一个问题,即人们追踪到导致身份验证票证在Webfarm上被标记为无效。
不幸的是,即使Web服务器上有相同的补丁,似乎仍然存在问题。
我的两台服务器:
然而,当用户从服务器场中的一个Web服务器转换到另一个Web服务器时,底层的Microsoft软件代码会使令牌无效。这是事件日志条目:
Event code: 4005
Event message: Forms authentication failed for the request. Reason: The ticket supplied was invalid.
Event time: 4/10/2012 2:42:20 PM
Event time (UTC): 4/10/2012 6:42:20 PM
Event ID: 92eedee52ede49239fd063fe5609d858
Event sequence: 2
Event occurrence: 1
Event detail code: 50201
Application information:
Application domain: /LM/W3SVC/2000/ROOT-1-129785553216092727
Trust level: Full
Application Virtual Path: /
Application Path: C:\inetpub\wwwroot\testportal.mydomain.com\
Machine name: WEB02
Process information:
Process ID: 1428
Process name: w3wp.exe
Account name: IIS APPPOOL\testportal.mydomain.com
Request information:
Request URL: http://testportal.mydomain.com/Interface.aspx
Request path: /Interface.aspx
User host address: *************
User:
Is authenticated: False
Authentication Type:
Thread account name: IIS APPPOOL\testportal.mydomain.com
Name to authenticate:
Custom event details:
我要么想出这个问题,要么从我的系统中写出微软的身份验证(我真的没时间做)。
以下是两个服务器IDENTICALLY应用的修补程序:
基于Windows Server 2008 R2 x64的
KB981391,KB981392,KB977236,KB981111,KB977238,KB977239,KB981390,KB2305420,KB2386667,KB2393802,KB2425227,KB2475792,KB2476490,KB2478662,KB2479628,KB2482017,KB2484033,KB2485376,KB2487426,KB2488113,KB2492386,KB2503665,KB2505438,KB2506014 ,KB2506212,KB2506928,KB2507618,KB2507938,KB2508272,KB2509553,KB2510531,KB2511250,KB2511455,KB2515325,KB2518869,KB2522422,KB2524375,KB2529073,KB2530548,KB2533552,KB2533623,KB2534366,KB2536275,KB2536276,KB2539635,KB2541014,KB2544521,KB2544893,KB2545698 ,KB2547666,KB2552343,KB2555917,KB2556532,KB2560656,KB2563227,KB2564958,KB2567680,KB2570947,KB2572077,KB2584146,KB2585542,KB2588516,KB2598845,KB2603229,KB2607047,KB2607576,KB2608658,KB2618444,KB2618451,KB2620704,KB2620712,KB2621440,KB2631813,KB2632503 ,KB2633873,KB2633952,KB2636573,KB2639308,KB2639417,KB2640148,KB2641653,KB2641690,KB2643719,KB2644615,KB2645640,KB2647516,KB2647518,KB2654428,KB2656356,KB2660075,KB2660465,KB2665364,KB2667402,KB958488,KB976902,KB976932,KB982018
根据请求,这是我的web.config的身份验证部分:
<authentication mode="Forms">
<forms loginUrl="Login.aspx" name=".ASPXFORMSAUTH" cookieless="AutoDetect" timeout="120" slidingExpiration="true">
</forms>
</authentication>
答案 0 :(得分:3)
我想我终于解决了这个问题。我不确定为什么这个更改解决了问题,但我解决它的方法是将machineKey定义直接放在我的应用程序的web.config文件中。显然要么我不明白如何使用IIS管理器正确设置机器密钥,或者IIS管理器存在一些问题。
因此,为了解决这个问题,我将一个条目直接放在我的web.config中,看起来像这样:
<machineKey validation="SHA1" validationKey="-a-validation-key-" decryption="Auto" decryptionKey="-a-decryption-key-"/>
这篇文章引导我找到解决这个问题的正确途径:
答案 1 :(得分:2)
我说得太早了。在整个过程中,我删除了服务器上的.NET Framework 4,因为我们没有开发它,我看到一些提到FW4导致身份验证问题。
在“解决”此问题之后,我将Framework 4重新放回服务器并运行Windows更新,它将以下补丁添加到两个服务器:
由于我进行了这些更新,问题现在又回来了。另一件有趣的事情是,在这个过程中的某个地方,这些更新将解密密钥切换回48个字节。我不确定它是否会破坏现有的或者是否创建了新的。我回去并放了一个新生成的机器密钥和解密密钥,它没有解决问题。
答案 2 :(得分:1)
在asp.net的这个家伙的帮助下,我想出了如何解决这个问题:
Thread at asp.net that helped me figure this out.
我认为最终修复它的是重新生成Validation和Decryption键。必须有一些旧密钥与这些服务器上加载的修补程序不兼容。
有趣的是,旧的和新的验证密钥都是128字节,但旧的解密密钥是48字节,新的是64字节。
答案 3 :(得分:0)
当MS10-070(asp.net padding oracle attack)应用于某些服务器时,我已经看到了这种行为。此更新[以某种方式]更改了加密技术,使票证与同一服务器场中未修补的服务器不兼容。
您是否可以验证服务器场中的所有服务器是否已应用此更新?