【发布时间】:2013-12-03 04:27:54
【问题描述】:
考虑到 System.Web.Security.MachineKey 使用本地机器密钥来加密和解密同一框中的文本。如果我通过网络将加密文本发送到另一台计算机,我将如何使用此方法。远程计算机将如何解密文本?
【问题讨论】:
考虑到 System.Web.Security.MachineKey 使用本地机器密钥来加密和解密同一框中的文本。如果我通过网络将加密文本发送到另一台计算机,我将如何使用此方法。远程计算机将如何解密文本?
【问题讨论】:
如果远程计算机使用相同的密钥,它可以解密它。
当您拥有负载平衡的服务器和分布式状态时,通常会出现这种情况,例如sql server 会话状态,并且您希望确保其他服务器可以访问任何会话状态。您将确保负载平衡集群中的所有服务器对于同一个 Web 应用程序都具有相同的机器密钥。
您只想在 web 应用程序 web.config 中设置机器密钥,而不是全局设置。
【讨论】:
不确定这是否是您的目标:但如果您手动定义它,您可以在多个系统之间共享机器密钥:
见http://msdn.microsoft.com/en-us/library/ff649308.aspx
Web Farm 部署注意事项
如果您将应用程序部署在 Web 场中,则必须确保 > 每个服务器上的配置文件共享相同的 validationKey 和 decryptionKey 值,分别用于散列和解密。这是必需的,因为您无法保证哪个服务器 > 将处理连续的请求。
使用手动生成的键值,设置应类似于以下示例。`
<machineKey
validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7
AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B"
decryptionKey="ABAA84D7EC4BB56D75D217CECFFB9628809BDB8BF91CFCD64568A145BE59719F"
validation="SHA1"
decryption="AES"
/>
【讨论】: