LDAP-Richtlinie

<ph type="x-smartling-placeholder"></ph> Sie sehen die Dokumentation zu Apigee Edge.
Gehen Sie zur Apigee X-Dokumentation.
Weitere Informationen

Was

Die LDAP-Richtlinie bietet Folgendes:

  • Authentifizierung: Die in der Anfrage angegebenen Nutzeranmeldedaten werden überprüft. Anmeldedaten des LDAP-Anbieters zu vergleichen. Die LDAP-Richtlinie bietet Ihnen eine Menge Flexibilität -Authentifizierung, sodass Sie neben dem Passwort einen beliebigen DN-Wert verwenden können, auch wenn dieser DN-Wert nicht in der Anfrage enthalten ist. Beispiel: Sie müssen E-Mail-Adresse / Passwort für Authentifizierung. Folgende Optionen sind möglich: <ph type="x-smartling-placeholder">
      </ph>
    • Wenn die E-Mail-Adresse in der Anfrage enthalten ist, können Sie sie einfach mit dem Passwort für LDAP verwenden. Authentifizierung.
    • Ist die E-Mail-Adresse nicht in der Anfrage enthalten, aber ein anderes DN-Attribut (z. B. Telefonnummer) können Sie die Telefonnummer verwenden, um die entsprechende E-Mail von LDAP zu erhalten, und dann E-Mail / Passwort zur Authentifizierung.
  • DN-Suche (Distinguished Name): Zusätzlich zur Authentifizierung können Sie Sie verwenden die LDAP-Richtlinie auch, um ein Nutzerattribut in der Anfrage zu identifizieren, z. B. E-Mail und eine Abfrage durchführen, mit der andere DN-Attribute für diesen Nutzer vom LDAP abgerufen werden. Der abgerufene DN ist die in einer Variablen gespeichert sind.

Verwenden Sie die LDAP-Richtlinie, wenn der Zugriff auf geschützte Ressourcen auf Nutzer in Ihrem LDAP beschränkt werden soll z. B. Administratoren, Nutzer in der Organisation und Entwickler, insbesondere wenn Der Zugriff auf OAuth-Tokens ist entweder unnötig oder zu komplex. Die Richtlinie gilt auch für Abrufen von Domainnamen-Metadaten zur Verwendung in API-Proxy-Abläufen

Beispielsweise können Sie festlegen, dass ein API-Aufruf nur dann ausgeführt wird, wenn ein Nutzer erfolgreich authentifiziert wurde. im Vergleich zum LDAP, Anschließend können Sie optional DN-Attribute (Domain Name) für den Nutzer abrufen. die Authentifizierung erfolgreich war.

Weitere Informationen finden Sie unter:

Beispiele

Authentifizierung von 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>

Dieses Beispiel bietet eine Authentifizierung gegen einen LDAP-Anbieter. Die Richtlinie übergibt den Nutzernamen und das Passwort aus der Anfrage an LDAP zur Authentifizierung.

DN-Attribut-Authentifizierung

<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>

Diese Richtlinie ruft den DN des Nutzers mit der E-Mail-Adresse im Anfrageheader ab. authentifiziert den Nutzer mit dem im Anfrageheader angegebenen Passwort beim LDAP.

LDAP wird gesucht

<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. Dabei wird die E-Mail-Adresse in der Anfrage verwendet. , um den Nutzer zu identifizieren, und ruft dann Adresse, Telefonnummer und Titel des Nutzers von LDAP. Die abgerufenen DN-Attribute werden in einer Variablen gespeichert. Weitere Informationen finden Sie unter Variablen“.

Um LDAP zu suchen und DN-Attribute abzurufen, muss die Anfrage den Administrator enthalten Anmeldedaten.

Elementverweis

Im Folgenden finden Sie Beschreibungen der Elemente und Attribute der LDAP-Richtlinie.

Element

Beschreibung

Ldap

Übergeordnetes Element mit einem Namensattribut, in das Sie den Richtliniennamen eingeben können.

LdapConnectorClass

Bei Verwendung der LDAP-Richtlinie mit einem benutzerdefinierten LDAP Provider (nicht von Apigee bereitgestellt), geben Sie die voll qualifizierte LDAP-Connector-Klasse an. In dieser Klasse haben Sie das ExternalLdapConProvider von Apigee implementiert. .

LdapResource

Geben Sie den Umgebungsnamen der LDAP-Ressource ein. Weitere Informationen finden Sie unter Erstellen eines LDAP-Ressource.

BaseDN

Die Basisebene von LDAP, unter der alle Ihre Daten vorhanden sind. Beispiel: Der LDAP-Anbieter von Apigee, alle Daten liegen unter dc=apigee,dc=com.

  • ref: Gibt eine Flussvariable an, die den BaseDN-Wert enthält, z. B. apigee.baseDN. ref hat Vorrang vor einem expliziten BaseDN-Wert. Wenn Sie sowohl ref als auch value, hat ref Priorität. Wenn Ref nicht aufgelöst wird bei Runtime, wird der Wert verwendet.

