【问题标题】:Automatic machine key generation in ASP.NETASP.NET 中的自动机器密钥生成
【发布时间】:2011-07-21 10:01:08
【问题描述】:

默认情况下,机器密钥设置是自动生成和每个应用程序(AutoGenerate、IsolateApps)。 MSDN 声明解密密钥和验证密钥基于 Web 应用程序 ID。我在我的 IIS 7 服务器上托管了两个 ASP.NET MVC 2 站点,但发现机器密钥是相同的。我通过使用反射查看 ValidationKeyInternal 和 DecryptionKeyInternal 属性来验证这一点。我还通过在一个站点上生成一个防伪令牌 cookie 并将其传递给另一个站点来对其进行测试,并且可以读取该 cookie。

经过反复试验,我发现如果应用程序池标识发生变化,密钥也会发生变化。这两个站点具有相同的密钥,因为它们在网络服务凭据下运行。一旦我更改了一个站点的应用程序池标识,它们就会开始具有不同的验证/加密密钥。

但是,在我将这两个站点部署到另一台服务器后,即使更改了应用程序池标识,我也总是获得相同的机器密钥。两台服务器具有相同的硬件和软件配置。

我想知道在 AutoGenerate,IsolateApps 设置下如何生成机器密钥的实际逻辑是否有参考。在网络上,有很多文章在谈论在网络农场场景中设置相同的机器密钥。但是我在对面遇到了一个问题。每个 Web 应用程序的自动密钥生成似乎无法正常工作。有没有人遇到过同样的问题?

【问题讨论】:

  • 您所描述的是非典型的。以我的经验,它像宣传的那样有效。我有 2 个应用程序在同一个应用程序池中运行,共享表单身份验证票。除非我将 machinkey 设置为相同,否则他们无法共享门票。
  • 在遇到问题之前我从没想过这不起作用。痛苦的是我需要为两台服务器上发生的事情找到一个解释。

标签: asp.net iis machinekey


【解决方案1】:

您是否有可能覆盖 IIS 设置的 web.config 设置?这可能是其中的一个因素,就好像您告诉服务器使用特定密钥然后他们可能会这样做。

【讨论】:

  • 如果我使用 IIS 管理控制台更改设置,更改会保留在 web.config 中。它们是一致的。这也意味着我在 IIS 管理控制台中看到的内容是基于配置文件 hieharchy 的综合结果。顺便说一句,我通过在 IIS 和 Visual Studio 开发 Web 服务器中托管项目来进行测试。
猜你喜欢
  • 1970-01-01
  • 2013-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-03
  • 1970-01-01
  • 1970-01-01
  • 2021-07-27
相关资源
最近更新 更多