Si alguien tiene una historia similar, por favor publique los detalles a continuación!¿Por qué la autentificación contra LDAP con DirectoryEntry arroja intermitentemente COMException (0x8007203A): "El servidor no está operativo"?
Estoy construyendo un sitio web ASP.NET que necesita admitir autenticación contra LDAP.
En Windows, la autenticación LDAP se puede realizar a través de Active Directory (no soy un experto, pero AD parece ser simplemente un sabor particular de ldap). No controlo los servidores AD y/o LDAP.
He intentado varios métodos de autenticación, pero me he decidido por el uso de una sola DirectoryEntry
por intento de autenticación:
using (DirectoryEntry de = new DirectoryEntry(ldapPath, ldapUsername, password, AuthenticationTypes.ServerBind)) {
try {
// Bind to the native AdsObject to force authentication.
object obj = de.NativeObject;//not IDisposable
} catch(...
Recuperando el NativeObject provoca una COMException
si algo va mal en absoluto, por ejemplo si el Error de autenticación, la excepción es algo así como "Error de inicio de sesión: nombre de usuario desconocido o contraseña incorrecta", y si el servidor ldap no está disponible o se agota el tiempo de espera, algo así como "El servidor no está operativo".
Esto funciona, básicamente, pero después de un número variable de días, siempre comenzando a primera hora de la mañana, obtenemos "El servidor no está operativo". hasta que se reinicie IIS. Evidentemente, esta no es una gran solución a largo plazo, pero, por lo que puedo ver, la falla radica en el Com Object subyacente a DirectoryEntry, que no es algo fácil de corregir.
Thisproblemisn'tneworunknown. Algunas personas han pasado por el soporte de Microsoft con resultados mixtos; Básicamente, las respuestas parecen reducirse a "tomar su ruta ldap y crear algunas alternativas equivalentes y tal vez una de ellas funcione". Cada vez que intentes, o por supuesto, no sabrás por unos días si realmente funcionó, y hasta que se encuentre una solución real, volvemos a "reiniciar los servidores de Windows todas las noches".
Como punto de partida, he tratado de caminos LDAP en el formato
* "LDAP://server.uri:636"
* "LDAP://insecure.server.uri:389"
* "LDAP://server.uri:636/cn=username,ou=staff,o=myOrganisation,c=org"
Siempre con un nombre de usuario con el siguiente patrón:
* "cn=username,ou=staff,o=myOrganisation,c=org"
Todos estos métodos funcionan al principio, pero después de fallar un número variable de días (y comenzar a trabajar después de un reinicio de IIS). El servidor ejecuta IIS6 en win 2k3.
Si alguien más tiene estos problemas, publique a continuación, y tal vez eventualmente encontremos un patrón para trabajar con o tenga suficientes ejemplos para convencer a Microsoft de que corrija esto.
Es posible que este error está relacionado con ganar opciones de agrupamiento de 2k3 - hemos migrado a un sistema de servidor único no agrupado, y los últimos días han estado libres de problemas. –
¿Qué estaba agrupado? ¿El servidor que ejecuta su aplicación o el servidor que ejecuta AD? –
El servidor que ejecuta la aplicación. El servidor LDAP era en realidad una máquina que no era Windows que funcionaba en algún lugar externo: no estoy seguro de su configuración. Además, los problemas parecen ocurrir incluso para las "conexiones" UDP construidas manualmente, lo que sugiere que esto es algo de bajo nivel. –