LDAP-Skripting

  • Freigeben Version: Xanadu
  • Aktualisiert 1. August 2024
  • 2 Minuten Lesedauer
  • Erstellen Sie anwenderdefinierte Transformationszuordnungen, Skripts und Geschäftsregeln, um die Anforderungen beim Importieren von Daten anzugeben.

    Anwenderdefinierte Transformationszuordnungen müssen onStart- und onAfter- Transformationsskripts enthalten.

    Das onStart- Skript muss die LDAPUtils -Skripteinbindung aufrufen und mit der Protokollierung beginnen. Die Transformationszuordnung „ LDAP User Import “ besitzt beispielsweise ein onStart -Skript, das diesen Code verwendet:
    gs.include ( "LDAPUtils" ) ; var ldapUtils  = new LDAPUtils ( ) ;
    ldapUtils. setLog (log ) ;
    Das Skript onAfter sollte die Funktion addMembers aufrufen. Beispiel:
    ldapUtils.addMembers (source , target ) ;

    Legen Sie deaktivierte Active Directory-Anwender auf inaktiv fest

    Verwenden Sie das folgende Skript, um Anwender automatisch zu deaktivieren, wenn der zugehörige AD-Anwender deaktiviert wird.

    Vorbereitungen

    Erforderliche Rolle: admin

    Warum und wann dieser Vorgang ausgeführt wird

    Sie können deaktivierte Active Directory-Anwender identifizieren, indem Sie den Wert des Attributs userAccountControl überprüfen. Diese Regel wird immer dann ausgeführt, wenn sich der Wert von userAccountControl ändert, und deaktiviert Anwender-Accounts, wenn die Anwenderaccount-Steuerung einen deaktivierten AD-Account anzeigt.

    Verwenden Sie das folgende Skript, um Anwender automatisch zu deaktivieren, wenn der zugehörige AD-Anwender deaktiviert wird.

    Prozedur

    1. Konfigurieren Sie das Benutzerformular, und erstellen Sie ein neues Ganzzahlfeld namens Benutzeraccount-Steuerung.
    2. Fügen Sie dem neuen Feld eine Zuordnung für userAccountControl (extern) hinzu.
    3. Erstellen Sie eine neue Geschäftsregel mit den folgenden Eigenschaften:
      Tabelle : 1. Geschäftsregel „AD-Anwender“ deaktivieren
      Business-Regelfeld Wert
      Name Deaktivieren Sie AD-Anwender
      Tabelle Benutzer [sys_user]
      Wann Vorher
      Bedingung current.u_user_account_control.changes()

      Das Feld „Skript“ muss Folgendes enthalten:

      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';
      }

    Weisen Sie LDAP-Feldwerte zu

    Sie können ein Skript verwenden, um jedem Feld, für das eine Feldzuordnung vorhanden ist, einen Wert zuzuweisen.

    Um beispielsweise dem Feld „sys_user.company“ einen Wert zuzuweisen, erstellen Sie eine Feldzuordnung für das Unternehmensfeld, und fügen Sie folgendes Transformationsskript hinzu:

    company = "Don's Sporting Goods";

    Bestimmte LDAP-Anwender ausschließen

    Wenn Sie die LDAP-Anwenderliste mithilfe von LDAP-Filtereigenschaften nicht vollständig filtern können, können Sie Benutzer mit einem Zuordnungsskript ausschließen.

    Nachdem Sie die Logik zur Identifizierung eines Anwenders ausgeführt haben, der nicht importiert werden darf, setzen Sie das Feld „user_name“ auf eine leere Zeichenfolge. Dadurch wird dieser Anwender nicht importiert.

    user_name='';

    Eine Möglichkeit, die herauszufilternden Benutzer zu identifizieren, besteht darin, im Attribut DistinguishedName nach einer Zeichenfolge zu suchen. Dieses Skript schließt beispielsweise Accounts aus, die sich nicht in einer Benutzer-OE befinden. Sie können dieses Skript verwenden, wenn Sie zu viele Anwender-OEs haben, um sie in die LDAP-Option der Ziel-OU aufzunehmen.

    //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);
    }

    Eine komplexere Filtermethode ist die Verwendung regulärer Ausdrücke.

    //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 = "";
    }