Navigation:  Referenz der Regelwerk-Anweisungen > Zugriff auf externe LDAP-Verzeichnisse >

Linkldap_read()

Previous pageReturn to chapter overviewNext page

Der Befehl ldap_read() liest einen Wert aus einem LDAP-Verzeichnis aus und legt diesen in einer Variablen ab.

 

Dieser Befehl baut eine Verbindung zu einem LDAP-Server auf, liest den Wert eines Attributs aus und legt diesen in einer Variable ab.

Wird keiner der angegebenen LDAP-Server erreicht, so wird die E-Mail mit einem temporären Fehler abgewiesen (420, could not bind to LDAP server).

 

Aufbau des Befehls

 

ldap_read('ldap','attr','var');

 

 

Rückgabewert

positiv

wenn das Attribute 'attr' gefunden und somit der Variablen 'var' ein Wert zugewiesen werden kann

negativ

wenn der Variablen 'var' kein Wert zugewiesen werden kann

 

Parameter

Variablen verfügbar!

 

warning

LinkAchtung:

Die Inhalte der Variablen im Parameter „Filter“ weichen von den Standard-Variablen ab!

 

 

ldap

Der Parameter ist wie folgt aufgebaut:

'URI;BindDN;Password;SearchBase;Filter'

Die Bedeutung der einzelnen Teil Strings ist der folgenden Tabelle beschrieben:

 

Parameter

Beschreibung

URI

Angabe des LDAP-Servers, der abgefragt werden soll. Als Eingabe wird der Hostname oder die IP-Adresse akzeptiert. Mehrere Werte können kommagetrennt angegeben werden: In diesem Fall wird automatisch auf den jeweils nächsten Server zugegriffen, wenn der vorherige nicht erreicht werden kann.

 

hint

LinkHinweis:

ist mehr als ein LDAP Server eingetragen, so wird für jeden einzelnen Server eine Verbindung aufgebaut. Die Verbindungen werden zwischengespeichert. Die eigentliche Abfrage wird dann in der eingegebenen Reihenfolge der Server ausgeführt, bis die Abfrage erfolgreich ist. War eine Abfrage erfolglos, so wird die Verbindung aus dem Zwischenspeicher entfernt. Ist keine verbleibende Verbindung im Zwischenspeicher, so werden die Verbindungen neu aufgebaut.

BindDN

Eingabe des vollständigen Distinguished Name (DN) des (read-only) Accounts, welcher zur Suche des unter „SearchBase“ im LDAP Verzeichnis berechtigt ist.

Password

Das Passwort des unter BindDN angegebenen Benutzers

 

hint

LinkHinweis:

Semikolons „;“ und Backslashes „\“ im Password müssen jeweils mit einem Backslash als Sonderzeichen gekennzeichnet werden, also „\;“, beziehungsweise „\\“.

Somit müsste beispielsweise das Passwort

p4ss\w0rd;

wie folgt eingegeben werden:

p4ss\\w0rd\;

SearchBase

Suchpfad: Gibt den Zweig des LDAP Verzeichnisses an, in welchem mittels Suchfilter (siehe nächste Zeile) rekursiv nach dem Objekt gesucht werden soll, aus welchem das Attribut 'attr' ausgelesen werden soll.

Filter

Angabe des Such-Attributes /-Wertes, mittels welchem im Zweig der „SearchBase“ nach dem Objekt zu suchen ist. Das Such-Attribut ist in der Regel „(mail=...)“. Für das Auswerten der E-Mail Adresse(n) stehen die im Folgenden genannten Variablen zur Verfügung.

 

Variablen

warning

LinkAchtung:

Die Inhalte der hier genannten Variablen weichen von den Standard-Variablen ab!

Würde der Parameter 'ldap' also zum Beispiel mit einer mittels setvar() geschriebenen Variable befüllt, so können Abweichungen beim Verarbeiten auftreten.

 

$from

Diese Variable gibt die E-Mail Adresse des Absenders aus dem FROM-Header der E-Mail aus.

