Saltar al contenido

Funciones LDAP en Jitterbit Design Studio

LDAP (Protocolo Ligero de Acceso a Directorios) es un protocolo que permite buscar y actualizar un directorio. Es compatible con numerosos servidores de directorio como Microsoft Active Directory y Netscape Directory Server. Un directorio generalmente contiene información sobre usuarios y recursos de red, pero puede contener cualquier tipo de datos.

Estas funciones permiten que scripts y transformaciones se conecten a un directorio utilizando LDAP.

El patrón de uso sigue estos pasos:

  • LDAPConnect: Establece una conexión con el servidor
  • LDAPAdd, LDAPReplace, LDAPRemove,...: Encola acciones a realizar
  • LDAPExecute: Ejecuta la cola en el servidor

Para buscar, se puede seguir este patrón:

  • LDAPConnect: Establece una conexión con el servidor
  • LDAPSearch: Ejecuta la búsqueda en el servidor y devuelve el resultado

Establecer contraseñas LDAP programáticamente

A partir de la versión 9.9 de Harmony, las contraseñas LDAP se pueden establecer utilizando estas funciones LDAP. La contraseña debe convertirse primero a binario antes de poder ser establecida. (La contraseña puede requerir estar entre comillas dobles antes de la conversión a binario, ya que Active Directory requiere que los valores estén entre comillas dobles). Este fragmento de script muestra cómo se podría lograr:

LDAPConnect("<TAG>Project Name/Targets/LDAPTarget</TAG>");
$plain = '"J1tterb1t!@#"';
$pwd = StringToHex($plain);
$i=0;
$newPwd = "";
While($i < Length($pwd)/2,
    $newPwd = $newPwd + Mid($pwd, $i * 2, 2) + "00";
    $i = $i+1;
);
$newPwd = HexToBinary($newPwd);

LDAPReplace("unicodePwd", $newPwd);
LDAPExecute("CN=wright,CN=Users,DC=company,DC=example,DC=com");

ArrayToMultipleValues

Declaración

string ArrayToMultipleValues(array arr)

Sintaxis

ArrayToMultipleValues(<arr>)

Parámetros requeridos

  • arr: Un arreglo con valores que se utilizarán para poblar un atributo LDAP de múltiples valores

Descripción

Indica que se debe utilizar un arreglo para poblar un atributo LDAP de múltiples valores al mapear a un objetivo LDAP. El arreglo se convierte a XML e interpretado cuando se escribe en el servidor LDAP.

Ejemplos

// Create two LDAP attributes using an array
arr = Array();

// Length(arr) will always return the index of
// the next-after-last element of an array
arr[Length(arr)] = "First instance";
arr[Length(arr)] = "Second instance";

// The array will be converted to the string
// "<JB_Array><it>First instance</it><it>Second instance</it></JB_Array>"
result = ArrayToMultipleValues(arr);

LDAPAdd

Declaración

bool LDAPAdd(string ldapType, string ldapValue)

Sintaxis

LDAPAdd(<ldapType>, <ldapValue>)

Parámetros requeridos

  • ldapType: El tipo de registro o atributo LDAP
  • ldapValue: El valor que se añadirá para el tipo

Descripción

Para utilizar esta función, primero se debe usar la función LDAPConnect para establecer una conexión con el directorio LDAP.

Una vez establecida la conexión, se utiliza la función LDAPAdd() para agregar entradas y atributos al directorio LDAP conectado. El valor se añade al nodo especificado en la función LDAPExecute, que debe ser llamada inmediatamente después para que los cambios surtan efecto.

Ejemplos

// Adding a user entry to a directory:
LDAPAdd("objectClass", "user");
LDAPAdd("cn", "wright");
LDAPExecute("CN=wright,CN=Users,DC=company,DC=example,DC=com");

// Adding attributes to a user:
LDAPAdd("description", "Thinks a lot.");
LDAPExecute("CN=wright,CN=Users,DC=company,DC=example,DC=com");

LDAPConnect

Declaración

bool LDAPConnect(string ldapEndpointId)
bool LDAPConnect(string hostname, string user, string password[, int mode, long port])

Sintaxis

LDAPConnect(<ldapEndpointId>)
LDAPConnect(<hostname>, <user>, <password>[, <mode>, <port>])

Parámetros requeridos

  • ldapEndpointId: (Primera forma) Una fuente o destino LDAP en el proyecto actual
  • hostname: (Segunda forma) Nombre del host de un servidor LDAP al que conectarse; puede incluir un puerto, como directory.example.com:10389
  • user: (Segunda forma) Nombre de usuario para conectarse al host LDAP
  • password: (Segunda forma) Contraseña para usar para conectarse al host LDAP

