【发布时间】:2016-11-23 01:22:49
【问题描述】:
我正在尝试加密一些数据以存储在 Azure 上部署的网站的用户 cookie 中。
我尝试查看 System.Security 中的 DataProtection API,但它们似乎都需要机器或用户范围,这在部署到 Azure 时不起作用。
然后我尝试使用 AesCryptoServiceProvider 并将密钥存储在我的 Web.config 中,但出现此错误:
CryptographicException:数据保护操作是 不成功。这可能是由于没有用户配置文件造成的 为当前线程的用户上下文加载,可能是这种情况 当线程正在模拟时。
我正在阅读该错误,显然您需要调整 IIS 设置,该设置不适用于 Azure。
我还尝试查看 DataProtection Asp.NET Core 包,但它带来了很多新包和提到需要将加密信息存储在本地文件夹中的文档;如果没有专用机器,它似乎也无法在 Azure 上运行。
在 Azure 网站上保护/取消保护数据的正确方法是什么?
【问题讨论】:
-
你的意思是只来保护web.config中的连接字符串吗?
-
@LeiYang 不,我不是在谈论 web.config 中的任何内容。我想保护 VSTS 的 OAuth 访问令牌并将其存储为 cookie。
-
为什么你认为 web.config 在 IIS 甚至 Azure 中是危险的?
-
我也不太了解这个问题的反对意见。您是否有理由不能直接在代码中使用
AESManaged来加密令牌?如果需要,将密钥存储在您的代码中。 -
@RandomEngy 对于专门将数据加密到 cookie 中,您可以使用与默认表单身份验证相同的方法,例如
FormsAuthentication.Encrypt/FormsAuthentication.Decrypt;这将使用您无法在 web.config 中指定的机器密钥(因此将使用由 azure 生成的机器密钥)或可以在 web.config 中指定,然后您将需要解决加密 web.config 问题(这里我不有什么好的答案)
标签: c# asp.net azure encryption