Show TOC

HintergrundLDAP-Connector-Schnittstelle Dieses Dokument in der Navigationsstruktur finden

 

Die LDAP-Connector-Schnittstelle ist eine Sammlung der Funktionsbausteine, mit denen Sie über den LDAP Connector auf einen Verzeichnisserver zugreifen können. Die Funktionsbausteine orientieren sich an den im LDAP-Protokoll verfügbaren Operationen. Eine Übersicht über diese Operationen erhalten Sie im Request For Comments Nummer 2251 unter

www.ietf.org/rfc/rfc2251.txt?number=2251.

Voraussetzung
  • Sie haben den LDAP Connector eingerichtet, damit Sie die hier beschriebenen Funktionsbausteine benutzen können.

  • In der Sicht LDAP-Server ist ein Eintrag für den zu verwendenden externen Verzeichnisserver vorhanden.

Allgemeine Anmerkungen zu den Funktionsbausteinen
  • Alle Ausnahmen werden mit einer ABAP-Nachricht ausgelöst.

  • Wenn der Exportparameter LDAPRC vom aufrufenden Programm zurückgenommen wird, findet sich darin der Rückgabecode des Verzeichnisses gemäß LDAP-Standard. Weicht dieser von Null ab, so deutet dies auf einen Fehler hin und sollte entsprechend behandelt werden. Wird der Parameter nicht zurückgenommen, wird die Ausnahme LDAP_FAILURE ausgelöst. Als Nachricht wird die dem Fehlercode entsprechende Nachricht aus Nachrichtenklasse LDAPRC zurückgegeben. Diese Nachrichtenklasse bietet ein Mindestmaß an Informationstext. Da die Fehler jedoch nicht in der Verantwortung des SAP-Systems liegen, beschränkt sich der Inhalt dieser Nachrichtenklasse auf eine Übersetzung der LDAP-Fehlercodes (siehe Hinweis 511141).

  • Einige Funktionsbausteine besitzen Importparameter mit dem Datentyp STRING. Diese ersetzen funktional die ebenfalls noch vorhandenen Parameter mit Festlängenfeldern (z. B. USR_STRING ersetzt USR in LDAP_SIMPLEBIND). In den Releases 4.6B, 4.6C und 4.6D ist aus technischen Gründen die maximale Länge der über diese String-Parameter an das Verzeichnis übergebbaren Daten auf die Feldlänge der korrespondierenden Festlängenfelder beschränkt. Wird diese Länge überschritten, reagiert der Baustein mit der Ausnahme OTHER_ERROR und einer entsprechenden Fehlermeldung.

Häufigste Ausnahmen
  • NO_AUTHORIZ: ABAP-Berechtigungsprüfung fehlgeschlagen. Geprüftes Berechtigungsobjekt ist S_LDAP mit dem verwendeten LDAP-Server.

  • CONFIG_ERROR: Fehler in der Konfiguration im SAP-System (z. B. wurde eine nicht existierende LDAP-Server-ID angegeben).

  • LDAP_FAILURE: Wenn der Exportparameter LDAPRC nicht zurückgenommen wird, wird diese Ausnahme ausgelöst, wenn das Verzeichnis einen Fehlercode gesendet hat.

  • CONN_OUTDATE: Die LDAP-Verbindung wurde wegen zu langer Inaktivität beendet.

  • NOT_ALIVE: Die Verbindung zwischen Applikationsserver und LDAP Connector ist abgebrochen.

Funktionen

Folgende Funktionsbausteine stehen Ihnen zur Verfügung:

LDAP_CHECKIN_RFCDEST (Setzen des zu verwendenden LDAP Connector)

Mit dieser (optionalen) Funktion können Sie den LDAP Connector setzen, der für den nachfolgenden Anmeldeversuch benutzt wird. Wird diese Funktion nicht aufgerufen, so sucht das System selbständig einen LDAP Connector aus (Voraussetzung: Mindestens ein LDAP Connector ist mit Zielstatus Aktiv eingetragen und aktiv).

