web.config 中的 MachineKey 在两个 IIS 应用程序之间不同步

MachineKey in web.config going out of sync between two IIS applications

我们有一个 ASP.NET 4.5 WebAPI 服务托管在负载均衡器后面的两个单独的 AWS 实例上。这两台机器都有一个标准的 system.web 配置部分,其中包含带有解密和验证密钥以及算法集的 machineKey 元素。两台机器上的 web.configs 相同:

<system.web>
    ...
    <machineKey decryption="AES" decryptionKey="..." validation="SHA1" validationKey="..." />
    ...
</system.web>

OAuth 中间件使用这些密钥来 decrypt/validate 请求中的不记名令牌。

过去两年一切都运行良好,但在上个月,发送到第二个 Web 框的请求一直失败,因为 OAuth 不记名令牌似乎无效。

如果我们一次只 运行 一个 'leg' 网络平衡器,一切都很好,无论哪个分支处理所有请求。但如果两者都是 运行ning,则对第二个框的请求将失败。这很奇怪,因为没有代码更改,也没有我们知道的环境变化,无论是网络框还是负载平衡器。

这一切都表明两台机器都使用不同的机器密钥,即使它们都在 web.config.

中进行了硬编码

有什么方法可以覆盖机器密钥吗?对于可能出现的问题还有其他解释吗?

检查两个 AWS 实例上的系统时钟是否匹配。我似乎记得几年前发生在我身上的事情。