Wyświetlasz dokumentację Apigee Edge.
Zapoznaj się z dokumentacją Apigee X. info
Co
Zasady LDAP zapewniają:
- Uwierzytelnianie: dane logowania użytkownika podane w żądaniu są weryfikowane na podstawie danych logowania dostawcy LDAP. Zasady LDAP zapewniają dużą elastyczność w zakresie uwierzytelniania, umożliwiając używanie dowolnej wartości DN wraz z hasłem, nawet jeśli żądana wartość DN nie znajduje się w żądaniu. Załóżmy na przykład, że do uwierzytelniania musisz użyć adresu e-mail i hasła. Dostępne są te opcje:
- Jeśli adres e-mail znajduje się w żądaniu, możesz go po prostu użyć z hasłem do uwierzytelniania LDAP.
- Jeśli w żądaniu nie ma adresu e-mail, ale jest inny atrybut DN (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 i hasła do uwierzytelnienia.
- Wyszukiwanie nazwy wyróżniającej: oprócz uwierzytelniania możesz też użyć zasad 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. Pobrany DN jest przechowywany w zmiennej.
Używaj zasad LDAP, gdy dostęp do chronionych zasobów powinien być ograniczony do użytkowników dostawcy LDAP, takich jak administratorzy, użytkownicy organizacji i programiści, zwłaszcza gdy dostęp za pomocą tokena OAuth jest niepotrzebny lub zbyt złożony. Zasady te służą też do pobierania metadanych nazwy domeny do wykorzystania w przepływach proxy interfejsu API.
Możesz na przykład wywołać interfejs API tylko wtedy, gdy użytkownik zostanie uwierzytelniony w LDAP. Następnie możesz opcjonalnie pobrać atrybuty DN (nazwa domeny) użytkownika po pomyślnym uwierzytelnieniu.
Więcej informacji znajdziesz w tych artykułach:
- Zarządzanie domyślnymi zasadami haseł LDAP w przypadku zarządzania interfejsami API
- „Important information about your password policy” (Ważne informacje o zasadach dotyczących haseł) w Społeczności Apigee
Przykłady
Uwierzytelnianie za pomocą nazwy użytkownika / hasła
<Ldap name="4GLdapPo>licy<"
Ld>apRes<ourceldap1/Ld>apRe<source
Auth>enticati<on
UserName ref="request.he>ader.use<rname"/
Password ref=">request.<heade>r.passw<ord&qu>ot;/
< Scopesubtree/Scope
>< Bas>e<DN ref="apigee.baseDN"/B>aseDN< !-- default is> d<c=api>gee,dc=com --
/Authentication
/LdapTen przykład umożliwia uwierzytelnianie za pomocą dostawcy LDAP. Zasada przekazuje nazwę użytkownika i hasło z żądania do LDAP w celu uwierzytelnienia.
Uwierzytelnianie atrybutu nazwy wyróżniającej
<Ldap name="LdapPo>licy<"
Ld>apRes<ourceldap1/Ld>apRe<source
Auth>enticati<on
Password ref="request.he>ader.pas<sword">/
SearchQuerymail={<request.head>er.mail}</Sear>chQuery<
> Scopes<ubtree/Scope
BaseDN>< ref=&q>u<ot;apigee.baseDN"/BaseDN !-- >defau<lt is dc=apigee>,d<c=com> --
/Authentication
/LdapTa zasada pobiera DN użytkownika z adresem 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="LdapPo>licy&<quot; !-- using a custom LDAP p>rovid<er -- LdapConn>ectorClasscom.custom.ldap.<MyProvider/LdapConn>ector<Class Ld>apReso<urceMyLdap/Ld>apRes<ource<>/span> Searc<h BaseDN ref="><;apigee>.<baseDN"/BaseDN !-- default is> dc=apige<e,dc=com --> SearchQuerymail={<request.head>er.mail}/<SearchQuer>y Att<ributes > < Attrib>uteaddress/At<tribute > < Attr>ibutephone/At<tribute > < Attr>ibutetitl<e/Attribute> </Attr><ibutes> < Scope/S‘cope !-’- d>efaul<t is su>b<tree >-- /Search /Ldap
Ta zasada odwołuje się do niestandardowego dostawcy LDAP. Używa adresu e-mail w nagłówku żądania do identyfikacji użytkownika, a następnie pobiera adres, numer telefonu i tytuł użytkownika z LDAP. Pobrane atrybuty DN są przechowywane w zmiennej. Zobacz „Zmienne dotyczące konkretnych zasad”.
Aby wyszukiwać w LDAP i pobierać atrybuty DN, żądanie musi zawierać dane logowania administratora.
Odwołanie do elementu
Poniżej znajdziesz opisy elementów i atrybutów zasad LDAP.
|
Element |
Opis |
|---|---|
|
|
Element nadrzędny z atrybutem name, w którym możesz wpisać nazwę zasady. |
|
|
Jeśli używasz zasady LDAP z niestandardowym dostawcą LDAP (nie jest on dostarczany przez Apigee), podaj w pełni kwalifikowaną klasę łącznika LDAP.
Jest to klasa, w której zaimplementowano interfejs |
|
|
Wpisz nazwę środowiska zasobu LDAP. Więcej informacji znajdziesz w artykule Tworzenie zasobu LDAP. |
|
|
Podstawowy poziom LDAP, w którym znajdują się wszystkie Twoje dane. Na przykład w przypadku dostawcy LDAP Apigee wszystkie dane znajdują się w
|
|
|
|
|
Uwierzytelnianie |
|
|
|
Element nadrzędny dla sposobu uwierzytelniania, który wdrażasz. |
|
|
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 w żądaniu znajduje się nazwa użytkownika, ale chcesz uwierzytelnić użytkownika za pomocą atrybutu DN innego niż nazwa użytkownika, np. adresu e-mail, dodaj znak |
|
|
Pusty element, który przyjmuje jeden z tych atrybutów:
|
|
|
Jeśli chcesz uwierzytelniać użytkowników za pomocą atrybutu DN innego niż nazwa użytkownika, np. adresu e-mail, skonfiguruj zasady LDAP tak, aby pobierać z żądania atrybut DN (np. nazwę użytkownika), który jest używany do identyfikowania użytkownika w LDAP, pobierania adresu e-mail i uwierzytelniania użytkownika. Załóżmy na przykład, że LDAP definiuje atrybut „mail” do przechowywania adresu e-mail:
|
|
Szukaj |
|
|
|
Element nadrzędny dla implementowanego przez Ciebie działania związanego 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 zasady mogą teraz pobierać dodatkowe atrybuty nazwy wyróżniającej użytkownika za pomocą elementu Attributes. |
|
|
Użyj co najmniej 1 elementu Na przykład po tym, jak Wartości atrybutów to nazwy atrybutów DN 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 zasadom 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 (DN) – 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 do dalszego wykorzystania przez serwer proxy interfejsu API.
Tworzenie zasobu LDAP
Zasady LDAP korzystają 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
Szczegółowe informacje o zasobie LDAP (GET), jego aktualizowaniu (POST) i usuwaniu (DELETE):
/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="l>dap<1" >Conne<ction> Ho<sts !-- port is optional: defaults to 389 for ldap:// and 636 for l>daps://< -- Host >port=&q<uot;6>36&qu<ot;foo>.com/<Host />Hosts< SSLEna>b<ledfalse/SSLEnabled !-- optional, >defau<lts to >f<alse -- > < Version3/Version !-- optio>nal, <defaults to 3->- <Authentications>i<mple/Authentication !-- optional, only> simp<le supported -- > ConnectionPr<oviderjndi|unboundi>d</ConnectionProv>ider <!-- required >-- ServerSetTypesingle|<round robin|fa>i<lover/ServerSetType !-- not ap>plica<ble for jndi -- !-- If using a custom LDAP provider, the fully> qual<ified class: -- > LdapConnectorClasscom.cu<stom.ldap.MyProvide>r/L<dapConnecto>rCl<ass /Connection Connec>t<Pool enabled="true" !-- enabled is> opti<onal, d>efaul<ts to tr>u<e -- Timeout30000/Timeout !-- optional, in milliseco>nds; <if not >se<t, no ti>m<eout -- Maxsize50/Maxsize !-- optional; if >not s<et, no m>ax< connecti>o<ns -- Prefsize30/Prefsize !-- optiona>l; if< not set><, no pref> <size -- Initsize/Initsize !-- optional>; if <not set,>< defaults> <to 1 -- Protocol/Protocol !-- optional; if not s>et,< defaults to> <39;ss>l pla<in>' -- /ConnectPool A<dmi>n < DNcn=ma>nager,<dc=apigee>,dc<=com/D>N< Password>secret/Password /Admin /LdapResource
Przykład użycia curl: tworzenie zasobu LDAP
Poniższy 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:passwor<d -d \ 'LdapResourc>e nam<e="ld>ap1&quo<t; > Conne<ctio>n < Host>s < Hostf>oo.com/<Host > /Hos<ts SS>LEnable<dfalse/>S<SLEnable>d < Version3/Vers>ion < Authenticat>ionsimp<le/Authentication > Con<nectionProviderunbo>undid/C<onnectionProv>ider <ServerSetTyper>ound <robin/Serve>rSetT<ype /Connection Co>nnectPo<ol enab>led=&<quot;tru>e"< >Ti<meout300>00/Time<out > <Maxsize50>/Maxsiz<e ><Prefsize3>0/Prefs<ize >< Initsiz>e/Ini<tsize >Proto<col/P>rotocol< > /ConnectPool Admin < > DNcn=<manager,>dc=api<gee,dc=co>m/DN < >Pas<swordsecret/P>assword /Admin /LdapResource'
Kody odpowiedzi
Poniżej znajdziesz kody odpowiedzi HTML, które są zwracane przez zasady w przypadku powodzenia lub niepowodzenia:
- Sukces: 200
- Błąd: 401
Używanie niestandardowego dostawcy LDAP w Edge for Private Cloud
Korzystanie z niestandardowego dostawcy LDAP
Apigee Edge for Private Cloud ma dostawcę LDAP, który jest już skonfigurowany do interakcji z zasadami LDAP. Jeśli jednak używasz niestandardowego dostawcy LDAP, musisz włączyć obsługę zasad 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
<LdapConnectorClass>konfiguracji zasad (w następnych sekcjach) dodaj pełną 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.
Korzystanie z pakietu UnboundID LDAP SDK for Java
Z zasadami LDAP możesz używać pakietu UnboundID LDAP SDK, ale najpierw musisz pobrać wersję 2.3.1 i dodać ją do ścieżek klas każdego procesora wiadomości.
Aby używać pakietu UnboundID LDAP SDK z zasadami LDAP:
- Otwórz przeglądarkę i przejdź do repozytorium plików Sourceforge dla 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 dla 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ę katalogu za pomocą
-j, ale jest to opcjonalne. - Na każdym węźle procesora wiadomości:
- Skopiuj plik JAR do katalogu
/opt/apigee/edge-gateway/lib/thirdpartyprocesora wiadomości. - W razie potrzeby przyznaj użytkownikowi Apigee uprawnienia do pliku JAR, aby procesor wiadomości mógł uzyskać do niego dostęp.
- Ponownie uruchom procesor wiadomości:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Edge dodaje wszystkie biblioteki innych firm w katalogu
/opt/apigee/edge-gateway/lib/thirdpartydo ścieżki klasy. - Skopiuj plik JAR do katalogu
Zmienne przepływu
Poniżej znajdziesz zmienne zasad LDAP wypełniane przez 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ślnie zostanie użyty numer 1. Jeśli zasada zwraca adres, numer telefonu i adres e-mail, możesz pobrać pierwszy atrybut i jego 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 z wyników wyszukiwania, użyj tego kodu: ldap.policyName.search.result[3].attribute.address Jeśli atrybut miał wiele wartości (np. użytkownik ma kilka adresów e-mail), drugi adres e-mail możesz pobrać 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. |