ローカル データベースから機密データを保存および取得する必要があります。このデータは 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 を実行すると、これが変更されたように見えるのはなぜですか?