我已經部署了一個webjob(.net 4.6),它加密了一些url字符串並通過電子郵件發送給客戶。我使用.NET Core的IDataProtector進行加密,因爲webjob .net 4.6不支持它的庫,所以我不得不手動引用這個DLL。System.Security.Cryptography.CryptographicException:'在密鑰環中未找到密鑰{00000000-0000-0000-0000-000000000000}'。
例如在webjob:
IDataProtector protector = provider.CreateProtector("myProtector")
http://test.com/Email/Agreement?n=" + protector.Protect(name) + "&a=" + protector.Protect(address)
成爲在電子郵件中的鏈接
http://test.com/Email/Agreement?n=CfDJ8AAAAAAAAAAAAAAAAAAAAAD96g09022UwEG-GyVftzkm-n2JuL1hmvL5HLyghXliIgJ_N014EBqBFfWjmdA&a=CfDJ8AAAAAAAAAAAAAAAAAAAAAALoq9IuMBZKozhzH3jRaHpyFE1wtXzQK3T_0RNuX9LsSVxPITWgU9ZR21jXLk3YGjt
。
當客戶在他們的電子郵件中點擊url鏈接時,它會去我的客戶端應用程序的(.Net Core 1.1)控制器解密url字符串以彈出協議頁面。
例:
public EmailController(IDataProtectionProvider provider)
{
_protector = provider.CreateProtector("myProtector");
}
public IActionResult Agreement(string n, string a)
{
var decryptName = _protector.Unprotect(n);
var decryptAddress = _protector.Unprotect(a);
}
但是,我得到一個以下錯誤消息,當我試圖取消保護他們:
System.Security.Cryptography.CryptographicException:「關鍵{00000000-0000 -0000-0000-000000000000}在密鑰環中找不到。'
當我搜索答案時,我意識到我可以配置Data Protection將密鑰存儲到Azure Blob存儲。這link演示瞭如何將密鑰持久存儲到azure blob存儲中。
問題:
- 什麼是最好的辦法不是將其存儲一鍵蔚藍Blob存儲等?
- 如果我在正確的軌道上,我該如何存儲它?
- 如何爲webjob項目配置相同的設置,如鏈接中沒有Startup.cs的配置所示?
非常感謝您的幫助。
太棒了!謝謝阿莫爾,我會給它一個機會 – pavilion