2015-11-13 7 views
20

Używam MachineKey API do szyfrowania/odszyfrowywania informacji w aplikacji ASP.NET. UżywamKlucz komputera zmienia się, gdy pula aplikacji jest ponownie przetwarzana.

MachineKey.Encode(data, MachineKeyProtection.All)

i

MachineKey.Decode(data, MachineKeyProtection.All)

metod API. Wszystko działa wspaniale w systemach Windows 8 i Windows Server 2012, gdy włączony jest Load User Profile. Problem z jakiegoś powodu nie przetrwał restartu puli aplikacji na Windows Server 2008 R2 with IIS 7.5.

Początkowo miałem wrażenie, że będę musiał włączyć załadować profilu użytkownika ustawienie na Application Pool ale to nie robi żadnej różnicy. Masz pomysł, czego tu brakuje?

Dzięki

Odpowiedz

12

To może być to, że nowy klucz maszyna jest generowany przez IIS każdorazowo Application Pool zasypki. Spróbuj ustawić statyczny klucz komputera w pliku web.config, jak opisano tutaj: IIS 7 Tip #10 You can generate machine keys from the IIS manager. Bez jawnego ustawienia statycznego klucza komputera klucz szyfrowania/odszyfrowywania jest ruchomym celem.

+1

W rzeczywistości pomysł użycia MachineKey API polegał na zastąpieniu DPAPI i bez martwienia się ręcznym ustawianiem klucza maszyny. Statyczny klucz maszynowy działa, ale nie jest to opcja, ponieważ interfejs API powinien działać bez niego, zapewniając unikalny klucz na ustawienia IIS. – Leadfoot

4

@pstricker ma rację, jeśli nie zdefiniowano klucza komputera, to przy uruchamianiu puli aplikacji generowany jest nowy klucz. Interfejs API MachineKey jest oparty na kluczu komputera, więc musi być gdzieś ustawiony. Jeśli nie chcesz ustawiać przycisku MachineKey w konfiguracji sieciowej aplikacji, nadal możesz to zrobić w konfiguracji komputera serwera, tutaj: "C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ config \ machine.config "

Ponadto, jeśli chcesz mieć klucz komputera w puli aplikacji, możesz zrobić to, co opisano: here.

Powiązane problemy