Verwenden Sie diese Funktion nur in Testprogrammen. Um Lastverteilung zu ermöglichen, sollten Sie den LDAP Connector in produktiven Umgebungen immer automatisch auswählen.

  • NEWDEST: Name des LDAP Connector. Der Baustein führt eine Verfügbarkeitsprüfung des LDAP Connector durch und reagiert mit einer Ausnahme, falls ein Fehler auftritt.

LDAP_SIMPLEBIND (Anmelden am Verzeichnis)

Diese Funktion ist vor allen weiteren Funktionen aufzurufen, um eine Verbindung zum Verzeichnis herzustellen.

  • SERVERID: Name des LDAP-Servers, den Sie im Customizing für den anzusprechenden Verzeichnisserver gewählt haben. Die Verbindungsdaten (Hostname, Port) sowie die zu verwendende Protokollversion sind dort hinterlegt.

  • USR_STRING: Der Benutzername für die Anmeldung am Verzeichnis. Diese Information wird unverändert an das Verzeichnis weitergegeben.

  • PWD_STRING: Das Kennwort zur Anmeldung am Verzeichnis. Beachten Sie, dass die Verwendung eines leeren Kennworts gemäß LDAP-Standard als anonyme Anmeldung (leerer Benutzername) interpretiert wird.

  • HOLDSESS: Maximal zulässige Inaktivitätsdauer in Sekunden. Wenn von Null verschieden, wird die Verbindung getrennt, wenn sie länger als die angegebene Zeit in Sekunden nicht benutzt wurde.

    Beachten Sie:

    • Beim Start des LDAP Connector können Sie über den Kommandozeilenparameter "-o" eine globale Zeitüberschreitung einstellen. Wird der Parameter nicht gesetzt, gilt eine Voreinstellung von 3600 Sekunden. Die für die einzelne Verbindung wirksame Zeitüberschreitung ist das Minimum dieser Zeit und des für die Verbindung gesetzten Wertes von HOLDSESS (falls von Null verschieden).

    • Auf den Hardwareplattformen, auf denen der LDAP Connector nicht multi-threading-fähig ist (derzeit alle außer Microsoft Windows), erfolgt eine Trennung der Verbindung wegen zu langer Inaktivität erst beim nächsten Zugriff auf den LDAP Connector.

  • WAIT_TIME: Wenn nicht mittels LDAP_CHECKIN_RFCDEST explizit ein LDAP Connector gesetzt wurde, wählt LDAP_SIMPLEBIND automatisch den zu verwendenden LDAP Connector. Wenn kein verfügbarer LDAP Connector gefunden wird, wartet das System eine Sekunde und sucht dann erneut. Der Parameter WAIT_TIME steuert, wie oft diese Schritte wiederholt werden, bevor eine Fehlermeldung mit der Ausnahme NOMORE_CONNS ausgelöst wird. Ein Wert von 0 (Voreinstellung) entspricht dem bisherigen Verhalten, bei dem die Ausnahme sofort nach dem ersten Fehlversuch ausgelöst wird.

LDAP_SYSTEMBIND (Anmelden am Verzeichnis mit vorkonfigurierten Anmeldedaten)

Ab Release 4.6C steht dieser Baustein als Alternative zu LDAP_SIMPLEBIND zur Verfügung. Die Anmeldedaten für das Verzeichnis (Benutzername, Kennwort) werden dem Baustein nicht an der Schnittstelle übergeben, sondern über den Customizing-Schritt LDAP-Systembenutzer bearbeitet. Die dort vergebene BenutzerID ist in der Pflegesicht LDAP-Server im Feld Benutzer-ID eingetragen.

  • SERVERID: Siehe LDAP_SIMPLEBIND

  • WRITEREAD: Mit diesem Parameter (mögliche Werte: "W" für "Write" und "R" für "Read") legen Sie fest, ob die Verbindung nur lesend (R) oder auch schreibend (W) auf das Verzeichnis zugreifen soll. Wenn Sie ihn auf (R) setzen und eine ändernde Operation aufrufen, wird eine Fehlermeldung ausgegeben. Der Parameter hat zusammen mit zwei weiteren Kennzeichen aus dem Customizing folgende Wirkung:

    • Ist in der Konfiguration des LDAP-Servers das Kennzeichen Anonym lesen gesetzt und ist der Parameter "R", so erfolgt die Anmeldung am Verzeichnis grundsätzlich anonym, d. h. mit initialem Benutzernamen, unabhängig davon, ob ein Systembenutzer im Feld Benutzer-ID des LDAP-Server-Customizings eingetragen ist.

    • Ist im Customizing des LDAP-Systembenutzers das Kennzeichen Nur Leserechte gesetzt, so führen ändernde Operationen auch dann zum Fehler, wenn der Parameter auf "W" gesetzt wurde.

  • BASEDN_STRING: Über diesen Parameter wird der Basis-DN des gewählten Servers zurückgegeben.

  • HOLDSESS: Siehe LDAP_SIMPLEBIND

  • WAIT_TIME: Siehe LDAP_SIMPLEBIND.

