Sie lesen gerade die Dokumentation zu Apigee Edge.
Apigee X-Dokumentation aufrufen. info
Was
Die LDAP-Richtlinie bietet:
- Authentifizierung: Die im Antrag angegebenen Nutzeranmeldedaten werden mit den Anmeldedaten im LDAP-Anbieter abgeglichen. Die LDAP-Richtlinie bietet Ihnen viel Flexibilität bei der Authentifizierung. Sie können jeden DN-Wert zusammen mit dem Passwort verwenden, auch wenn dieser DN-Wert nicht in der Anfrage enthalten ist. Angenommen, Sie müssen für die Authentifizierung E‑Mail-Adresse und Passwort verwenden. Folgende Optionen sind möglich:
- Wenn die E-Mail-Adresse in der Anfrage enthalten ist, können Sie sie einfach zusammen mit dem Passwort für die LDAP-Authentifizierung verwenden.
- Wenn die E-Mail-Adresse nicht in der Anfrage enthalten ist, aber ein anderes DN-Attribut (z. B. die Telefonnummer), können Sie die Telefonnummer verwenden, um die entsprechende E-Mail-Adresse aus LDAP abzurufen und sich dann mit der E-Mail-Adresse und dem Passwort zu authentifizieren.
- Suche nach Distinguished Name (DN): Neben der Authentifizierung können Sie die LDAP-Richtlinie auch verwenden, um ein Nutzerattribut in der Anfrage zu identifizieren, z. B. die E-Mail-Adresse, und eine Abfrage auszuführen, mit der andere DN-Attribute für diesen Nutzer aus LDAP abgerufen werden. Der abgerufene DN wird in einer Variablen gespeichert.
Verwenden Sie die LDAP-Richtlinie, wenn der Zugriff auf geschützte Ressourcen auf Nutzer in Ihrem LDAP-Anbieter beschränkt werden soll, z. B. auf Ihre Administratoren, Organisationsnutzer und Entwickler. Das ist insbesondere dann sinnvoll, wenn der Zugriff über OAuth-Tokens entweder unnötig oder zu aufwendig ist. Die Richtlinie ist auch für das Abrufen von Metadaten für Domainnamen zur Verwendung in API-Proxy-Abläufen konzipiert.
So kann beispielsweise ein API-Aufruf nur ausgeführt werden, wenn ein Nutzer erfolgreich über LDAP authentifiziert wurde. Anschließend können optional DN-Attribute (Domain Name) für den Nutzer abgerufen werden.
Weitere Informationen finden Sie unter:
- Standard-LDAP-Passwortrichtlinie für die API-Verwaltung verwalten
- Wichtige Informationen zu Ihrer Passwortrichtlinie in der Apigee-Community
Beispiele
Authentifizierung mit Nutzername/Passwort
<Ldap name="4GLdapPolicy">
<LdapResource>ldap1</LdapResource>
<Authentication>
<UserName ref="request.header.username"/>
<Password ref="request.header.password"/>
<Scope>subtree</Scope>
<BaseDN ref="apigee.baseDN"></BaseDN> <!-- default is dc=apigee,dc=com -->
</Authentication>
</Ldap>In diesem Beispiel wird die Authentifizierung bei einem LDAP-Anbieter gezeigt. Die Richtlinie übergibt den Nutzernamen und das Passwort aus der Anfrage zur Authentifizierung an LDAP.
Authentifizierung mit DN-Attribut
<Ldap name="LdapPolicy">
<LdapResource>ldap1</LdapResource>
<Authentication>
<Password ref="request.header.password"/>
<SearchQuery>mail={request.header.mail}</SearchQuery>
<Scope>subtree</Scope>
<BaseDN ref="apigee.baseDN"></BaseDN> <!-- default is dc=apigee,dc=com -->
</Authentication>
</Ldap>Mit dieser Richtlinie wird der DN des Nutzers mit der E-Mail-Adresse im Anforderungsheader abgerufen. Anschließend wird der Nutzer mit dem im Anforderungsheader angegebenen Passwort bei LDAP authentifiziert.
LDAP durchsuchen
<Ldap name="LdapPolicy"> <!-- using a custom LDAP provider --> <LdapConnectorClass>com.custom.ldap.MyProvider</LdapConnectorClass> <LdapResource>MyLdap</LdapResource> <Search> <BaseDN ref="apigee.baseDN"></BaseDN> <!-- default is dc=apigee,dc=com --> <SearchQuery>mail={request.header.mail}</SearchQuery> <Attributes> <Attribute>address</Attribute> <Attribute>phone</Attribute> <Attribute>title</Attribute> </Attributes> <Scope></Scope> <!-- default is ‘subtree’ --> </Search> </Ldap>
Diese Richtlinie verweist auf einen benutzerdefinierten LDAP-Anbieter. Die E-Mail-Adresse im Anfrageheader wird verwendet, um den Nutzer zu identifizieren. Anschließend werden die Adresse, Telefonnummer und der Titel des Nutzers aus LDAP abgerufen. Die abgerufenen DN-Attribute werden in einer Variablen gespeichert. Weitere Informationen finden Sie unter „Richtlinienspezifische Variablen“.
Wenn Sie LDAP durchsuchen und DN-Attribute abrufen möchten, muss die Anfrage Administratoranmeldedaten enthalten.
Elementverweis
Im Folgenden werden die Elemente und Attribute der LDAP-Richtlinie beschrieben.
|
Element |
Description |
|---|---|
|
|
Übergeordnetes Element mit einem Namensattribut, in das Sie den Richtliniennamen eingeben können. |
|
|
Wenn Sie die LDAP-Richtlinie mit einem benutzerdefinierten LDAP-Anbieter verwenden, der nicht von Apigee bereitgestellt wird, geben Sie die vollständig qualifizierte LDAP-Connector-Klasse an.
Das ist die Klasse, in der Sie die |
|
|
Geben Sie den Umgebungsnamen der LDAP-Ressource ein. Weitere Informationen finden Sie unter LDAP-Ressource erstellen. |
|
|
Die Basisebene von LDAP, unter der sich alle Ihre Daten befinden. Im LDAP-Anbieter von Apigee befinden sich beispielsweise alle Daten unter
|
|
|
|
|
Authentifizierung |
|
|
|
Übergeordnetes Element für das von Ihnen implementierte Authentifizierungsverhalten. |
|
|
Leeres Element, das eines der folgenden Attribute verwendet:
Wenn Sie sich nicht mit einem Nutzernamen authentifizieren oder der Nutzername nicht in der Anfrage enthalten ist, müssen Sie dieses Element nicht einfügen. Wenn der Nutzername in der Anfrage enthalten ist, Sie aber einen Nutzer mit einem anderen DN-Attribut als dem Nutzernamen authentifizieren möchten, z. B. mit der E-Mail-Adresse, fügen Sie |
|
|
Leeres Element, das eines der folgenden Attribute verwendet:
|
|
|
Wenn Sie die Authentifizierung mit einem anderen DN-Attribut als dem Nutzernamen durchführen möchten, z. B. mit der E-Mail-Adresse, konfigurieren Sie die LDAP-Richtlinie so, dass ein DN-Attribut aus der Anfrage abgerufen wird (z. B. der Nutzername), das zur Identifizierung des Nutzers in LDAP verwendet wird. Anschließend wird die E-Mail-Adresse abgerufen und der Nutzer authentifiziert. Angenommen, in LDAP ist ein Attribut „mail“ zum Speichern von E-Mail-Adressen definiert:
|
|
Suche |
|
|
|
Übergeordnetes Element für das Suchverhalten, das Sie implementieren. |
|
|
Wenn Sie den Nutzer anhand von Metadaten in der Anfrage oder Antwort identifizieren, können Sie mit diesem Element zusätzliche DN-Attribute für den Nutzer aus LDAP abrufen. Wenn die Anfrage beispielsweise die E-Mail-Adresse des Nutzers enthält und in Ihrem LDAP-Verzeichnis ein
Mit dieser Abfrage wird in LDAP nach einer E-Mail-Adresse gesucht, die mit der E-Mail-Adresse in der Anfrage übereinstimmt. Die Richtlinie kann nun mit dem Element „Attributes“ zusätzliche DN-Attribute für diesen Nutzer abrufen. |
|
|
Verwenden Sie ein oder mehrere Nachdem Attributwerte sind die DN-Attributnamen, die in Ihrem LDAP definiert sind. <Attributes> <Attribute>address</Attribute> <Attribute>phone</Attribute> <Attribute>title</Attribute> </Attributes> |
Verwendungshinweise
Mit Apigee Edge for Private Cloud können Sie einen LDAP-Anbieter in API-Aufrufen verwenden. Mit der LDAP-Richtlinie können Anwendungen Anmeldedaten für Nutzer authentifizieren, die in LDAP gespeichert sind. Außerdem können Sie Distinguished Names (DNs) aus LDAP abrufen – die Metadaten oder Attribute, die jedem Nutzer zugeordnet sind, z. B. E-Mail-Adresse, Adresse und Telefonnummer. Der zurückgegebene DN wird in einer Variablen gespeichert, die vom API-Proxy weiter verwendet werden kann.
LDAP-Ressource erstellen
Die LDAP-Richtlinie verwendet eine LDAP-Ressource, die Sie in Apigee Edge erstellen. Eine LDAP-Ressource enthält die Verbindungsinformationen für Ihr LDAP-Repository.
Verwenden Sie die folgende API und Nutzlast, um LDAP-Ressourcen zu erstellen und zu verwalten:
API
Erstellen Sie (POST) eine LDAP-Ressource oder listen Sie (GET) alle LDAP-Ressourcen auf:
/v1/organizations/org_name/environments/environment/ldapresources
Details für (GET), Update (POST) und Delete (DELETE) einer LDAP-Ressource abrufen:
/v1/organizations/org_name/environments/environment/ldapresources/ldap_resource_name
Nutzlast
Im Folgenden finden Sie eine Beispiel-XML-Nutzlast mit Hinweisen zur Verwendung.
<LdapResource name="ldap1"> <Connection> <Hosts> <!-- port is optional: defaults to 389 for ldap:// and 636 for ldaps:// --> <Host port="636">foo.com</Host> </Hosts> <SSLEnabled>false</SSLEnabled> <!-- optional, defaults to false --> <Version>3</Version> <!-- optional, defaults to 3--> <Authentication>simple</Authentication> <!-- optional, only simple supported --> <ConnectionProvider>jndi|unboundid</ConnectionProvider> <!-- required --> <ServerSetType>single|round robin|failover</ServerSetType> <!-- not applicable for jndi --> <!-- If using a custom LDAP provider, the fully qualified class: --> <LdapConnectorClass>com.custom.ldap.MyProvider</LdapConnectorClass> </Connection> <ConnectPool enabled="true"> <!-- enabled is optional, defaults to true --> <Timeout>30000</Timeout> <!-- optional, in milliseconds; if not set, no timeout --> <Maxsize>50</Maxsize> <!-- optional; if not set, no max connections --> <Prefsize>30</Prefsize> <!-- optional; if not set, no pref size --> <Initsize></Initsize> <!-- optional; if not set, defaults to 1 --> <Protocol></Protocol> <!-- optional; if not set, defaults to 'ssl plain' --> </ConnectPool> <Admin> <DN>cn=manager,dc=apigee,dc=com</DN> <Password>secret</Password> </Admin> </LdapResource>
curl-Beispiel: LDAP-Ressource erstellen
Im folgenden Beispiel wird eine LDAP-Ressource mit dem Namen ldap1 erstellt.
curl -X POST -H "Content-Type: application/xml" \ https://api.enterprise.apigee.com/v1/organizations/myorg/environments/test/ldapresources \ -u apigee_email:password -d \ '<LdapResource name="ldap1"> <Connection> <Hosts> <Host>foo.com</Host> </Hosts> <SSLEnabled>false</SSLEnabled> <Version>3</Version> <Authentication>simple</Authentication> <ConnectionProvider>unboundid</ConnectionProvider> <ServerSetType>round robin</ServerSetType> </Connection> <ConnectPool enabled="true"> <Timeout>30000</Timeout> <Maxsize>50</Maxsize> <Prefsize>30</Prefsize> <Initsize></Initsize> <Protocol></Protocol> </ConnectPool> <Admin> <DN>cn=manager,dc=apigee,dc=com</DN> <Password>secret</Password> </Admin> </LdapResource>'
Antwortcodes
Im Folgenden finden Sie die HTML-Antwortcodes, die von der Richtlinie bei Erfolg oder Fehler zurückgegeben werden:
- Erfolg: 200
- Fehler: 401
Benutzerdefinierten LDAP-Anbieter in Edge for Private Cloud verwenden
Benutzerdefinierten LDAP-Anbieter verwenden
Apigee Edge for Private Cloud enthält einen LDAP-Anbieter, der bereits für die Interaktion mit der LDAP-Richtlinie konfiguriert ist. Wenn Sie jedoch einen benutzerdefinierten LDAP-Anbieter verwenden, müssen Sie den Anbieter so konfigurieren, dass er die LDAP-Richtlinie unterstützt. Gehen Sie dazu so vor:
- Implementieren Sie in Ihrer LDAP-Anbieterklasse die
ExternalLdapConProvider-Schnittstelle.public interface ExternalLdapConProvider { void doAuthentication(LdapBean LlapBean, String userDN, String password, String baseDN); void doSearchAndAuthentication(LdapBean LlapBean, String password, String baseDN, String query, int scope); Collection<Map<String, String[]>> doSearch(LdapBean LlapBean, String query, String baseDN, Collection<String> requiredAttributes, int scope); void closeConnections(); } - Fügen Sie in der
<LdapConnectorClass>der Richtlinienkonfiguration (nächste Abschnitte) den vollständig qualifizierten Klassennamen Ihres benutzerdefinierten LDAP-Anbieters ein. - Laden Sie die Datei custom-ldap.jar_.zip herunter. Möglicherweise müssen Sie mit der rechten Maustaste klicken und Speichern unter auswählen.
- Entpacken Sie die Datei.
- Fügen Sie die Datei „custom-ldap.jar“ Ihrer Umgebung hinzu und achten Sie darauf, dass sie sich in Ihrem Klassenpfad befindet.
- Erstellen Sie eine Umgebungsressource für Ihren LDAP-Anbieter. Sie verwenden den Namen der Umgebungsressource im
<LdapResource>-Element der LDAP-Richtlinie.
UnboundID LDAP SDK für Java verwenden
Sie können das UnboundID LDAP SDK mit der LDAP-Richtlinie verwenden. Dazu müssen Sie zuerst Version 2.3.1 herunterladen und sie den Klassenpfaden jedes Message Processors hinzufügen.
So verwenden Sie das UnboundID LDAP SDK mit der LDAP-Richtlinie:
- Öffnen Sie einen Browser und rufen Sie das Sourceforge-Dateirepository für das UnboundID LDAP SDK auf:
https://sourceforge.net/projects/ldap-sdk/files/
- Suchen Sie nach Version 2.3.1 (SE oder Standard Edition) des SDK und laden Sie die ZIP-Datei für diese Version herunter. Laden Sie beispielsweise „unboundid-ldapsdk-2.3.1-se.zip“ herunter.
- Extrahieren Sie die JAR-Datei aus der SDK-ZIP-Datei, wie im folgenden Beispiel gezeigt:
unzip -j -d ~/tmp ~/Downloads/unboundid-ldapsdk-2.3.1-se.zip unboundid-ldapsdk-2.3.1-se/unboundid-ldapsdk-se.jar
Mit diesem Befehl wird nur die JAR-Datei in das Verzeichnis „~/tmp“ extrahiert. Die Verzeichnisstruktur mit
-jwird entfernt. Das ist jedoch optional. - Auf jedem Message Processor-Knoten:
- Kopieren Sie die JAR-Datei in das Verzeichnis
/opt/apigee/edge-gateway/lib/thirdpartydes Message Processors. - Erteilen Sie dem Apigee-Nutzer bei Bedarf die Berechtigung für die JAR-Datei, damit der Message Processor darauf zugreifen kann.
- Starten Sie den Message Processor neu:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Edge fügt alle Drittanbieterbibliotheken im Verzeichnis
/opt/apigee/edge-gateway/lib/thirdpartydem Klassenpfad hinzu. - Kopieren Sie die JAR-Datei in das Verzeichnis
Ablaufvariablen
Im Folgenden finden Sie die LDAP-Richtlinienvariablen, die von einem SearchQuery ausgefüllt werden.
|
Variable |
Description |
|---|---|
ldap.policyName.execution.success |
Nach der Ausführung der Richtlinie enthält diese Ablaufvariable je nach Ergebnis den Wert „true“ oder „false“. |
ldap.policyName.search.result[index]. attribute.attrName[index]=value |
Das flexible Format dieser Variablen, insbesondere des Index, berücksichtigt mehrere Attribute sowie Attribute mit mehreren Werten. Der Index ist eine Zahl, die mit 1 beginnt. Wenn keine Indexnummer angegeben wird, ist die Standardindexnummer 1. Wenn die Richtlinie Adresse, Telefonnummer und E-Mail-Adresse zurückgibt, können Sie das erste Attribut und den ersten Wert mit diesen Variablen abrufen: ldap.policyName.search.result.attribute.address ldap.policyName.search.result.attribute.phone ldap.policyName.search.result.attribute.email Wenn Sie das dritte Adressattribut in den Suchergebnissen abrufen möchten, verwenden Sie Folgendes: ldap.policyName.search.result[3].attribute.address Wenn ein Attribut mehrere Werte hat (z. B. wenn ein Nutzer mehrere E-Mail-Adressen hat), rufen Sie die zweite E-Mail-Adresse aus den Ergebnissen so ab: ldap.policyName.search.result.attribute.mail[2] |
Fehlercodes
Von Edge-Richtlinien zurückgegebene Fehler folgen einem konsistenten Format, wie in der Fehlercode-Referenz beschrieben.
Für diese Richtlinie werden die folgenden Fehlercodes verwendet:
| Fehlercode | die Botschaft und |
|---|---|
InvalidAttributeName |
Invalid attribute name {0}. |
InvalidSearchBase |
Search base can not be empty. |
InvalidValueForPassword |
Invalid value for password field. It can not be empty. |
InvalidSearchScope |
Invalid scope {0}. Allowed scopes are {1}. |
InvalidUserCredentials |
Invalid user credentials. |
InvalidExternalLdapReference |
Invalid external ldap reference {0}. |
LdapResourceNotFound |
Ldap resource {0} not found. |
BaseDNRequired |
Base DN required. |
OnlyReferenceOrValueIsAllowed |
Only value or reference is allowed for {0}. |
AttributesRequired |
At least one attribute required for search action. |
UserNameIsNull |
User name is null. |
SearchQueryAndUserNameCannotBePresent |
Both search query and username can not be present in the authentication action.
Please specify either one of them. |