我需要存儲和檢索本地數據庫中的敏感數據 - 此數據由Web應用程序使用。IIS應用程序上的ProtectedData.Unprotect - 在IISRESET後無法工作
爲了保護上述數據,我選擇使用ProtectedData
類。
IIS應用程序正在使用特定AD用戶(高級設置中的標識屬性)運行。直到我做一個IISRESET
一切正常 - 在這一點上,似乎表明了身份改變爲ProtectedData
類的目的,我留下了我的數據無法解密 - 我得到一個Key not valid for use in specified state
例外。
下面是我使用的代碼:
static public string Encrypt(string data)
{
var encryptedData = ProtectedData.Protect(System.Text.Encoding.UTF8.GetBytes(data), entropy, DataProtectionScope.CurrentUser);
return Convert.ToBase64String(encryptedData);
}
static public string Decrypt(string base64string)
{
var encryptedData = Convert.FromBase64String(base64string);
return System.Text.Encoding.UTF8.GetString(ProtectedData.Unprotect(encryptedData, entropy, DataProtectionScope.CurrentUser));
}
的entropy
是我的應用程序顯然是靜態的。
發生了什麼事?顧名思義,我認爲DataProtectionScope.CurrentUser
將使用當前用戶 - 據我所知,這應該是應用程序池標識。爲什麼我在執行IISRESET時看起來會發生變化?
你曾經以任何方式解決這個問題嗎? – Julien
可悲的是,沒有。如上所述,我確實使用了AES。另一方面,這是一個更好的解決方案,因爲可能會使用未來的負載平衡,在這種情況下,多個Web應用程序將無法訪問受DPAPI保護的共享數據。 – Shaamaan
@Julien我想我找到了真正的原因 - 檢查編輯的答案。 ;) – Shaamaan