SessionSecurityTokenHandler versucht, SessionSecurityToken in RSA-verschlüsseltem Cookie mithilfe von DPAPI zu entschlüsseln; Warum?

7

Ich habe in den MSDN-Foren, im Blog von Dominic Baier und in anderen Quellen gelesen, dass DPAPI in Azure nicht out-of-the-box funktioniert und dass ein Ansatz zur Behandlung der föderierten Authentifizierung in jedem Webfarmszenario ersetzt werden muss Die DPAPI wird mit einer transformiert, die einen privaten Schlüssel verwendet, der in der Farm verfügbar ist, z. B. die RSA-Verschlüsselung mit einem X509-Zertifikat. Ich habe diesen Ansatz in meiner Azure MVC-Anwendung verwendet und die SessionSecurityTokenHandler folgendermaßen konfiguriert:

%Vor%

Mit dieser Konfiguration können wir Token von einem Identitätsanbieter erhalten und sichere Cookies ausstellen, die mit diesen Transformationen verschlüsselt wurden. Im Azure-Emulator läuft alles wie erwartet. In der Azure-Umgebung sehen wir jedoch zeitweilig den folgenden Fehler im Browser:

%Vor%

Dies deutet darauf hin, dass SessionSecurityTokenHandler versucht, den Cookie mithilfe von DPAPI zu entschlüsseln, aber warum? Habe ich es nicht für die Verwendung von RSA konfiguriert?

    
Ben Collins 15.10.2012, 21:13
quelle

2 Antworten

5

Nun, nach langem Suchen habe ich herausgefunden, was mein Problem war. Bevor ich ServiceConfigurationCreated eingerichtet habe, habe ich eine Konfiguration durchgeführt, die einen Zugriff auf FederatedAuthentication.ServiceConfiguration verursachte. Laut MSDN "Das ServiceConfigurationCreated-Ereignis wird ausgelöst, wenn der Das erste HTTP-Modul in der Webanwendung verweist auf "ServiceConfiguration". Ich habe das Event-Handler-Setup an den Anfang von Application_Start verschoben und alles hat so funktioniert wie es sollte, was bedeutet, dass das Event - das nur einmal ausgelöst wird - ausgelöst wurde, bevor ich den Event-Handler eingerichtet hatte.

Hoffentlich rettet das jemanden die 4+ Stunden, die ich gebraucht habe, um dies zu Boden zu bringen.

    
Ben Collins 16.10.2012, 00:21
quelle
13

Beachten Sie, dass Sie jetzt das MachineKeySessionSecurityTokenHandler um Sitzungstokens über Webfarmen zu signieren und zu verschlüsseln.

Um dies zu verwenden, müssen Sie den Standard SessionSecurityTokenHandler entfernen und den MachineKeySessionSecurityTokenHandler in Web.config hinzufügen:

%Vor%

Der MachineKeySessionSecurityTokenHandler verwendet den in Web.config konfigurierten Maschinenschlüssel, daher müssen Sie diesen ebenfalls hinzufügen:

%Vor%

Siehe diese Frage auf BrainThud

    
Kevin Aenmey 20.05.2013 15:52
quelle