Frage

Ich meine Web-Anwendung 7.5 auf Windows Server 2008 mit IIS-Hosting, Ich habe 2 Web-Anwendungen: 1. Die erste ist der Kern sso (Single Sign-on) Service mit einer Login-Seite. 2. ein andere Web-Anwendung wird auf dem Web-Server gehostet, der die erste App für sso verwenden.

Ich bin die WIF RTM Implementierung mit der sso,

in der Regel, es läuft gut ohne Probleme, kann der Benutzer anmelden, um den sso werfen und die Startseite umleiten zurück. aber wenn ich die sso ersten Wurf mit, dann die IIS neu zu starten, wenn ich wieder in die zweite Anwendung kommen und aktualisieren Sie die Seite, bekam ich folgende Fehlermeldung:

  

Serverfehler in der Anwendung '/'.   Schlüssel ist nicht gültig für den Einsatz in bestimmten Zustand.   Beschreibung: Eine nicht behandelte   Ausnahme trat während der   Ausführung der aktuellen Webanforderung.   Überprüfen Sie die Stapelüberwachung, um weitere   Informationen über den Fehler und wo   es entsteht im Code.

     

Ausnahmedetails:   System.Security.Cryptography.CryptographicException:   Schlüssel ist nicht gültig für die Verwendung in bestimmten   Zustand.

     

Quellfehler: Eine nicht behandelte Ausnahme   während der Ausführung des erzeugten wurde   die aktuelle Web-Anfrage. Information   über den Ursprung und die Position von   die Ausnahme kann mit identifiziere   die Ausnahme-Stack-Trace.

     

Stack-Trace:

     

[Cryptographic: Key nicht gültig   für den Einsatz in bestimmten Zustand. ]
  System.Security.Cryptography.ProtectedData.Unprotect (Byte []   EncryptedData, Byte [] optionalEntropy,   DataProtectionScope scope) +425
  Microsoft.IdentityModel.Web.ProtectedDataCookieTransform.Decode (Byte []   codiert) +59

     

[InvalidOperationException: ID1073: A   Cryptographic trat auf, wenn   Versuch, das Cookie zu entschlüsseln unter Verwendung von   die ProtectedData API (siehe Innen   Ausnahme für weitere Details). Wenn du bist   mit IIS 7.5, könnte dies darauf zurückzuführen sein   die Loaduserprofile Einstellung auf die   Application Pool wird auf false gesetzt. ]   Microsoft.IdentityModel.Web.ProtectedDataCookieTransform.Decode (Byte []   codierten) +151
  Microsoft.IdentityModel.Tokens.SessionSecurityTokenHandler.ApplyTransforms (Byte []   Cookie, Boolean outbound) +109
  Microsoft.IdentityModel.Tokens.SessionSecurityTokenHandler.ReadToken (XmlReader   Leser, SecurityTokenResolver   tokenResolver) 634
  Microsoft.IdentityModel.Tokens.SessionSecurityTokenHandler.ReadToken (Byte []   Token, SecurityTokenResolver   tokenResolver) +105
  Microsoft.IdentityModel.Web.SessionAuthenticationModule.ReadSessionTokenFromCookie (Byte []   Sessioncookie) +239
  Microsoft.IdentityModel.Web.SessionAuthenticationModule.TryReadSessionTokenFromCookie (SessionSecurityToken &   session) +59
  Microsoft.IdentityModel.Web.SessionAuthenticationModule.OnAuthenticateRequest (Object   sender, EventArgs EventArgs) +52
  System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute ()   +68 System.Web.HttpApplication.ExecuteStep (IExecutionStep   Schritt, Boolean & completedSynchronously)   +75

     

________________________________________ Versionsinformationen: Microsoft .NET   Framework Version: 2.0.50727.4927;   ASP.NET Version: 2.0.50727.4927

die Benutzersitzung gespeichert wird von SQLServer Session-Modus, ich bin eine spezielle Datenbank für diese verwendet wird.

Ich habe viel versucht, und ich kann nicht wieder Prozedur dieses Problem auf meinem lokalen Rechner (Windows7). hat jemand ähnliche Erfahrung? können Sie mir sagen, wie dieses Problem zu lösen?

War es hilfreich?

Lösung

Das könnte gut sein, weil Ihre Anwendung Pool-Benutzer kein persistentes Benutzerprofil haben. Um dies zu beheben können Sie nur etwas, als dieser Benutzer ausführen:

runas /user:<domain>\<user> cmd

Und das wird das Profil erstellen. Anschließend sollte die Daten werden entschlüsselt, nachdem IIS neu zu starten.

Andere Tipps

Ich löse dieses Problem endlich durch eine Änderung des Anwendungspool Benutzer an einem lokalen Benutzer. das Problem wahrscheinlich durch die sso verursacht wird, auf einem 64-Bit-OS gehostet wird, existiert dieses Problem nicht auf, wenn ich die sso auf einem 32-Bit-Host-Computer (auch ich einen Domain-Benutzer für den Anwendungspool verwenden).

Jetzt benutze ich Application oder Netzwerk-Service, die Ausnahme verschwunden, nachdem ich IIS neu starten.

Danke euch allen, und ich bin so froh, mit Ihnen meine Lösung zu teilen.

Es scheint eine gewisse Art von Sicherheitsproblem zu sein, wenn Sie mehrere Anwendungen haben die gleiche Domäne auf Windows Server 2008 mit IIS 7.5

Austausch

Wenn Sie Urls http://ourdomain.com/app1 und http://ourdomain.com/app2 haben Sie in auf einer App mit WIF anmelden können, aber wenn Sie die andere App Zugriff erhalten Sie diesen Fehler. Dies liegt daran, das Cookie für die Domäne ist, aber wenn Es ist von app1 erstellt dann app2 nicht darauf zugreifen kann.

So ist die Lösung entweder als Aaron zu tun und einen bestimmten Benutzer verwenden, die Zugriffsrechte hat oder wie wir, trennen Sie die Anwendungen auf zwei verschiedenen Domänen, dh http://app1domain.com/ und http://app2domain.com/.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top