2011-08-10 10 views
5

Esto es, literalmente, conducirme plátanos - Estoy de vacaciones a partir de mañana, pero si no puedo hacerlo funcionar hoy, entonces está bajo amenaza, por lo que cualquier ayuda muy apreciada.Autenticación de formularios 4.0 en Web Farm

En primer lugar, mi sitio web tiene un elemento <machinekey /> definido manualmente para que los dos servidores web de la comunidad web se mantengan sincronizados. Lo he verificado con el administrador de IIS (de ahí que pregunte, a pesar de la similitud con tantas otras preguntas). Parece que esto (las teclas elididas - pero son la longitud correcta):

<machineKey validationKey="[512 bit hex]" 
    decryptionKey="[256-bit hex]" 
    validation="SHA1" 
    decryption="AES" /> 

El sitio web está funcionando Asp.Net MVC3 y estoy usando la autenticación de formularios en modo 'normal' (es decir, no el modo compat 2.0). Estoy utilizando la autenticación de formularios para crear un vale de autenticación - utilizando código como el siguiente:

FormsAuthentication.SetAuthCookie(userName, false); 

Mis Formas de autenticación de configuración es muy simple; no hay ninguna configuración de IIS o de todo el servidor en el lugar que anulan los valores predeterminados documentados:

<authentication mode="Forms"> 
    <forms defaultUrl="~/Unauthorised" 
    loginUrl="~/Unauthorised" 
    ticketCompatibilityMode="Framework40" /> 
</authentication> 

Y entonces me han secuestrado la funcionalidad de cookies de lectura as per this MSDN topic para que pueda crear el principal y la identidad que quiero.

El problema es - sólo la mitad de la granja de servidores web es capaz de descifrar la cookie de autenticación, la otra mitad (es decir, lo que uno no autenticar al usuario) solo da:

System.Security.Cryptography.CryptographicException: Length of the data to decrypt is invalid.

Con esta como la parte superior de la traza de la pila:

[CryptographicException: Length of the data to decrypt is invalid.] 
System.Security.Cryptography.RijndaelManagedTransform.TransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount) +12521039 
System.Security.Cryptography.CryptoStream.FlushFinalBlock() +53 
System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(Boolean fEncrypt, Byte[] buf, Byte[] modifier, Int32 start, Int32 length, Boolean useValidationSymAlgo, Boolean useLegacyMode, IVType ivType) +331 
System.Web.Security.FormsAuthentication.Decrypt(String encryptedTicket) +293 

Estamos utilizando un poco antigua (pero muy fiable) del equilibrador de carga - el cual no modifica el tráfico HTTP - y TH El tráfico en este caso es HTTPs; Puedo verificar que siempre haya un servidor y no ambos utilizando Fiddler para descifrar e inspeccionar el tráfico.

Esto indica claramente que no está sincronizado machineKey s, pero no lo están, ¿qué idea tienes de lo que está pasando?

¡Gracias de antemano!

+1

¿Revisó sus parches? http://blog.evonet.com.au/post/SystemSecurityCryptographyCryptographicException-Length-of-the-data-to-decrypt-is-invalid.aspx –

+0

@ Surfer513 - presentar una respuesta; Todavía no estoy seguro, pero hablar con uno de los miembros del equipo de soporte podría ser la causa ... –

Respuesta

5

Cuando diferentes servidores tienen diferentes parches, que tiene el potencial de alterar el comportamiento de cifrado (/ descifrado), por lo tanto, lo que puede causar esta excepción en tiempo de ejecución:

System.Security.Cryptography.CryptographicException: Length of the data to decrypt is invalid. 

más información sobre este tema se puede encontrar aquí: http://blog.evonet.com.au/post/SystemSecurityCryptographyCryptographicException-Length-of-the-data-to-decrypt-is-invalid.aspx

+0

@ Surfer512 - Hubo tantas actualizaciones que una de las máquinas tuvo que hacerse de la noche a la mañana (digamos que tenía diez veces más necesario que en el otro ...) - así que podré actualizar entonces. ¡Aclamaciones! –

+0

El enlace en la respuesta está muerto - * "Este sitio no puede ser alcanzado/la dirección DNS del servidor de blog.evonet.com.au no se pudo encontrar" * – Pang

Cuestiones relacionadas