Ist der Sender des FROM-Headers nicht intern - also keiner Managed domain zuzuordnen - so wird auf das Vorhandensein des SENDER-Headers geprüft. Ist dieser vorhanden und der darin enthaltene Sender intern, so wird dieser anstatt des Senders aus dem FROM-Header ausgegeben. Dadurch werden Probleme, zum Beispiel beim Weiterleiten von Kalendereinladungen, vermieden.

Rückgabewert bei Verwenden dieser Variable

positiv

wenn ein entsprechendes Objekt mit dem angegebenen Attribut 'attr' im, mittels LDAP Suchstring (ldap/Filter) abgegebenen Pfad, gefunden wurde.

negativ

wenn kein entsprechender Wert gefunden wurde.

 

warning

LinkAchtung:

Vor dem Verwenden von ldap_read() mit den folgenden Variablen, ist zwingend ein splitrecipients() erforderlich, um das Schreiben der Variable 'var' pro Empfänger gewährleisten zu können.

$one_recipient

Enthält eine E-Mail mehrere Empfänger, so wird für alle Empfänger nach einem Objekt mit dem angegebenen Attribut 'attr' im LDAP Suchstring (ldap/Filter) gesucht.

Rückgabewert bei Verwenden dieser Variable

positiv

wenn mindestens für einen Empfänger ein entsprechendes Objekt mit dem angegebenen Attribut 'attr' im, mittels LDAP Suchstring (ldap/Filter) abgegebenen Pfad, gefunden wurde.

negativ

wenn für keinem Empfänger ein entsprechendes Objekt/Attribut gefunden wurde.

 

$all_recipients

Enthält eine E-Mail mehrere Empfänger, so wird für alle Empfänger nach einem Objekt mit dem angegebenen Attribut 'attr' im LDAP Suchstring (ldap/Filter) gesucht.

Rückgabewert bei Verwenden dieser Variable

positiv

wenn bei allen Empfängern ein entsprechendes Objekt mit dem angegebenen Attribut 'attr' im, mittels LDAP Suchstring (ldap/Filter) abgegebenen Pfad, gefunden wurde.

negativ

wenn auch nur für einen Empfänger kein entsprechendes Objekt/Attribut gefunden wurde.

 

 

 

attr

Attribut, dessen Wert nach erfolgreicher Suche (siehe (ldap/Filter)) ausgelesen werden soll.

Wird ein Attribut namens json angegeben und entspricht der Wert des Attributs auch dem JSON Format, so können einzelne Felder des JSONs ausgelesen und in Variablen geschrieben werden.

 

var

Name der Variablen, in welcher der Wert des Attributes 'attr' abgelegt werden soll

Wird hier json eingetragen, so wird der Wert des ausgelesenen Attributs als JSON verarbeitet.

 

Beispiel

Der Wert des Attributs „Name“ soll aus einem LDAP-Verzeichnis ausgelesen werden. Dieser soll in der Variable „name_from_ldap“ abgespeichert werden.

Die Anweisung sieht wie folgt aus:

 

Zeile

Code

01

ldap_read('ldaps://directory.domain.tld;CN=Peter Mueller,OU=SBSUsers,OU=Users,OU=MyBusiness,DC=Firma,DC=local;mypassword;OU=SBSUsers,OU=Users,OU=MyBusiness,DC=firma,DC=local;(mail=$sender)','name','name_from_ldap');

 

Erklärung

Der LDAP-Server mit dem Fully Qualified Domain Name (FQDN) „directory.domain.tld“ (und dem Standardport 389) wird abgefragt.

Der DistinguishedName (DN) des Benutzers (Peter Mueller) unter welchem die Abfrage ausgeführt wird (dieser muss die entsprechenden Berechtigungen besitzen) lautet

CN=Peter Mueller,OU=SBSUsers,OU=Users,OU=MyBusiness,DC=Firma,DC=local

Das Passwort dieses Benutzers lautet

mypassword

Der LDAP Pfad, in welchem nach dem Attribut „name“ gesucht werden soll lautet

OU=SBSUsers,OU=Users,OU=MyBusiness,DC=Firma,DC=local

