ローカル データベースから機密データを保存および取得する必要があります。このデータは Web アプリケーションによって使用されます。
上記のデータを保護するために、ProtectedData
クラスを利用することにしました。
IIS アプリケーションは、特定の AD ユーザー (詳細設定の ID プロパティ) を使用して実行されています。
IISRESET を実行するまで、すべて正常に動作します。この時点で、ID がクラスの目的で変更されたようで、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
名前が示すように、現在のユーザーを使用するという印象を受けました。これは、私の知る限り、アプリケーション プール ID である必要があります。IISRESET を実行すると、これが変更されたように見えるのはなぜですか?