Scope

  • object: Authentifizierung oder Suche erfolgt nur auf Basisebene von LDAP.
  • onelevel: Authentifizierung oder Suche erfolgt eine Ebene unterhalb der Basisebene
  • subtree (Standard): Authentifizierung oder Suche erfolgt auf Basisebene. und rekursiv unter der Basis liegt.

Authentifizierung

Authentication

Übergeordnetes Element für das von Ihnen implementierte Authentifizierungsverhalten.

UserName

Leeres Element, das eines der folgenden Attribute verwendet:

  • ref: Ein Verweis auf den Nutzernamen in der Anfrage, z. B. request.header.username
  • value: Nutzername selbst

Wenn Sie sich nicht mit dem Nutzernamen authentifizieren oder der Nutzername nicht im -Anforderung verwenden, müssen Sie dieses Element nicht angeben.

Wenn der Nutzername in der Anfrage enthalten ist, Sie aber einen Nutzer mit einem DN-Attribut authentifizieren möchten außer dem Nutzernamen, z. B. „E-Mail-Adresse“, eine SearchQuery enthalten, um die E-Mail-Adresse des Nutzers abzurufen die mit dem Passwort verknüpft sind. Die LDAP-Richtlinie verwendet den Nutzernamen, um den LDAP-Anbieter abzufragen für die entsprechende E-Mail-Adresse, die dann zur Authentifizierung verwendet wird.

Password

Leeres Element, das eines der folgenden Attribute verwendet:

  • ref: Ein Verweis auf das Passwort in der Anfrage, z. B. request.header.password
  • value: Das verschlüsselte Passwort selbst

SearchQuery

Wenn Sie sich mit einem anderen DN-Attribut als dem Nutzernamen authentifizieren möchten, z. B. email, die LDAP-Richtlinie so konfigurieren, dass ein DN-Attribut aus der Anfrage abgerufen wird (z. B. Nutzername), mit dem der Nutzer im LDAP identifiziert, die E-Mail abgerufen und die Nutzer.

Angenommen, LDAP definiert „E-Mail“ Attribut zum Speichern der E-Mail-Adresse:

<SearchQuery>mail={request.header.mail}</SearchQuery>

Suche

Search

Übergeordnetes Element für das von Ihnen implementierte Suchverhalten.

SearchQuery

Wenn Sie den Nutzer mit Metadaten in der Anfrage oder Antwort identifizieren, können Sie Folgendes verwenden: -Element zum Abrufen zusätzlicher DN-Attribute für den Nutzer aus dem LDAP. Wenn zum Beispiel der Parameter Anfrage die E-Mail-Adresse des Nutzers enthält und Ihr LDAP ein mail-Attribut für die E-Mail-Adressen der Nutzer speichern, verwenden Sie die folgende Einstellung:

<SearchQuery>mail={request.header.mail}</SearchQuery>

Diese Abfrage sucht im LDAP nach einer E-Mail-Adresse, die mit der E-Mail-Adresse in der Anfrage übereinstimmt, und der kann nun mithilfe der Attribute -Elements.

Attributes

Verwende mindestens ein <Attribute>-Element, um Identifizieren Sie die DN-Metadaten, die Sie für den Nutzer abrufen möchten. Mindestens ein Attribut ist erforderlich.

Beispiel: Nachdem SearchQuery den Nutzer identifiziert hat, wird der kann jetzt DN-Attribute für den Nutzer wie Adresse, Telefonnummer und Titel des Nutzers, wie im folgenden Beispiel gezeigt.

Attributwerte sind die in Ihrem LDAP definierten DN-Attributnamen.

<Attributes>
  <Attribute>address</Attribute>
  <Attribute>phone</Attribute>
  <Attribute>title</Attribute>
</Attributes>

Verwendungshinweise

Mit Apigee Edge for Private Cloud können Sie einen LDAP-Anbieter für API-Aufrufe verwenden. Mit dem LDAP können Anwendungen Anmeldedaten gegenüber Nutzern authentifizieren, die in LDAP gespeichert sind. Außerdem können Sie Distinguished Names (DNs) aus dem LDAP abzurufen, d. h. die Metadaten oder Attribute, die mit jeden Nutzer, z. B. E-Mail-Adresse, Adresse und Telefonnummer. Der zurückgegebene DN wird in einer Variablen für API-Proxy weiterzuverwenden.

LDAP-Ressource erstellen

Die LDAP-Richtlinie verwendet eine LDAP-Ressource, die Sie in Apigee Edge erstellen. Eine LDAP-Ressource stellt die Verbindungsinformationen zu Ihrem LDAP-Repository bereit.

Verwenden Sie zum Erstellen und Verwalten von LDAP-Ressourcen die folgende API und Nutzlast:

API

Erstellen (POST) Sie eine LDAP-Ressource oder eine Liste (GET) aller LDAP-Ressourcen:

