ssl - No se puede activar SecureSocketLayer con DirectoryServices.Protocols.LdapConnection
(1)
Resulta que la forma en que DirectoryServices.Protocols implementa sus llamadas LDAP es pasándolas a una API LDAP de bajo nivel. Esta API LDAP es lo que se consulta cuando se realiza una obtención en la propiedad.
La API de bajo nivel solo se actualiza cuando se ejecutan los métodos. Puede pensar en esto como si estuviera construyendo argumentos de línea de comandos para un ejecutable que aún no se ha iniciado.
Cuando se realiza una llamada como Bind (), se inicia el ejecutable y las propiedades informarán el valor correcto.
Entonces, solo porque la propiedad decía que el valor era falso, usaba el verdadero cuando era necesario.
Intento solucionar un error con SSL en un producto y me di cuenta de que, aunque el código establece SSL como verdadero, en la siguiente línea del código, SSL sigue siendo falso. Escribí una prueba unitaria para esto y la prueba unitaria confirma mis sospechas.
[TestMethod]
public void SecureSocketLayerSetToTrue( )
{
var ldapConnection = new LdapConnection(
new LdapDirectoryIdentifier( "ldap.test.com", 636 ));
ldapConnection.SessionOptions.SecureSocketLayer = true;
Assert.IsTrue( ldapConnection.SessionOptions.SecureSocketLayer );
}
La prueba falla. ¿Hay algo aquí que me falta?