Parámetros opcionales

  • mode: (Segunda forma) Modo de conexión; uno de:
    • 0: Conexión no segura; puerto predeterminado: 389
    • 1: Conexión segura; puerto predeterminado: 389
    • 2: Conexión segura utilizando LDAP sobre SSL; puerto predeterminado: 636
  • port: (Segunda forma) Puerto a utilizar para conectarse al host LDAP (-1 indica usar los puertos LDAP predeterminados)

Descripción

Se conecta a un directorio utilizando LDAP. El punto final de LDAP debe estar definido en el proyecto actual o especificado utilizando la segunda forma del comando. Consulte las instrucciones sobre inserción de elementos del proyecto.

Véase también la función LDAPExecute.

Consejo

Si está utilizando la segunda forma de este comando, utilice una variable de proyecto de Jitterbit para almacenar la contraseña de manera segura que no sea visible cuando se visualice el script.

Nota

Los puntos finales creados con esta función se incluyen en informes de uso de puntos finales y cuentan para su licencia.

Ejemplos

// Connects to an LDAP Target
connected = LDAPConnect("<TAG>Project Name/Targets/LDAPTarget</TAG>");

// Connects to an LDAP server using hostname:port, username, password, mode
connected = LDAPConnect("directory.company.example.com:10389", "admin", $adminpassword, 0);

LDAPDeleteEntry

Declaración

bool LDAPDeleteEntry(string distinguishedName)

Sintaxis

LDAPDeleteEntry(<distinguishedName>)

Parámetros requeridos

  • distinguishedName: Un nombre distinguido de LDAP que se eliminará del servidor actualmente conectado

Descripción

Para utilizar esta función, primero se debe usar la función LDAPConnect para establecer una conexión con el directorio LDAP.

Después de establecer una conexión, se utiliza la función LDAPDeleteEntry para eliminar una entrada especificada por un nombre distinguido.

Véase también las funciones LDAPConnect y LDAPExecute.

Ejemplos

LDAPDeleteEntry("CN=wright,CN=Users,DC=company,DC=example,DC=com");

LDAPExecute

Declaración

bool LDAPExecute(string distinguishedName)

Sintaxis

LDAPExecute(<distinguishedName>)

Parámetros requeridos

  • distinguishedName: Un nombre distinguido LDAP en el servidor actualmente conectado

Descripción

Para usar esta función, primero se debe utilizar la función LDAPConnect para establecer una conexión con el directorio LDAP.

Una vez establecida la conexión, se utiliza la función LDAPExecute() para ejecutar una o más modificaciones (agregar, eliminar, reemplazar) que se hayan especificado previamente con las funciones LDAPAdd, LDAPRemove o LDAPReplace.

Consulte también las funciones LDAPConnect y LDAPExecute.

Ejemplos

// Adding LDAP entries and executing them
LDAPAdd("description", "Thinks a lot.");
LDAPReplace("telephoneNumber", "(510) 555 1000");
LDAPExecute("CN=wright,CN=Users,DC=company,DC=example,DC=com");

LDAPRemove

Declaración

bool LDAPRemove(string ldapType, string ldapValue)

Sintaxis

LDAPRemove(<ldapType>, <ldapValue>)

Parámetros requeridos

  • ldapType: El tipo de atributo LDAP
  • ldapValue: El valor que se va a eliminar para el tipo de atributo especificado

Descripción

Para usar esta función, primero se debe utilizar la función LDAPConnect para establecer una conexión con el directorio LDAP.

Una vez establecida la conexión, se utiliza la función LDAPRemove para eliminar un atributo de un tipo especificado y con un valor especificado.

Si no se encuentra el tipo de atributo de ese valor, se genera un error. Consulte también las funciones LDAPConnect y LDAPExecute.

Ejemplos

// Removing an LDAP entry and executing it
LDAPRemove("telephoneNumber", "(510) 555-1000");
LDAPAdd("telephoneNumber", "(510) 555-2000");
LDAPExecute("CN=wright,CN=Users,DC=company,DC=example,DC=com");

LDAPRename

Declaración

bool LDAPRename(string distinguishedName, string newRDN[, string newParent, bool deleteOldRDN])

Sintaxis

LDAPRename(<distinguishedName>, <newRDN>[, <newParent>, <deleteOldRDN>])

Parámetros requeridos

  • distinguishedName: La ruta de la entrada del directorio (nombre distinguido) que se va a renombrar
  • newRDN: El nuevo nombre distinguido relativo

Parámetros opcionales

  • newParent: El nombre distinguido del nuevo padre de esta entrada; el valor predeterminado es vacío
  • deleteOldRDN: Si es true, el antiguo nombre distinguido relativo será eliminado; el valor predeterminado es false

Descripción

Para usar esta función, primero se debe utilizar la función LDAPConnect para establecer una conexión con el directorio LDAP.

