2

除了使用 FormsAuthentication.Encrypt / FormsAuthentication.Decrypt,是否可以使用机器密钥存储中现有的 RSA 容器来对票证进行加密/解密。

原因是我正在开发的 ASP.Net 应用程序旨在用于多个负载平衡服务器。因此,我需要将机器密钥复制到所有机器中的所有 web.config 文件中。由于我们已经将非对称加密 (RSA) 用于其他目的,因此我们通过 bat 文件和密钥容器 xml 在所有服务器中自动安装了一个通用 RSA 密钥容器。由于这种机制已经到位,我也想使用相同的 RSA 密钥容器来加密/解密表单身份验证票。

  1. 这可能吗?如果是这样,我如何覆盖现有行为来实现这一点。
  2. 如果可能的话,您是否看到使用 RSA 而不是标准加密的任何缺点?
4

1 回答 1

0

是的,但这需要一些工作。

您将需要覆盖/替换 .NET 附带的标准身份验证模块,并复制所有现有功能,但要使用的 RSA 加密/解密方法的调用除外。

请参阅http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.encrypt.aspx

如果您使用这些,您还需要编辑所有标准的内置登录页面。

作为模板,检查 FormsAuthenticationTicket 的来源,您将看到如何构造包含 UserID、Expiry Date 等参数的字符串,然后将该字符串传递给 Encrypt 方法,然后将其用作 cookie 值.

然后,您的新身份验证模块将必须像以前一样反转该加密并验证用户。

这是相当多的工作,收益相对较小,这取决于您希望使用 RSA 而不是使用的标准加密方法(他们已经提供了一些强大的加密方法,见http://www.sourcetree.net/sourcetree /Development/Aspnet%20Examples/GenerateMachineKeyForWebConfig.aspx )

于 2012-11-30T14:59:27.053 回答