Estoy intentando usar la biblioteca publicada por Novell (Novell.Directory.Ldap). Versión 2.1.10.Novell LDAP C# - Novell.Directory.Ldap - ¿Alguien ha hecho que funcione?
Lo que he hecho hasta ahora:
He probado el marco de una solicitud (LdapBrowser) y está funcionando, así que no es un problema de comunicación.
Está compilado en Mono, pero estoy trabajando con Visual Studio. Entonces creó un proyecto con las fuentes. También incluí una referencia a Mono.Security, porque el proyecto dependía de ello.
Comenté una llamada (freeWriteSemaphore (semId);) en la parte de error de la conexión, porque arrojaba más excepciones. Comprobé qué hizo esa llamada, y es solo un mecanismo de rastreo de errores.
Seguí los pasos básicos proporcionados en la documentación de Novell (http://www.novell.com/coolsolutions/feature/11204.html).
// Creación de una instancia LdapConnection
LdapConnection ldapConn = new LdapConnection(); ldapConn.SecureSocketLayer = ldapPort == 636;
función// Conectar creará una conexión de socket al servidor
ldapConn.Connect (ldaphost, LDAPPort);
// función de enlace se unirán las credenciales de objeto de usuario al servidor de
ldapConn.Bind (DN de usuario, userPasswd);
En este momento está fallando en la función Bind(). Obtengo el error 91.
¿Alguna vez alguien ha utilizado esta biblioteca y la ha visto funcionar? Si es así, ¿qué hiciste para que funcione? ¿Se necesita alguna configuración especial? ¿Hay alguna manera de hacerlo funcionar en el entorno .NET sin Mono (puedo tener referencias a dlls de Mono, pero no quiero que esté instalado en el servidor)?
(ACTUALIZACIÓN) La conexión está en el puerto 636, utilizando SSL. Comprobé con WireShark la comunicación y la comparé con lo que obtengo del navegador LDAP. He visto que el paso donde se comunica el certificado SSL no lo realiza la biblioteca LDAP. Entonces, ¿cuál es la mejor manera de hacer que haga lo que se supone que debe hacer?
(ACTUALIZACIÓN) Revisé la documentación y indica que no es compatible con SSL. http://www.novell.com/coolsolutions/feature/11204.html
autenticarse en el servidor LDAP con LdapConnection.Bind(). Solo admitimos la autenticación de texto sin formato . Aún no se ha agregado el soporte SSL/TLS .
Pero la documentación data de 2004, y desde entonces, se han realizado muchas actualizaciones. Y hay un parámetro en la biblioteca para definir si la conexión usa SSL. Así que ahora estoy confundido.
(ACTUALIZACIÓN) Se encontró una documentación más actualizada: http://developer.novell.com/documentation//ldapcsharp/index.html?page=/documentation//ldapcsharp/cnet/data/bqwa5p0.html. La forma en que se realiza la conexión SSL es registrando el certificado en el servidor. El problema es que lo que estoy haciendo no está vinculado a un servidor Novell específico, por lo que el certificado debe obtenerse dinámicamente.
La forma habitual de obtener SSL funciona es obtener la clave pública de CA de firma en el equivalente del almacén de claves de Java (normalmente una CA de árbol). No obstante, lo que eso significa en C#. Una vez que lo tenga, todos los certificados de servidor firmados por ese árbol CA funcionarán. Entonces necesitarías uno por árbol. – geoffc