Una vez establecida la conexión, se utiliza la función LDAPRename para cambiar el nombre distinguido de una entrada en el directorio conectado.

Consulte también las funciones LDAPConnect y LDAPExecute.

Ejemplos

LDAPRename("telephoneNumber", "telephoneNumberHome");
LDAPExecute("CN=wright,CN=Users,DC=company,DC=example,DC=com");

LDAPReplace

Declaración

bool LDAPReplace(string ldapType, string ldapValue)

Sintaxis

LDAPReplace(<ldapType>, <ldapValue>)

Parámetros requeridos

  • ldapType: El tipo de registro o atributo LDAP
  • ldapValue: El nuevo valor que se establecerá para el tipo

Descripción

Para usar esta función, primero se debe utilizar la función LDAPConnect para establecer una conexión con el directorio LDAP.

Una vez establecida la conexión, se utiliza la función LDAPReplace para reemplazar el valor de un atributo existente con un nuevo valor.

Consulte también las funciones LDAPConnect y LDAPExecute.

Nota

Si utiliza la función LDAPReplace() para reemplazar el valor de un atributo existente con un nuevo valor en un Active Directory, el texto puede convertirse en un resultado diferente al de la entrada. Por ejemplo, François devolvería FrançOis. Para obtener más información sobre cómo agregar soporte para UTF-8, consulte la entrada LDAP en Editar el archivo de configuración (jitterbit.conf).

Ejemplos

// Reemplazando una entrada LDAP y ejecutándola
LDAPReplace("telephoneNumber", "(510) 555-1000");
LDAPExecute("CN=wright,CN=Users,DC=company,DC=example,DC=com");

LDAPSearch

Declaración

string LDAPSearch(string path, string filter, int detail, string attribute1[, ... string attributeN])

Sintaxis

LDAPSearch(<path>, <filter>, <detail>, <attribute1>[, ... <attributeN>])

Parámetros requeridos

  • path: El nombre distinguido utilizado como base de la búsqueda
  • filter: Un filtro de búsqueda en forma de cadena de consulta, según lo definido por RFC 4515**
  • detail: Detalles que se devolverán:
    • 0: Pasar para devolver una cadena simple que es el primer atributo encontrado que coincide con el filtro
    • 1: Pasar para devolver una representación XML de los resultados de la búsqueda. Esto se puede establecer como un elemento de datos utilizando la función Set y luego acceder más tarde utilizando Get y una consulta XPath usando la función SelectSingleNode.
    • 2: Pasar para devolver un arreglo bidimensional, donde cada fila representa una entrada LDAP y donde los elementos de la fila son los valores de los atributos. Acceda a los elementos utilizando la función Get.
  • attribute,... attributeN: Un atributo que se incluirá en el resultado de la búsqueda (en otras palabras, el atributo que está buscando). Se pueden especificar atributos adicionales; sepárelos con comas.

Descripción

Para usar esta función, primero se debe utilizar la función LDAPConnect para establecer una conexión con el directorio LDAP.

Una vez establecida la conexión, se utiliza la función LDAPSearch para buscar dentro del directorio conectado.

Véase también las funciones LDAPConnect y LDAPExecute.

Controlando las variables de Jitterbit

Estas variables de Jitterbit afectan la búsqueda:

Variable Value(s) Descripción
jitterbit.scripting.ldap.scope 0 Limitar el alcance de la consulta solo a la entrada base
1 Buscar todas las entradas en el primer nivel debajo de la entrada base, excluyendo la entrada base (predeterminado)
2 Buscar la entrada base y todas las entradas en el árbol debajo de la base
jitterbit.scripting.ldap.include_dn_in_results true Incluir el nombre distinguido en el resultado de la búsqueda (predeterminado: false)
jitterbit.scripting.ldap.use_paged_search true Usar una búsqueda paginada; útil para recuperar conjuntos de resultados grandes (predeterminado: false)
jitterbit.scripting.ldap.max_search_results n Limitar el número de resultados de búsqueda a n resultados; un valor predeterminado suele ser establecido por el servidor LDAP (predeterminado ilimitado: -1)
jitterbit.scripting.ldap.return_null_if_no_results true Hacer que LDAPSearch() devuelva nulo si la búsqueda no devuelve ningún resultado (predeterminado: false)

Ejemplos

// Connecting to an LDAP server using a password set
// in a global variable ("$ldapPassword") and then performing a search
LDAPConnect("directory.company.example.com", "ghvwright", $ldapPassword, 0);
directorySearchResults = LDAPSearch("CN=Users,DC=company,DC=example,DC=com",
  "(&(objectCategory=person)(objectClass=user))", 1, "name", "whenCreated",
  "description", "telephoneNumber");