3

似乎在某些时候人们发现了一个问题,当服务器具有不同的补丁组合时,导致身份验证票证在 Webfarm 上被标记为无效。

不幸的是,即使网络服务器上有相同的补丁,似乎仍然存在问题。

我的两台服务器:

  • 有相同的补丁
  • 具有相同的 machineKeys

然而,当用户从场中的一个 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: 

我要么必须弄清楚这一点,要么将微软的身份验证写出我的系统(我真的没有时间去做)。

以下是相同地应用于两个服务器的修补程序,它们是:

基于 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>
4

4 回答 4

3

我想我终于解决了这个问题。我不确定为什么此更改可以解决问题,但我为解决此问题所做的是将 machineKey 定义直接放在我的应用程序的 web.config 文件中。显然,要么我不明白如何使用 IIS 管理器正确设置机器密钥,要么 IIS 管理器存在一些问题。

所以为了解决这个问题,我直接在我的 web.config 中放置了一个条目,看起来像这样:

<machineKey validation="SHA1" validationKey="-a-validation-key-" decryption="Auto"  decryptionKey="-a-decryption-key-"/>

这篇文章让我走上了解决这个问题的正确道路:

ASP.NET 4 重大更改

于 2012-06-11T12:47:21.730 回答
2

好吧,我说得太早了。在整个过程中,我从服务器上删除了 .NET Framework 4,因为我们没有针对它进行开发,而且我看到有人提到 FW4 会导致身份验证问题。

在“解决”这个问题之后,我将 Framework 4 放回服务器并运行 Windows 更新,它为两台服务器添加了以下补丁:

  • XP、Server 2003、Vista、Windows 7、Server 2008、Server 2008 R2 for x64 上的 Microsoft .NET Framework 4 更新 (KB2600217)
  • 适用于基于 x64 的系统的 Windows XP、Windows Server 2003、Windows Vista、Windows 7、Windows Server 2008、Windows Server 2008 R2 上的 Microsoft .NET Framework 4 更新 (KB2533523)
  • 适用于基于 x64 的系统的 Windows XP、Windows Server 2003、Windows Vista、Windows 7、Windows Server 2008、Windows Server 2008 R2 上的 Microsoft .NET Framework 4 安全更新 (KB2487367)
  • 适用于基于 x64 的系统的 Windows XP、Windows Server 2003、Windows Vista、Windows 7、Windows Server 2008、Windows Server 2008 R2 上的 Microsoft .NET Framework 4 安全更新 (KB2518870)
  • XP、Server 2003、Vista、Windows 7、Server 2008、Server 2008 R2 for x64 上的 Microsoft .NET Framework 4 安全更新 (KB2656351)
  • XP、Server 2003、Vista、Windows 7、Server 2008、Server 2008 R2 for x64 上的 Microsoft .NET Framework 4 安全更新 (KB2572078)
  • XP、Server 2003、Vista、Windows 7、Server 2008、Server 2008 R2 for x64 上的 Microsoft .NET Framework 4 安全更新 (KB2633870)
  • 适用于基于 x64 的系统的 Windows XP、Windows Server 2003、Windows Vista、Windows 7、Windows Server 2008、Windows Server 2008 R2 上的 Microsoft .NET Framework 4 更新 (KB2468871)
  • XP、Server 2003、Vista、Windows 7、Server 2008、Server 2008 R2 for x64 上的 Microsoft .NET Framework 4 安全更新 (KB2656368)

由于我进行了这些更新,问题现在又回来了。另一个有趣的事情是,在这个过程中的某个地方,这些更新将解密密钥砍回了 48 个字节。我不确定它是砍掉了现有的还是创建了一个新的。我回去放了一个新生成的机器密钥和解密密钥,它没有解决问题。

于 2012-04-16T15:25:55.240 回答
1

好吧,在这个人在 asp.net 的帮助下,我想出了如何解决这个问题:

asp.net 上的线程帮助我解决了这个问题。

我认为最终修复它的是重新生成验证和解密密钥。旧密钥肯定与这些服务器上加载的修补程序不兼容。

有趣的是,旧的和新的验证密钥都是 128 字节,但旧的解密密钥是 48 字节,新的是 64 字节。

于 2012-04-12T20:44:40.750 回答
0

当MS10-070(asp.net padding oracle 攻击)应用于某些服务器时,我已经看到了这种行为。此更新 [以某种方式] 更改了加密技术,使票证与同一场内未修补的服务器不兼容。

您能否验证您场中的所有服务器是否都应用了此更新?

于 2012-04-10T20:01:39.973 回答