Cookies de Autenticación con Windows Identity Foundation en Windows Azure


Al deployar en azure en multiples instancancias; obtenemos el siguiente error aleatoriamente:
[InvalidOperationException: ID1073: A CryptographicException occurred when attempting to decrypt the cookie using the ProtectedData API (see inner exception for details). If you are using IIS 7.5, this could be due to the loadUserProfile setting on the Application Pool being set to false. ]

El problema ocurre porque las cookies se encriptan con DPAPI.
Windows Azure no puede desencriptar la cookie basada en DPAPI generada en una instancia en otra. El problema aparece cuando hay multiples instancias. Para solucionar el problema debemos cambiar el algoritmo de encriptación. Activaremos el algoritmo RsaEncryptionCookieTransform.

A continuación se detallan los pasos a seguir:

  • Añadir default.aspx del Site
void OnServiceConfigurationCreated(object sender, ServiceConfigurationCreatedEventArgs e)
 {List<CookieTransform> sessionTransforms =
 new List<CookieTransform>(new CookieTransform[] {
 new DeflateCookieTransform(),
 new RsaEncryptionCookieTransform(e.ServiceConfiguration.ServiceCertificate),
 new RsaSignatureCookieTransform(e.ServiceConfiguration.ServiceCertificate) });
 SessionSecurityTokenHandler sessionHandler = new SessionSecurityTokenHandler(sessionTransforms.AsReadOnly());
 e.ServiceConfiguration.SecurityTokenHandlers.AddOrReplace(sessionHandler);
 }
 protected virtual void Application_Start()
 {
 FederatedAuthentication.ServiceConfigurationCreated += OnServiceConfigurationCreated;
 }

  • Añadir el certificado que se usara para encriptar que puede ser el mismo del Site.
     <microsoft.identityModel>
     <service>
     ...
     <strong><serviceCertificate>
     <certificateReference storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectDistinguishedName" findValue="CN=dominio.cloudapp.net" />
     </serviceCertificate></strong>
     ...
     </service>
     </microsoft.identityModel>

     

Anuncios
Esta entrada fue publicada en Azure, Desarrollo, Seguridad y etiquetada , . Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s