Écriture de scripts LDAP

  • Rversion finale: Zurich
  • Mis à jour 31 juil. 2025
  • 2 minutes de lecture
  • Créez des cartes de transformation, des scripts et des règles métier personnalisés pour spécifier les exigences lors de l’importation de données.

    Les cartes de transformation personnalisées doivent inclure les scripts de transformation onStart et onAfter .

    Le script onStart doit appeler l’include de script LDAPUtils et commencer la connexion. Par exemple, la carte de transformation d’importation d’utilisateurs LDAP possède un script onStart qui utilise le code suivant :
    gs.include ( "LDAPUtils" ) ; var ldapUtils  = new LDAPUtils ( ) ;
    ldapUtils. setLog (log ) ;
    Le script onAfter doit appeler la fonction addMembers . Par exemple :
    ldapUtils.addMembers (source , target ) ;

    Définir les utilisateurs Active Directory désactivés sur inactifs

    Utilisez le script suivant pour désactiver automatiquement des utilisateurs lorsque l’utilisateur AD associé est désactivé.

    Avant de commencer

    Rôle requis : admin

    Pourquoi et quand exécuter cette tâche

    Vous pouvez identifier les utilisateurs Active Directory désactivés en vérifiant la valeur de l’attribut userAccountControl . Cette règle s’exécute chaque fois que la valeur userAccountControl change et désactive les comptes utilisateur si le contrôle de compte utilisateur signifie un compte AD désactivé.

    Utilisez le script suivant pour désactiver automatiquement des utilisateurs lorsque l’utilisateur AD associé est désactivé.

    Procédure

    1. Configurez le formulaire Utilisateur et créez un nouveau champ de nombre entier appelé Contrôle de compte d’utilisateur.
    2. Ajoutez un mappage pour userAccountControl (externe) au nouveau champ.
    3. Créez une règle métier avec les propriétés suivantes :
      Tableau 1. Désactiver la règle métier Utilisateurs AD
      Champ de règle métier Valeur
      Nom Désactiver les utilisateurs AD
      Table Utilisateur [sys_user]
      Quand Avant
      Condition current.u_user_account_control.changes()

      Le champ Script doit contenir les éléments suivants :

      var disabledFlag = 2;
      //perform a bitwise comparison on userAccountControl to see if the 2 bit flag is enabled
      if (current.u_user_account_control & disabledFlag) {
        gs.log('Disabling user: ' + current.user_name + 'userAccountControl=' + current.u_user_account_control);
        current.active='false';
        current.locked_out='true';
      }

    Affecter des valeurs de champ LDAP

    Vous pouvez utiliser un script pour affecter une valeur à n’importe quel champ pour lequel il existe un mappage de champ.

    Par exemple, pour affecter une valeur au champ sys_user.société, créez une carte de champs pour le champ société et ajoutez un script de transformation des éléments suivants :

    company = "Don's Sporting Goods";

    Exclure des utilisateurs LDAP particuliers

    Si vous ne pouvez pas filtrer complètement la liste des utilisateurs LDAP à l’aide des propriétés de filtre LDAP, vous pouvez exclure les utilisateurs avec un script de carte.

    Après avoir exécuté la logique pour identifier un utilisateur qui ne doit pas être importé, définissez le champ user_name sur une chaîne vide et cet utilisateur ne sera pas importé.

    user_name='';

    Une façon d’identifier les utilisateurs à filtrer consiste à rechercher une chaîne dans l’attribut distinguishedName . Par exemple, ce script exclut les comptes qui ne sont pas dans une unité organisationnelle d’utilisateur. Vous pouvez utiliser ce script si vous avez trop d’unités organisationnelles d’utilisateurs à inclure dans l’option LDAP d’unité organisationnelle cible.

    //vdn is a variable mapped to distinguishedName
    gs.include("LDAPUtils");
    var vdn = source.getElement(this.distinguishedName);
    if (vdn.indexOf('OU=Users')<0) {
      user_name='';
      gs.log('LDAP Import Skipping User: ' + vdn);
    }

    Une méthode de filtrage plus complexe consiste à utiliser des expressions régulières.

    //vcn is a variable mapped to cn
    //vdn is a variable mapped to distinguishedName
    //c is the regular expression string
    gs.include("LDAPUtils");
    var vdn = source.getElement(this.distinguishedName);
    var vcn = source.getElement(this.cn);
    var c = /^[a-z][a-z][a-z][0-9][0-9][0-9]$/;
    var nvcn = vcn.toLowerCase();
    //test to see if the cn is in the form of 3 letters followed by 3 numbers, only import these
    if (c.test(nvcn)) {
    	user_name = nvcn;
    } else {
    	gs.log("LDAP import rejected username: " + vcn + " for DN: " + vdn);
    	user_name = "";
    }