Der Benutzer, dessen Gruppenzugehörigkeit festgestellt werden soll, wird anhand der Absender E-Mail Adresse (ldap/Filter) definiert.

Existiert das angegebene Attribut 'attr' oder der gesuchte Eintrag nicht, so wird der Variable 'var' ein leerer Wert zugewiesen.

Werden mehrere Einträge (Objekte) im Attribut 'attr' gefunden, so wird nur der erste ausgewertet.

Sollten mehrere Attribute 'attr' vorhanden sein, so werden alle Attribute ausgewertet (multi value).

Wird keiner der angegebenen LDAP-Server erreicht, so wird die E-Mail mit einem temporären Fehler abgewiesen.

 

Verarbeiten von JSON „Objekten“ innerhalb von Attributen

Fall1:

Wird ein Attribut attr namens json angegeben und entspricht der Wert des Attributs auch dem JSON-Format, so können einzelne Namen des JSONs ausgelesen und deren Werte in Variablen geschrieben werden.

Dazu wird als var innerhalb geschweifter Klammern jeweils das Namensfeld des JSONs, gefolgt von einem Doppelpunkt und den Namen der Variablen, in welche der Wert des angegebenen Namensfeldes geschrieben werden soll, eingetragen, also

{"Namensfeld_1": "Variable_1", "Namensfeld_2": "Variable_2", "Namensfeld_n": "Variable_n"}

 

Beispiel 1

Das Attribut „myJson“ beinhaltet ein JSON-Objekt, beispielsweise

 

{

 "Vorname" : "Max",

 "Name" : "Mustermann",

 "Strasse" : "Musterstrasse 1",

 "PLZ" : "98765",

 "Ort" : "Musterstadt",

 "Land" : "Deutschland"

}

 

Aus dem JSON-Objekt sollen nur die Werte der Namensfelder "Name", "Strasse". "PLZ" und "Ort" jeweils in die Variablen "$surname", "$street", "$postalcode" und "$locality" übernommen werden.

 

Zeile

Code

01

ldap_read('ldaps://directory.domain.tld;CN=Peter Mueller,OU=SBSUsers,OU=Users,OU=MyBusiness,DC=Firma,DC=local;mypassword;OU=SBSUsers,OU=Users,OU=MyBusiness,DC=firma,DC=local;(mail=$sender)','json','"Name" : "$surname", "Strasse" : "$street", "PLZ" : "$postalcode", "Ort" : "$locality"');

 

Daraus resultieren folgende Variablen-Werte-Kombinationen

 

$surname

Mustermann

$street

Musterstrasse 1

$postalcode

98765

$locality

Musterstadt

 

 

Fall2:

Wird ein Attribut attr mit beliebigem Namen angegeben und entspricht der Wert des Attributs dem JSON-Format, so können aus den JSON-Objekten die Inhalte der Namensfelder in gleichlautende Variablen übernommen werden.

Dazu wird als var der Wert json verwendet.

 

Beispiel 2

Das Attribut „myJson“ beinhaltet ein JSON-Objekt, beispielsweise

 

{

 "Vorname" : "Max",

 "Name" : "Mustermann",

 "Strasse" : "Musterstrasse 1",

 "PLZ" : "98765",

 "Ort" : "Musterstadt",

 "Land" : "Deutschland"

}

 

Aus dem JSON-Objekt sollen die Werte der Namensfelder in gleichnamige Variablen übernommen werden, was durch Verwenden von json als var getriggert wird:

 

Zeile

Code

01

ldap_read('ldaps://directory.domain.tld;CN=Peter Mueller,OU=SBSUsers,OU=Users,OU=MyBusiness,DC=Firma,DC=local;mypassword;OU=SBSUsers,OU=Users,OU=MyBusiness,DC=firma,DC=local;(mail=$sender)','myJson','json');

 

Daraus resultieren folgende Variablen-Werte-Kombinationen

 

$Vorname

Max

$Name

Mustermann

$Strasse

Musterstrasse 1

$PLZ

98765

$Ort

Musterstadt

$Land

Deutschland