extraño error con WIF RTM, se produce después de restablecer IIS
-
22-09-2019 - |
Pregunta
Estoy recibiendo mi aplicación web en el servidor Windows 2008 con IIS 7.5, Tengo 2 aplicaciones web: 1. El primero es el núcleo de servicio SSO (Single Sign-on) con una página de inicio de sesión. 2. otra aplicación Web se encuentra en el mismo servidor web que utilizan la primera aplicación para SSO.
Estoy utilizando el WIF RTM a la aplicación SSO,
Por lo general, se está ejecutando bien sin ningún problema, el usuario puede iniciar sesión tirar el SSO y redirigir hacia atrás la página de inicio. pero cuando me conecto tiro la primera sso, a continuación, reinicie el IIS, si vuelvo a la segunda aplicación y actualizar la página, tengo el siguiente error:
Error de servidor en aplicación '/'. Clave no válida para su uso en estado. Descripción: Una no controlada excepción ocurrió durante el la ejecución de la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.
Detalles de la excepción: System.Security.Cryptography.CryptographicException: Clave no válida para su uso en especificada estado.
Fuente de error: Excepción no controlada se generó durante la ejecución de la solicitud Web actual. Información sobre el origen y la ubicación de la excepción pueden identificarse utilizando el seguimiento de pila excepción a continuación.
Seguimiento de la pila:
[CryptographicException: Clave no válida para su uso en el estado especificado. ]
System.Security.Cryptography.ProtectedData.Unprotect (byte [] encryptedData, Byte [] optionalEntropy, DataProtectionScope alcance) 425
Microsoft.IdentityModel.Web.ProtectedDataCookieTransform.Decode (byte [] codificada) 59[InvalidOperationException: ID1073: A CryptographicException ocurrió cuando intentar descifrar la cookie utilizando la API ProtectedData (ver interior excepción para más detalles). Si usted es usando IIS 7.5, esto podría ser debido a el ajuste en el LoadUserProfile Grupo de aplicaciones que se establece en false. ] Microsoft.IdentityModel.Web.ProtectedDataCookieTransform.Decode (byte [] codificada) 151
Microsoft.IdentityModel.Tokens.SessionSecurityTokenHandler.ApplyTransforms (byte [] galletas, salientes de Boole) 109
Microsoft.IdentityModel.Tokens.SessionSecurityTokenHandler.ReadToken (XmlReader lector, SecurityTokenResolver tokenResolver) 634
Microsoft.IdentityModel.Tokens.SessionSecurityTokenHandler.ReadToken (byte [] razón, SecurityTokenResolver tokenResolver) 105
Microsoft.IdentityModel.Web.SessionAuthenticationModule.ReadSessionTokenFromCookie (byte [] SessionCookie) 239
Microsoft.IdentityModel.Web.SessionAuthenticationModule.TryReadSessionTokenFromCookie (SessionSecurityToken y sessionToken) 59
Microsoft.IdentityModel.Web.SessionAuthenticationModule.OnAuthenticateRequest (Object remitente, EventArgs eventArgs) 52
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () 68 System.Web.HttpApplication.ExecuteStep (IExecutionStep paso, Boolean y completedSynchronously) 75________________________________________ Información de la versión: Microsoft .NET Versión del Marco: 2.0.50727.4927; ASP.NET Versión: 2.0.50727.4927
la sesión del usuario se almacenan utilizando el modo de sesión de SQL Server, estoy usando una base de datos especial para esto.
He intentado mucho y no puedo volver a procedimiento de este problema en mi equipo local (Windows 7). ¿alguien tiene experiencia similar? ¿Me puede decir cómo resolver este problema?
Solución
Esto podría deberse a que el grupo de aplicaciones de usuario no tiene perfil de usuario persistente. Para corregir esta situación sólo se puede ejecutar algo como ese usuario:
runas /user:<domain>\<user> cmd
Y esto va a crear el perfil. Posteriormente los datos se deben descodificarse después de reiniciar IIS.
Otros consejos
Finalmente resolver este problema por el cambio el usuario del grupo de aplicaciones a un usuario local. El problema es causado probablemente por el SSO está alojado en un sistema operativo de 64 bits, este problema no existe si el anfitrión de la SSO en un equipo de 32 bits (aunque yo uso un usuario de dominio para el grupo de aplicaciones).
Ahora uso ApplicationPoolIdentity o servicio de red, a excepción desaparecieron después de que reinicie IIS.
Gracias a todos ustedes y estoy muy contento de compartir mi solución con usted.
Parece que hay algún tipo de problema de seguridad cuando tiene varias aplicaciones que comparten el mismo dominio en Windows Server 2008 con IIS 7.5
Si usted tiene URLs http://ourdomain.com/app1
y http://ourdomain.com/app2
puede iniciar sesión en una aplicación con WIF pero cuando se accede a la otra aplicación que obtener este error. Esto se debe a que la cookie es para el dominio pero si Está creados por app1 continuación app2 no pueden acceder a él.
Así que la solución es o hacer como Aaron y el uso de un usuario específico que tiene los derechos de acceso, o como lo hicimos, separar las aplicaciones en dos dominios diferentes, es decir, http://app1domain.com/
y http://app2domain.com/
.