LDAP_CREATE (Anlegen eines noch nicht vorhandenen Eintrags im Verzeichnis)
  • LDAPE: Der Eingabeparameter ist ein komplexer Datentyp, der die Daten des Eintrags beschreibt.

    • DN: Der vollständige Distinguished Name des anzulegenden Eintrags.

    • ATTRIBUTES: Eine Tabelle mit den Attributnamen und Werten. Der Zeilentyp dieser Tabelle ist komplex und besitzt die folgenden relevanten Felder:

      • NAME: Attributname

      • TYP: Angabe, ob es sich um ein textuelles (C) oder binäres (X) Attribut handelt. Es sind nur diese beiden Werte zulässig.

      • VALS: Für textuelle Attribute werden in dieser Tabelle die Attributwerte (in der Tabellenspalte VAL) übergeben.

      • XVALS: Für binäre Attribute werden in dieser Tabelle die Attributwerte (in der Tabellenspalte VAL) übergeben.

LDAP_UPDATE (Ändern eines Eintrags)

Mit dieser Funktion können Sie einen bestehenden Eintrag ändern. Die Schnittstelle ist mit der von LDAP_CREATE identisch. Das Feld OPERATION der Attributtabelle gibt bei dieser Funktion pro Attribut an, welche Operation durchgeführt werden soll:

  • A: "Append". Die angegebenen Werte werden zu den vorhandenen Werten hinzugefügt.

  • D: "Delete". Die angegebenen Werte werden aus den vorhandenen Werten gelöscht.

  • R: "Replace". Die angegebenen Werte ersetzen die bereits bestehenden Werte vollständig. Laut LDAP-Standard entspricht das Ersetzen mit einer leeren Wertemenge dem Löschen des Attributs.

LDAP_READ (Lesen von Einträgen)

Mit dieser Funktion können Sie Daten aus dem Verzeichnis lesen.

  • BASE_STRING: Der Distinguished Name des Eintrags, von dem aus die Suche durchgeführt werden soll.

  • SCOPE: Suchtiefe.

    Zulässige Werte:

    • 0: Die Suche erstreckt sich nur auf den Basiseintrag. Wählen Sie diese Suchtiefe, um zu überprüfen, ob ein bestimmter Eintrag vorhanden ist, oder um Attribute eines bekannten Eintrags zu lesen.

    • 1: Suche eine Ebene unterhalb des Basiseintrags.

    • 2: Die Suche erstreckt sich auf den Basiseintrag und alle Einträge und Teilbäume unterhalb.

  • FILTER_STRING: Der Suchfilter in LDAP-Notation. Beispiel: (&(objectclass=*)(telephoneNumber=12345))

  • TIMEOUT: Eine Struktur mit den Feldern SEC und USEC, welche die maximale Suchzeit im Verzeichnis festlegen, falls von Null verschieden. Diese Information wird an das Verzeichnis weitergeleitet, ihre Berücksichtigung und Auswirkung entzieht sich der Verantwortung von SAP.

  • ATTRIBUTES: Über diese Tabelle können Sie angeben, welche Attribute ausgelesen werden sollen und in welchem Format (textuell oder binär) diese zurückgegeben werden.

    • Ist die Tabelle leer, werden alle Attribute in beiden Formaten zurückgegeben.

    • Enthält die Tabelle eine Zeile mit einem Attributnamen im Feld NAME, so wird dieses Attribut in dem in Feld TYP angegebenen Format zurückgegeben. Zulässige Werte für dieses Feld:

      • C: Das Attribut wird nur textuell gelesen.

      • X: Das Attribut wird nur binär gelesen.

      • Leer: Das Attribut wird textuell und binär gelesen.

    • Enthält die Tabelle eine Zeile mit einem Stern (*) im Feld NAME, so werden alle Attribute in dem Format zurückgegeben, das in Feld TYP angegeben ist.

