2

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

4

2 に答える 2

0

ASP.NET Core Data Protection API を使用しているときに正確なエラーが発生しました。このエラーが発生した場合は、アプリケーション プール ユーザーに対して LoadUserProfile が有効になっていることを確認してください。

于 2016-09-06T09:52:39.010 に答える