/v1/organizations/org_name/environments/environment/ldapresources

Details zu (GET), Aktualisieren (POST) und Löschen (DELETE) einer LDAP-Ressource abrufen:

/v1/organizations/org_name/environments/environment/ldapresources/ldap_resource_name

Nutzlast

Es folgt ein Beispiel für eine XML-Nutzlast mit Nutzungskommentaren.

<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

Nachfolgend sind die HTML-Antwortcodes aufgeführt, die die Richtlinie bei Erfolg oder Misserfolg zurückgibt:

  • Erfolg: 200
  • Fehler: 401

Benutzerdefinierten LDAP-Anbieter in Edge für Private Cloud verwenden

Mit einem benutzerdefinierten LDAP-Anbieter

Apigee Edge for Private Cloud enthält einen LDAP-Anbieter, der bereits für mit der LDAP-Richtlinie interagieren. Wenn Sie jedoch einen benutzerdefinierten LDAP-Anbieter verwenden, müssen Sie den Anbieter, um die LDAP-Richtlinie zu unterstützen. Das geht so:

  1. 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();
    }
  2. Unter <LdapConnectorClass> der Richtlinienkonfiguration (nächste Abschnitte) fügen Sie den voll qualifizierten Klassennamen Ihres benutzerdefinierten LDAP-Anbieters hinzu.
  3. Laden Sie die Datei custom-ldap.jar_.zip herunter. Möglicherweise müssen Sie mit der rechten Maustaste klicken und Speichern unter auswählen.
  4. Entpacken Sie die Datei.
  5. Fügen Sie Ihrer Umgebung die Datei „custom-ldap.jar“ hinzu und achten Sie darauf, dass sie sich in Ihrem Klassenpfad befindet.
  6. Erstellen Sie eine Umgebungsressource für Ihren LDAP-Anbieter. Sie verwenden die Umgebungsressource Name im <LdapResource>-Element der LDAP-Richtlinie.

Mit der UnboundID LDAP SDK für Java

Sie können das UnboundID LDAP SDK mit der LDAP-Richtlinie verwenden, aber Sie müssen zuerst die Version herunterladen 2.3.1 und fügen Sie ihn jedem Klassenpfad Ihres Message Processor hinzu.

So verwenden Sie das UnboundID LDAP SDK mit der LDAP-Richtlinie:

  1. Öffnen Sie einen Browser und gehen Sie zum Sourceforge-Datei-Repository für das UnboundID LDAP SDK:
    https://sourceforge.net/projects/ldap-sdk/files/
  2. Suchen Sie Version 2.3.1 (SE oder Standard Edition) des SDK und laden Sie die ZIP-Datei herunter. für diese Version. Laden Sie beispielsweise „unboundid-ldapsdk-2.3.1-se.zip“ herunter.
  3. 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. Das Verzeichnis wird gelöscht. mit -j, obwohl dies optional ist.

  4. Auf jedem Message Processor-Knoten: <ph type="x-smartling-placeholder">
      </ph>
    1. Kopieren Sie die JAR-Datei in das /opt/apigee/edge-gateway/lib/thirdparty-Verzeichnis.
    2. Gewähren Sie dem Apigee-Nutzer gegebenenfalls die Berechtigung für die JAR-Datei, damit der Nachrichtenprozessor darauf zugreifen kann.
    3. Edge fügt alle Drittanbieterbibliotheken im /opt/apigee/edge-gateway/lib/thirdparty-Verzeichnis zum Klassenpfad hinzu.

    4. Starten Sie den Message Processor neu:
      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

Ablaufvariablen

Im Folgenden finden Sie die LDAP-Richtlinienvariablen, die durch SearchQuery ausgefüllt werden.

Variable

Beschreibung

ldap.policyName.execution.success

Nach dem Ausführen der Richtlinie enthält diese Flussvariable den Wert „true“ oder „false“ eingeben, je nach Ergebnis.

ldap.policyName.search.result[index].
  attribute.attrName[index]=value

Das flexible Format dieser Variablen, der Index in Insbesondere gilt: Mehrere Attribute sowie Attribute mit mehreren Werte. Der Index ist eine Zahl, die bei 1 beginnt. Wenn keine Indexnummer angegeben ist, wird der Standardwert Indexnummer 1 ist.

Wenn gemäß der Richtlinie die Adresse, die Telefonnummer und die E-Mail-Adresse zurückgegeben werden, können Sie das erste Attribut abrufen und einen Wert mit diesen Variablen:

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, würden Sie Folgendes verwenden:

ldap.policyName.search.result[3].attribute.address

Wenn ein Attribut mehrere Werte hatte (z. B. wenn ein Nutzer mehrere E-Mail-Adressen hat) Adressen) erhalten, würden Sie die zweite E-Mail-Adresse wie folgt aus den Ergebnissen abrufen:

ldap.policyName.search.result.attribute.mail[2]

Fehlercodes

Von Edge-Richtlinien zurückgegebene Fehler haben ein konsistentes 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.