Die Suchergebnisse werden in der Tabelle ENTRIES mit einer komplexen Zeilenstruktur zurückgegeben:

  • DN: Der Distinguished Name des gefundenen Eintrags.

  • ATTRIBUTES: Eine Tabelle mit den gefundenen Attributen des Eintrags. Die Zeilenstruktur besitzt folgende Felder:

    • NAME: Der Name des Attributs.

    • TYP: Das Format, in welchem dieses Attribut gelesen wurde (C für textuell, X für binär).

    • VALS: Für textuell gelesene Attribute enthält diese Tabelle die Attributwerte.

    • XVALS: Für binär gelesene Attribute enthält diese Tabelle die Attributwerte.

Zusammenhang zwischen angeforderten und zurückgegebenen Attributnamen und Typen

Attributnamen sind gemäß LDAP-Standard unabhängig von der Groß- und Kleinschreibung. Daher können Sie ein Attribut über den Parameter ATTRIBUTES von LDAP_READ in beliebiger Schreibweise anfordern.

Um eine Suche nach diesem Attribut im Suchergebnis zuzulassen, wird LDAP_READ jedes angeforderte Attribut (sofern im Verzeichnis vorhanden) in der Rückgabestruktur mit gleicher Schreibweise zurückgeben und dabei auch den angeforderten Typ berücksichtigen.

Wenn Sie den Platzhalter Stern (*) benutzt haben, um alle Attribute anzusprechen, so werden diese in Großbuchstaben zurückgegeben.

Beispiel Beispiel

Beispiel 1:Ein Eintrag habe im Verzeichnis die Attribute SN, CN und CERT.

Ende des Beispiels.

Syntax Syntax

Anforderung:

  1. NAME     TYP
  2. ================
  3. sn       C
  4. SN       C
  5. CN       X
  6. cert     <space>
  7. SN       C
Coding-Ende

Syntax Syntax

Rückgabe von LDAP_READ

  1. NAME    TYP         VALS   XVALS
  2. ================================ 
  3. CN      X           -      +  (as requested)
  4. SN      C           +      -  (only once, although requested twice)
  5. cert    <space>     +      +  (as requested)
  6. sn      C           +      -  (was also requested in lower case)
Coding-Ende

Beispiel Beispiel

Beispiel 2:

Ende des Beispiels.

Syntax Syntax

Anforderung:

  1. NAME     TYP
  2. ============
  3. cert     X
  4. SN       C
  5. *        C
Coding-Ende

Syntax Syntax

Rückgabe von LDAP_READ

  1. NAME    TYP         VALS   XVALS
  2. ================================
  3. CERT    C           +      -  (result of "*")
  4. CN      C           +      -  (result of "*")
  5. N      C           +      -  (directly requested)
  6. cert    X           -      +  (directly requested)
Coding-Ende
LDAP_DELETE (Löschen von Einträgen)
  • DN_STRING: Der vollständige Distinguished Name des zu löschenden Eintrags.

  • SUBTREE: Wenn dieser Parameter auf (X) gesetzt wird, werden auch alle Einträge unterhalb des Distinguished Name gelöscht. Die Funktion erlaubt somit die Löschung eines ganzen Teilbaums.

