Wyświetlasz dokumentację Apigee Edge.
Przejdź do
dokumentacji Apigee X. info
Co
Zasada LDAP zapewnia:
- Uwierzytelnianie: dane logowania użytkownika podane w żądaniu są weryfikowane
na podstawie danych logowania dostawcy LDAP. Zasada LDAP zapewnia dużą elastyczność w zakresie
uwierzytelniania, umożliwiając używanie dowolnej wartości nazwy wyróżniającej wraz z hasłem, nawet jeśli ta wartość
nie znajduje się w żądaniu. Załóżmy na przykład, że do uwierzytelniania musisz użyć adresu e-mail i hasła. Możliwe są te opcje:
- Jeśli adres e-mail znajduje się w żądaniu, możesz go użyć wraz z hasłem do uwierzytelnienia LDAP uwierzytelniania.
- Jeśli adres e-mail nie znajduje się w żądaniu, ale jest w nim inny atrybut nazwy wyróżniającej (np. numer telefonu), możesz użyć numeru telefonu, aby uzyskać odpowiedni adres e-mail z LDAP, a następnie użyć adresu e-mail / hasła do uwierzytelnienia.
- Wyszukiwanie nazwy wyróżniającej: oprócz uwierzytelniania możesz też użyć zasady LDAP, aby zidentyfikować w żądaniu atrybut użytkownika, np. adres e-mail, i wykonać zapytanie, które pobierze z LDAP inne atrybuty nazwy wyróżniającej tego użytkownika. Pobrana nazwa wyróżniająca jest przechowywana w zmiennej.
Użyj zasady LDAP, gdy dostęp do chronionych zasobów powinien być ograniczony do użytkowników dostawcy LDAP takich jak administratorzy, użytkownicy organizacji i deweloperzy, zwłaszcza gdy dostęp do tokena OAuth jest niepotrzebny lub zbyt obciążający. Zasada ta jest też przeznaczona do pobierania metadanych nazwy domeny do użycia w przepływach proxy interfejsu API.
Możesz na przykład skonfigurować wywołanie interfejsu API tak, aby było wykonywane tylko wtedy, gdy użytkownik zostanie pomyślnie uwierzytelniony w LDAP, a następnie opcjonalnie pobrać atrybuty nazwy wyróżniającej użytkownika po pomyślnym uwierzytelnieniu.
Więcej informacji znajdziesz w tych artykułach:
- Zarządzanie domyślną zasadą haseł LDAP na potrzeby zarządzania interfejsami API
- „Ważne informacje o zasadach haseł” w społeczności Apigee
Przykłady
Uwierzytelnianie za pomocą nazwy użytkownika/hasła
<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>Ten przykład pokazuje uwierzytelnianie u dostawcy LDAP. Zasada przekazuje nazwę użytkownika i hasło z żądania do LDAP w celu uwierzytelnienia.
Uwierzytelnianie za pomocą atrybutu nazwy wyróżniającej
<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>Ta zasada pobiera nazwę wyróżniającą użytkownika za pomocą adresu e-mail w nagłówku żądania, a następnie uwierzytelnia użytkownika w LDAP za pomocą hasła podanego w nagłówku żądania.
Wyszukiwanie w LDAP
<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>
Ta zasada odwołuje się do niestandardowego dostawcy LDAP. Używa adresu e-mail w nagłówku żądania do identyfikowania użytkownika, a następnie pobiera z LDAP adres, numer telefonu i stanowisko użytkownika. Pobrane atrybuty nazwy wyróżniającej są przechowywane w zmiennej. Zobacz "Zmienne specyficzne dla zasad zmienne".
Aby wyszukiwać w LDAP i pobierać atrybuty nazwy wyróżniającej, żądanie musi zawierać dane logowania administratora.
Dokumentacja elementów
Poniżej znajdziesz opisy elementów i atrybutów zasady LDAP.
|
Element |
Opis |
|---|---|
|
|
Element nadrzędny z atrybutem name (nazwa), w którym możesz wpisać nazwę zasady. |
|
|
Jeśli używasz zasady LDAP z niestandardowym dostawcą LDAP (nieudostępnianym przez Apigee), określ w pełni kwalifikowaną klasę oprogramowania sprzęgającego LDAP.
Jest to klasa, w której zaimplementowano interfejs |
|
|
Wpisz nazwę środowiska zasobu LDAP. Więcej informacji znajdziesz w artykule Create an LDAP resource. |
|
|
Podstawowy poziom LDAP, pod którym znajdują się wszystkie Twoje dane. Na przykład w
dostawcy LDAP Apigee wszystkie dane znajdują się pod adresem
|
|
|
|
|
Uwierzytelnianie |
|
|
|
Element nadrzędny dla implementowanego przez Ciebie sposobu uwierzytelniania. |
|
|
Pusty element, który przyjmuje jeden z tych atrybutów:
Jeśli nie uwierzytelniasz się za pomocą nazwy użytkownika lub jeśli nazwa użytkownika nie jest uwzględniona w żądaniu, nie musisz uwzględniać tego elementu. Jeśli nazwa użytkownika znajduje się w żądaniu, ale chcesz uwierzytelnić użytkownika za pomocą atrybutu nazwy wyróżniającej
innego niż nazwa użytkownika, np. adres e-mail, dodaj element |
|
|
Pusty element, który przyjmuje jeden z tych atrybutów:
|
|
|
Jeśli chcesz uwierzytelniać się za pomocą atrybutu nazwy wyróżniającej innego niż nazwa użytkownika, np. adres e-mail, skonfiguruj zasadę LDAP tak, aby pobierała z żądania atrybut nazwy wyróżniającej (np. nazwę użytkownika), który jest używany do identyfikowania użytkownika w LDAP, pobierania adresu e-mail i uwierzytelniania użytkownika. Na przykład, jeśli LDAP definiuje atrybut „mail” do przechowywania adresu e-mail:
|
|
Szukaj |
|
|
|
Element nadrzędny dla implementowanych przez Ciebie zachowań związanych z wyszukiwaniem. |
|
|
Identyfikując użytkownika za pomocą metadanych w żądaniu lub odpowiedzi, możesz użyć tego
elementu do pobrania z LDAP dodatkowych atrybutów nazwy wyróżniającej użytkownika. Jeśli na przykład żądanie zawiera adres e-mail użytkownika, a LDAP definiuje atrybut
To zapytanie wyszukuje w LDAP adres e-mail pasujący do adresu e-mail w żądaniu, a zasada może teraz pobrać dodatkowe atrybuty nazwy wyróżniającej tego użytkownika za pomocą elementu Attributes (Atrybuty). |
|
|
Użyj co najmniej 1 elementu Na przykład po tym, jak element Wartości atrybutów to nazwy atrybutów nazwy wyróżniającej zdefiniowane w LDAP. <Attributes> <Attribute>address</Attribute> <Attribute>phone</Attribute> <Attribute>title</Attribute> </Attributes> |
Zastosowanie
Apigee Edge for Private Cloud umożliwia korzystanie z dostawcy LDAP w wywołaniach interfejsu API. Dzięki zasadzie LDAP aplikacje mogą uwierzytelniać dane logowania na podstawie użytkowników przechowywanych w LDAP, a Ty możesz pobierać z LDAP nazwy wyróżniające – metadane lub atrybuty powiązane z każdym użytkownikiem, takie jak adres e-mail, adres i numer telefonu. Zwrócona nazwa wyróżniająca jest przechowywana w zmiennej, która może być używana przez proxy interfejsu API.
Tworzenie zasobu LDAP
Zasada LDAP korzysta z zasobu LDAP utworzonego w Apigee Edge. Zasób LDAP zawiera informacje o połączeniu z repozytorium LDAP.
Aby tworzyć zasoby LDAP i nimi zarządzać, użyj tego interfejsu API i ładunku:
Interfejs API
Utwórz (POST) zasób LDAP lub wyświetl listę (GET) wszystkich zasobów LDAP:
/v1/organizations/org_name/environments/environment/ldapresources
Pobierz szczegóły (GET), zaktualizuj (POST) lub usuń (DELETE) zasób LDAP:
/v1/organizations/org_name/environments/environment/ldapresources/ldap_resource_name
Ładunek
Poniżej znajdziesz przykładowy ładunek XML z komentarzami dotyczącymi użycia.
<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>
Przykład polecenia curl: tworzenie zasobu LDAP
Ten przykład tworzy zasób LDAP o nazwie ldap1.
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>'
Kody odpowiedzi
Oto kody odpowiedzi HTML, które zasada zwraca w przypadku powodzenia lub niepowodzenia:
- Sukces: 200
- Błąd: 401
Używanie niestandardowego dostawcy LDAP w Edge for Private Cloud
Używanie niestandardowego dostawcy LDAP
Apigee Edge for Private Cloud zawiera dostawcę LDAP, który jest już skonfigurowany do współpracy z zasadą LDAP. Jeśli jednak używasz niestandardowego dostawcy LDAP, musisz włączyć obsługę zasady LDAP. Aby to zrobić:
- W klasie dostawcy LDAP zaimplementuj interfejs
ExternalLdapConProvider.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(); } - W elemencie
<LdapConnectorClass>konfiguracji zasady (następne sekcje), dodaj w pełni kwalifikowaną nazwę klasy niestandardowego dostawcy LDAP. - Pobierz ten plik: custom-ldap.jar_.zip. (Może być konieczne kliknięcie prawym przyciskiem myszy i wybranie opcji Zapisz jako).
- Rozpakuj go.
- Dodaj plik custom-ldap.jar do środowiska i upewnij się, że znajduje się on w ścieżce klasy.
- Utwórz zasób środowiska dla dostawcy LDAP. Nazwę zasobu środowiska użyjesz w elemencie
<LdapResource>zasady LDAP.
Używanie pakietu UnboundID LDAP SDK for Java
Możesz używać pakietu UnboundID LDAP SDK z zasadą LDAP, ale najpierw musisz pobrać wersję 2.3.1 i dodać ją do ścieżki klasy każdego procesora wiadomości.
Aby używać pakietu UnboundID LDAP SDK z zasadą LDAP:
- Otwórz przeglądarkę i przejdź do repozytorium plików Sourceforge pakietu UnboundID LDAP SDK:
https://sourceforge.net/projects/ldap-sdk/files/
- Znajdź wersję 2.3.1 (SE lub Standard Edition) pakietu SDK i pobierz plik ZIP tej wersji. Na przykład pobierz plik „unboundid-ldapsdk-2.3.1-se.zip”.
- Wyodrębnij plik JAR z pliku ZIP pakietu SDK, jak pokazano w tym przykładzie:
unzip -j -d ~/tmp ~/Downloads/unboundid-ldapsdk-2.3.1-se.zip unboundid-ldapsdk-2.3.1-se/unboundid-ldapsdk-se.jar
To polecenie wyodrębnia tylko plik JAR do katalogu ~/tmp. Usuwa strukturę katalogów za pomocą opcji
-j, ale jest to opcjonalne. - Na każdym węźle procesora komunikatów:
- Skopiuj plik JAR do katalogu procesora wiadomości
/opt/apigee/edge-gateway/lib/thirdparty. - W razie potrzeby przyznaj użytkownikowi Apigee uprawnienia do pliku JAR, aby procesor wiadomości mógł uzyskać do niego dostęp.
- Uruchom ponownie procesor komunikatów:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Edge dodaje do ścieżki klasy wszystkie biblioteki innych firm w katalogu
/opt/apigee/edge-gateway/lib/thirdparty. - Skopiuj plik JAR do katalogu procesora wiadomości
Zmienne przepływu
Oto zmienne zasady LDAP wypełniane przez element SearchQuery.
|
Zmienna |
Opis |
|---|---|
ldap.policyName.execution.success |
Po wykonaniu zasady ta zmienna przepływu zawiera wartość „true” lub „false”, w zależności od wyniku. |
ldap.policyName.search.result[index]. attribute.attrName[index]=value |
Elastyczny format tej zmiennej, a w szczególności indeks, uwzględnia wiele atrybutów, a także atrybuty z wieloma wartościami. Indeks to liczba zaczynająca się od 1. Jeśli nie podasz numeru indeksu, domyślny numer indeksu to 1. Jeśli zasada zwraca adres, numer telefonu i adres e-mail, możesz pobrać pierwszy atrybut i wartość za pomocą tych zmiennych: ldap.policyName.search.result.attribute.address ldap.policyName.search.result.attribute.phone ldap.policyName.search.result.attribute.email Jeśli chcesz pobrać trzeci atrybut adresu w wynikach wyszukiwania, użyj tego: ldap.policyName.search.result[3].attribute.address Jeśli atrybut ma wiele wartości (np. użytkownik ma kilka adresów e-mail adresów), możesz pobrać drugi adres e-mail z wyników w ten sposób: ldap.policyName.search.result.attribute.mail[2] |
Kody błędów
Błędy zwracane przez zasady Edge mają spójny format opisany w dokumentacji kodów błędów.
Ta zasada używa tych kodów błędów:
| Kod błędu | przekaz, |
|---|---|
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. |