# LDAP-Import

Mit dem LDAP-Import können Sie Benutzer und Gruppen aus einem Active Directory (AD) in das ELO System übernehmen.

Übersicht des Bereichs 'LDAP-Import' in der ELO Administration Console

  • Serverauswahl: Die ELO Administration Console versucht automatisch mögliche LDAP-Server zu finden. Ist dieses Auswahlfeld leer, wird in der Domäne kein Server gefunden. Dies kann beispielsweise bei einer VPN-Verbindung der Fall sein.

  • Server: Hier wird der Server zur LDAP-Verbindung eingetragen. Hier kann auch die IP-Adresse, der Port oder das Protokoll eingetragen werden.

    BNF: Server ::=[ldap|ldaps]://[Servername|IP-Adresse]:Port

Beachten Sie

Verwenden Sie eine verschlüsselte Verbindung, in diesem Fall also LDAP via SSL (LDAPS).

  • Domänen-Benutzer und Passwort: Die Anmeldedaten bestehen aus dem Namen und dem Passwort.

  • Validierung des Zertifikats ignorieren: Die Validierung des Zertifikats kann im Bedarfsfall auch ignoriert werden.

  • Basis-DN und LDAP-Organisationseinheit: Mit diesen Einträgen wird der korrekte Zweig im LDAP-Verzeichnis ausgewählt.

  • Filtervorlagen und Filtertext: Einige LDAP-Filterausdrücke werden in der Auswahlliste vorgegeben und in den Filtertext zum freien Bearbeiten übernommen.

  • Mapping-Skript: Erlaubt ein zusätzliches Bearbeiten der Daten als JavaScript-Code.

    Nähere Informationen finden Sie im nachfolgenden Abschnitt Das Mapping-Skript.

  • Mapping zurücksetzen: Löscht den Text aus dem Mapping-Skriptfeld.

  • Bereits angelegte Benutzer oder Gruppen aktualisieren: Wenn der Name zu einem bereits vorhandenen Eintrag aufgelöst werden kann, wird dieser Eintrag nur mit gesetztem Häkchen erneut bearbeitet.

    Beachten Sie

    LDAP Gruppen werden nur bei der Anmeldung der Benutzer ausgelesen und angewendet.

  • In LDAP enthaltene Gruppen in ELO erzeugen: Legt auch Gruppen mit an, die noch nicht in ELO vorhanden sind.

  • Suche ausführen: Führt die Suche aus und zeigt die Ergebnisse an.

  • Ergebnisliste: Zeigt die Liste der zu importierenden Einträge an. Alle gültigen Einträge sind auch gleich selektiert. Wenn bei der Überprüfung ungültige Daten erkannt wurden, werden diese nicht selektiert sein und der Hinweis auf den Verstoß ist als Tooltip hinterlegt.

# Das Mapping-Skript

Es gibt ein vorgegebenes Mapping von Standard-LDAP-Attributen auf ELO Attribute. Um eine flexiblere Anpassung zu ermöglichen, kann man in das Eingabefeld JavaScript-Code einfügen. Dieser wird in einen Code-Rahmen eingebettet und für jeden Datensatz der LDAP-Suche ausgeführt.

Der ELO Indexserver hat eine Datenstruktur für die Benutzer und Gruppen: das UserInfo-Objekt. Dieses wird in der Entwickler-Dokumentation des ELO Indexservers ausführlich beschrieben. Der Zugriff im Mapping-Skript kann über den Variablennamen elo erfolgen.

# Standard-Mapping

  • elo.type
    • Anhand der LDAP ObjectClass=person
    • Wenn die Klasse vorhanden ist, wird ein Benutzer erzeugt, sonst eine Gruppe.
  • elo.name
    • Anhand der LDAP-Attributen displayName, cn, sAMAccounName und distinguishedName
    • Das zuerst gefunden LDAP-Attribut wird als Name gesetzt.
  • elo.userProps[UserInfoC.PROP_NAME_OS]
    • Der Wert des LDAP-Attribut sAMAccountName wird übernommen.
  • elo.userProps[UserInfoC.PROP_NAME_EMAIL]
    • Der Wert des LDAP-Attributs mail wird übernommen.
  • elo.superiorId
    • Das LDAP-Attribut manager wird ausgewertet.
  • Wenn das manager-Attribut auf einen existierenden ELO Benutzer verweist, wird dessen ID als Vorgesetzter eingetragen.
  • elo.id
    • Wenn der Name auf einen gültigen ELO Benutzer verweist, wird diese ID hier als ID eingetragen. Sonst -1 für einen neuen Benutzer.

# JavaScript-Code-Rahmen

In der Log-Stufe debug wird das erzeugte Script im Logfile ausgegeben.

// rhino compatible modus on java 8 (nashorn) 
load('nashorn:mozilla_compat.js')
// editable basic javascript mapping function Version 1.0 
importPackage(Packages.de.elo.ix.client)
importClass(Packages.de.elo.ldap.LdapImportException)
function extractDN(v){
try{
var vv=v.substring(3,v.indexOf('=', 3))
return vv.substring(0,vv.lastIndexOf(','))
}
catch(e){}
}
function map(ixc, elo, ldap, userNames){
%% Hier wird der Text aus der Oberfläche für das Feld Mapping-Skript ausgegeben. %%
}

Wenn die ELO Administration Console unter Java 8 gestartet wurde, wird der Rhino-Kompatibilitätsmodus eingebunden.

public interface LdapImportMapping {
  public void map( de.elo.ix.client.IXConnection ixc, de.elo.ix.client.UserInfo userInfo,
                   javax.naming.directory.Attributes attributes,
                   Map<String, de.elo.ix.client.UserName> userNames );
}

Der Zugriff auf den JavaScript-Rahmen erfolgt über das Java Interface LdapImportMapping. In der Map wird der ELO-Name in Kleinbuchstaben als Schlüssel auf das UserName-Objekt verwendet.

# Beispiele

  • Ein Datensatz kann ausgeschlossen werden, indem die elo.id=0 gesetzt wird.
if (elo.name.startsWith('_')){
elo.id=0
}
  • Da JavaScript-Code verwendet werden kann, ist es auch möglich, über den Mechanismus der Fehlermeldung auf der Oberfläche Ausgaben zum Testen anzeigen zu lassen.
throw ldap.get('mail').getClass()

oder auch

throw userNames['administrator'].id
  • Ein kleines Beispiel zeigt, wie unter Überprüfung des mail-Attributes Elemente ausgeschlossen werden können und der Anzeigename für die verbleibenden Benutzer gesetzt wird.
var emailRegex = /^[\w._-]+[+]?[\w._-]+@[\w.-]+\.[a-zA-Z]{2,6}$/
var lMail = ldap.get('mail')
if (lMail){
    lMail = lMail.get()
    if(emailRegex.test(lMail)){
        elo.name += ' ('+lMail.split('@').pop()+')'
        // gültige Mail -> den Anzeigename anpassen.
    }
}else{
    elo.id=0
    // ungültige Mail -> ausschließen
}
Zuletzt aktualisiert: 22. Mai 2024 um 13:33