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!
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.
|
||||||||||||||||
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
|
||||||||||||||||
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
$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
$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
$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
|
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 |