C# Cryptography.ProtectedData CurrentUser与ASP.NET和表单身份验证

C# Cryptography.ProtectedData CurrentUser与ASP.NET和表单身份验证,c#,.net,asp.net,encryption,forms-authentication,C#,.net,Asp.net,Encryption,Forms Authentication,如果加密是通过ProtectedData CurrentUser使用的,并且我有一个使用Forms auth的站点(带有自定义成员身份模块,不要认为这会有什么不同),它会在多个不同的web服务器上工作吗 我的猜测是,如果当前使用的用户是user.Identity,则会出现这种情况,因为这将是登录的用户,并且在任何web服务器上都是相同的 文档中似乎没有提到使用ASP.NET的任何内容。当前用户将是运行ASP.NET应用程序的用户(而不是访问站点的用户)。通常这是/ASPNET用户帐户,但可以更改

如果加密是通过ProtectedData CurrentUser使用的,并且我有一个使用Forms auth的站点(带有自定义成员身份模块,不要认为这会有什么不同),它会在多个不同的web服务器上工作吗

我的猜测是,如果当前使用的用户是user.Identity,则会出现这种情况,因为这将是登录的用户,并且在任何web服务器上都是相同的

文档中似乎没有提到使用ASP.NET的任何内容。

当前用户将是运行ASP.NET应用程序的用户(而不是访问站点的用户)。通常这是/ASPNET用户帐户,但可以更改。您可以使用
WindowsIdentity.GetCurrent()
函数验证这一点


您的另一个选项是使用
DataProtectionScope.LocalMachine
将其存储在计算机存储中(可从计算机上的任何帐户访问)。如果您使用的是未经授权的帐户(如ASPNET用户),则此成员的安全性可能比任何人编写应用程序以该用户身份运行并访问该用户存储的安全性都要低。

好,因此,除非它以域帐户的形式运行,否则取消保护只能在一台计算机上运行?是的。asp.net应用程序仍然可以使用“保护/取消保护”功能为多个用户存储数据。例如,您可以传递以下字符串以保护“userid:392013值:这是一个秘密”。Protect将返回一个加密字符串。将该字符串存储在数据库中将确保只能从加密该字符串的计算机对其进行解密。请注意,就windows而言,它们都是相同的windows用户(ASPNET帐户),因此将存储在同一个存储中。