LDAP_RENAME (Umbenennen von Einträgen)
  • DN_STRING: Der vollständige Distinguished Name des umzubenennenden Eintrags.

  • NEW_RDN_STRING: Der neue Relative Distinguished Name für den Eintrag.

  • NEW_PARENT_STRING: Wenn der Parameter gefüllt ist, gibt er den neuen übergeordneten Eintrag an. Nach Erfahrungen von SAP wird diese Operation nicht von allen Verzeichnissen unterstützt.

  • DELETE_OLD: Wenn dieser Parameter auf (X) gesetzt wird, wird der alte Eintrag nach der Umbenennung gelöscht (Verschieben), andernfalls entspricht die Operation einem Kopieren.

    Empfehlung Empfehlung

    Vergleichen von Attributwerten

    Die Vergleichsoperation des LDAP-Standards (ldap_compare_s) wird nicht unterstützt. Wir empfehlen Ihnen, LDAP_READ zu benutzen, um das gewünschte Attribut auszulesen, und den Vergleich in ABAP durchzuführen.

    Ende der Empfehlung.
LDAP_UNBIND (Abmelden vom Verzeichnis)

Mit dieser Funktion beenden Sie die Verbindung zum Verzeichnis. Anschließend können Sie keine weiteren Verzeichnisoperationen mehr durchführen, bis Sie sich erneut anmelden.

Hinweis Hinweis

Verwenden mehrerer LDAP-Verbindungen in einem Anwendungsprogramm

Damit ein Anwendungsprogramm mehrere Verbindungen zu Verzeichnissen aufbauen und benutzen kann, können Sie Funktionsbaustein LDAP_CHECKOUT_CONNKEY benutzen, um eine bestehende Verbindung zu "parken". Der zurückgegebene Parameter CKEY muss vom Anwendungsprogramm gesichert werden.

Anschließend kann eine neue Verbindung mittels LDAP_SIMPLEBIND oder LDAP_SYSTEMBIND aufgebaut und benutzt werden.

Um zur alten Verbindung zurückzukehren, muss der Funktionsbaustein LDAP_CHECKIN_CONNKEY mit dem gespeicherten Wert von CKEY aufgerufen werden.

Ende des Hinweises
LDAP_OPTIONS (Auslesen/Ändern von Optionen der LDAP-Schnittstelle)

Mit dieser Funktion können Sie Optionswerte der betriebssystemseitigen LDAP-Schnittstelle auslesen oder ändern.

Die Funktionen LDAP_SIMPLEBIND und LDAP_SYSTEMBIND setzen die LDAP-Protokollversion bereits gemäß den Vorgaben aus dem Customizing, so dass die Verwendung von LDAP_OPTIONS nur in Ausnahmefällen erforderlich ist.

  • WRITEREAD: Dieser Parameter steuert, ob Optionen gelesen (R) oder geschrieben (W) werden sollen.

  • OPTIONS_IO: Eine Tabelle mit einer Zeile pro Option, die gelesen oder geschrieben werden soll. Geben Sie in Feld NUM1 die Optionsnummer anzugeben (siehe unten), zum Schreiben von Optionen (WRITEREAD = W) geben Sie in Feld NUM2 den zu setzenden Optionswert an. Nach erfolgreichem Aufruf der Funktion enthält das Feld NUM2 den gelesenen (R) oder gesetzten (W) Optionswert.

Die Ausgabetabelle kann weniger Zeilen als die Eingabetabelle besitzen. In diesem Fall hat der LDAP Connector Optionen gelöscht, welche entweder von der betriebssystemseitigen LDAP-Schnittstelle oder der Protokollversion nicht unterstützt werden.

Die derzeit unterstützten Optionen und die für sie zu verwendenden Werte für NUM1 sind:

  • 2: LDAP_OPT_DEREF

  • 3: LDAP_OPT_SIZELIMIT

  • 4: LDAP_OPT_TIMELIMIT

  • 8: LDAP_OPT_REFERRALS

  • 9: LDAP_OPT_RESTART

  • 17: LDAP_OPT_PROTOCOL_VERSION

  • 49: LDAP_OPT_ERROR_NUMBER

Bei den Optionsnamen handelt es sich um die Bezeichner aus den betriebssystemseitigen LDAP-Schnittstellen. Ihre Bedeutung und Wirksamkeit auf den verschiedenen Hardwareplattformen des LDAP Connector oder des Verzeichnisses entziehen sich der Verantwortung von SAP.