Sitecore
Sitecore – Cómo solucionar que el intento de inicio de sesión provoque un fallo de la aplicación al utilizar el AD Module 1.3
Ayer tuve que instalar el módulo de Active Directory en una instancia de Sitecore 8.2 siguiendo la documentación oficial y la Best way to setup Active Directory Module in a Sitecore Solution de mi colega y Sitecore MVP Rodrigo Peplau.
La instalación fue bastante directa: después de descargar el módulo fui a Sitecore desktop, hice clic en Sitecore, Development Tools, Installation Wizard, subí el paquete y el Installation Wizard me guió a través del proceso de instalación.
Una vez instalado el paquete, debes modificar los siguientes archivos de configuración
- App_Config\ConnectionStrings.config
- App_Config\Security\domains.config
- Web.config file
No recomendaría modificar el archivo web.config de inmediato, ya que de acuerdo con Rodrigo Peplau puede ser problemático por varias razones:
- Es fácil perder la pista de tus personalizaciones;
- Actualizar Sitecore a una versión más nueva puede volverse más difícil;
- Durante el desarrollo podrías verte obligado a desactivar tu módulo LDAP, básicamente deshaciendo la configuración de tu proveedor, lo cual no es sencillo
Y siguiendo su consejo, todo fue suave y como se esperaba, pude ver la lista de usuarios poblada desde Active Directory.

¡ASOMBROSO! Vamos a verificar si puedo iniciar sesión con mi usuario y contraseña de Active Directory

Girando, girando… y aparece una Yellow Screen of Death

Exception: System.ArgumentException
Message: The provider user key supplied is invalid. It must be of type System.Guid.
Parameter name: providerUserKey
Source: System.Web
at System.Web.Security.SqlMembershipProvider.GetUser(Object providerUserKey, Boolean userIsOnline)
at Sitecore.Security.SwitchingMembershipProvider.GetUser(Object providerUserKey, Boolean userIsOnline)
at Sitecore.Data.DataProviders.NullRetryer.Execute[T](Func`1 action, Action recover)
at Sitecore.Security.SitecoreMembershipProvider.GetUser(Object providerUserKey, Boolean userIsOnline)
at Sitecore.Security.Authentication.AuthenticationHelper.ParseUserName(String userName)
at Sitecore.Security.Authentication.DefaultAuthenticationManager.GetUserName(String rawUserName)
at Sitecore.Security.Authentication.DefaultAuthenticationManager.Login(String userName, String password, Boolean persistent)
at Sitecore.sitecore.login.Default.Login()
at Sitecore.sitecore.login.Default.LoginClicked(Object sender, EventArgs e)
at System.Web.UI.WebControls.Button.OnClick(EventArgs e)
at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
at System.Web.UI.Page.d__523.MoveNext()
Afortunadamente encontré un artículo de Sitecore que me guió a través de la solución, ya que parece que el problema ya es conocido.
Solución al problema
1. Lo primero que hay que hacer es hacer una copia de seguridad de la carpeta bin y del archivo que contiene la sección
Ten en cuenta que la sección por defecto está en Web.config, pero si seguiste las consejos de Rodrigo Peplau tu sección de membership estará en un archivo separado, así que realiza la copia de seguridad de acuerdo a tu escenario.
2. Descarga y extrae el Sitecore.Support.139945-1.3.0.0.zip

3. Copia el DLL llamado Sitecore.Support.139945.dll en la carpeta bin y sobrescribe los archivos existentes si hay conflictos

4. Abre el archivo de configuración que contiene la sección , que en mi caso está ubicado en App_Config\AD\Membership.config

5. Busca la sección , y localiza
<add name=”switcher” type=”Sitecore.Security.SwitchingMembershipProvider, **Sitecore.Kernel**” applicationName=”sitecore” mappings=”switchingProviders/membership” />

6. Reemplaza la línea anterior con
<add name=”switcher” type=”Sitecore.**Support**.Security.SwitchingMembershipProvider, **Sitecore.Support.139945**” applicationName=”sitecore” mappings=”switchingProviders/membership” />

7. Ahora, guarda el archivo
8. Accede a la página de inicio de sesión de Sitecore y usa tus credenciales de Active Directory

9. ¡Voilá! YSoD se fue, y estoy iniciando sesión con mi credencial de Active Directory

¡Espero que les haya gustado, y gracias por leer!
Nos vemos en mi próxima publicación.