Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
Co
Zasada LDAP zapewnia:
- Uwierzytelnianie: sprawdzane są dane logowania użytkownika podane w żądaniu.
z danymi logowania u dostawcy LDAP. Zasady LDAP zapewniają dużą elastyczność
uwierzytelnianie, dzięki czemu można używać dowolnej wartości nazwy wyróżniającej wraz z hasłem, nawet jeśli ta wartość
w żądaniu nie ma. Na przykład załóżmy, że chcesz użyć adresu e-mail / hasła do
uwierzytelnianie. Oto możliwe opcje:
- Jeśli w żądaniu znajduje się adres e-mail, możesz po prostu użyć go z hasłem do LDAP. uwierzytelnianie.
- Jeśli w żądaniu nie ma adresu e-mail, ale jest inny atrybut nazwy wyróżniającej (na przykład 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ło do uwierzytelnienia.
- Wyszukiwanie według nazwy wyróżniającej: oprócz uwierzytelniania możesz na używając zasady LDAP do zidentyfikowania atrybutu użytkownika w żądaniu, takiego jak adres e-mail, wykonaj zapytanie, które pobierze z LDAP inne atrybuty nazwy wyróżniającej dla danego użytkownika. Pobrana nazwa wyróżniająca to przechowywanych w zmiennej.
Użyj zasady LDAP, gdy dostęp do zabezpieczonych zasobów powinien być ograniczony do użytkowników w LDAP (np. administratorzy, użytkownicy w organizacji i deweloperzy) Dostęp z użyciem tokena OAuth jest zbędny lub zbyt duży. Te zasady mają również zastosowanie pobierania metadanych nazwy domeny do wykorzystania w przepływach serwera proxy interfejsu API.
Na przykład wywołanie interfejsu API może być wykonywane tylko po pomyślnym uwierzytelnieniu użytkownika w związku z LDAP. a następnie opcjonalnie pobrać atrybuty DN (Nazwa domeny) dla użytkownika po uwierzytelnianie się powiedzie.
Dodatkowe informacje:
- Zarządzanie domyślne zasady haseł LDAP do zarządzania interfejsami API
- „Ważne informacje na temat zasad dotyczących haseł” w Społeczność Apigee
Przykłady
Uwierzytelnianie przy użyciu nazwy użytkownika i 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 oferuje 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="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 wraz z adresem e-mail w nagłówku żądania, a następnie: uwierzytelnia użytkownika w katalogu LDAP przy użyciu hasła podanego w nagłówku żądania.
Przeszukiwanie 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 odnosi się do niestandardowego dostawcy LDAP. Używa adresu e-mail podanego w żądaniu w nagłówku do identyfikacji użytkownika, a następnie pobiera adres, numer telefonu i tytuł użytkownika LDAP. Pobrane atrybuty nazwy wyróżniającej są przechowywane w zmiennej. Więcej informacji znajdziesz w sekcji „Zależnie od zasad” ”.
Aby można było wyszukać katalog LDAP i pobrać atrybuty DN, żądanie musi zawierać nazwę administratora dane logowania.
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 należy wpisać nazwę zasady. |
|
Gdy używasz zasady LDAP z niestandardowym serwerem LDAP
dostawcy (niepodanego przez Apigee), określ w pełni kwalifikowaną klasę oprogramowania sprzęgającego LDAP.
To klasa, w której zaimplementowano obiekt |
|
Wpisz nazwę środowiska zasobu LDAP. Zobacz Tworzenie zasobu LDAP. |
|
Podstawowy poziom LDAP, na którym znajdują się wszystkie Twoje dane. Na przykład w polu
Dostawca LDAP Apigee: wszystkie dane są w domenie
|
|
|
Uwierzytelnianie |
|
|
Element nadrzędny implementowanego 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 w polu nie musisz uwzględniać tego elementu. Jeśli w żądaniu podana jest nazwa użytkownika, ale chcesz uwierzytelnić użytkownika za pomocą atrybutu DN
inne niż nazwa użytkownika, np. adres e-mail, dołącz |
|
Pusty element, który przyjmuje jeden z tych atrybutów:
|
|
Jeśli chcesz uwierzytelnić się przy użyciu atrybutu DN innego niż nazwa użytkownika, takiego jak adres e-mail, skonfigurować zasadę LDAP tak, aby pobierała atrybut nazwy wyróżniającej z żądania (na przykład nazwę użytkownika), która służy do identyfikowania użytkownika w katalogu LDAP, pobierania wiadomości e-mail i uwierzytelniania użytkownika. Na przykład, zakładając, że LDAP definiuje „pocztę”, atrybut do przechowywania adresu e-mail:
|
Szukaj |
|
|
Element nadrzędny zaimplementowanego przez Ciebie działania związanego z wyszukiwaniem. |
|
Identyfikując użytkownika za pomocą metadanych w żądaniu lub odpowiedzi, można użyć tego
pobiera z serwera LDAP dodatkowe atrybuty wyróżniające użytkownika. Na przykład, jeśli plik
zawiera adres e-mail użytkownika, a w interfejsie LDAP – atrybut
To zapytanie wyszukuje w LDAP adres e-mail pasujący do adresu e-mail w żądaniu, a następnie zasady mogą teraz pobierać dodatkowe atrybuty DN dla danego użytkownika za pomocą atrybutów . |
|
Użyj co najmniej jednego elementu Na przykład po zidentyfikowaniu użytkownika parametr 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 dla Private Cloud pozwala korzystać z dostawcy LDAP w wywołaniach interfejsu API. Za pomocą protokołu LDAP zasad, aplikacje mogą uwierzytelniać dane logowania na kontach użytkowników przechowywanych w katalogu LDAP. pobiera z serwera LDAP nazwy wyróżniające – metadane lub atrybuty powiązane z np. adres e-mail, adres pocztowy i numer telefonu. Zwrócona nazwa wyróżniająca jest przechowywana w zmiennej przez do dalszego użycia przez serwer proxy interfejsu API.
Tworzenie zasobu LDAP
Zasada LDAP korzysta z zasobu LDAP utworzonego w Apigee Edge. Zasób LDAP udostępnia informacje o połączeniu z repozytorium LDAP.
Aby utworzyć zasoby LDAP i nimi zarządzać, użyj poniższego interfejsu API i ładunku:
Interfejs API
Utwórz (POST
) zasób LDAP lub listę (GET
) wszystkich zasobów LDAP:
/v1/organizations/org_name/environments/environment/ldapresources
Uzyskaj szczegółowe informacje o zasobie LDAP (GET
), aktualizowaniu (POST
) i usuwaniu (DELETE
) zasobu LDAP:
/v1/organizations/org_name/environments/environment/ldapresources/ldap_resource_name
Ładunek
Poniżej znajduje się przykładowy ładunek XML z komentarzami dotyczącymi wykorzystania.
<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 curl: tworzenie zasobu LDAP
Poniższy przykład pokazuje 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
Poniżej podano kody odpowiedzi HTML zwracanych przez zasadę w przypadku powodzenia lub niepowodzenia:
- Sukces: 200
- Błąd: 401
Korzystanie z niestandardowego dostawcy LDAP w Edge dla Private Cloud
Za pomocą Dostawca LDAP
Apigee Edge dla Private Cloud ma dostawcę LDAP, którego konfiguracja i interakcji z zasadami LDAP. Jeśli jednak korzystasz z niestandardowego dostawcy LDAP, musisz włączyć dostawcy obsługującego 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 sekcji
<LdapConnectorClass>
konfiguracji zasad (następne sekcje) dodaj pełną i jednoznaczną nazwę klasy niestandardowego dostawcy LDAP. - Pobierz ten plik: custom-ldap.jar_.zip. Możliwe, że trzeba będzie kliknąć prawym przyciskiem myszy i wybrać Zapisz jako.
- Rozpakuj go.
- Dodaj plik custom-ldap.jar do swojego środowiska i upewnij się, że znajduje się on w ścieżce klasy.
- Utwórz zasób środowiska dla dostawcy LDAP. Za pomocą zasobu środowiska
name w elemencie
<LdapResource>
zasady LDAP.
Korzystanie z Pakiet SDK LDAP dla języka Java UnboundID
Możesz używać pakietu SDK LDAP UnboundID z zasadą LDAP, ale najpierw musisz pobrać wersję 2.3.1 i dodać go do każdej ścieżki klas procesora wiadomości.
Aby użyć pakietu SDK LDAP bez identyfikatora UnboundID z zasadą LDAP:
- Otwórz przeglądarkę i przejdź do repozytorium plików Sourceforge dla pakietu SDK LDAP UnboundID:
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, zgodnie z przykładem poniżej:
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 katalog za pomocą funkcji
-j
, chociaż jest to opcjonalne. - W każdym węźle procesora wiadomości:
- Skopiuj plik JAR do
Katalog
/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.
- Ponownie uruchom procesor wiadomości:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Edge dodaje wszystkie biblioteki innych firm do
/opt/apigee/edge-gateway/lib/thirdparty
do ścieżki klasy. - Skopiuj plik JAR do
Katalog
Zmienne przepływu
Poniżej podano zmienne zasad LDAP wypełniane przez zasadę SearchQuery
.
Zmienna |
Opis |
---|---|
ldap.policyName.execution.success |
Po wykonaniu zasady ta zmienna procesu zawiera wartość „true” (prawda). lub „false”, w zależności od wyniku. |
ldap.policyName.search.result[index]. attribute.attrName[index]=value |
Elastyczny format tej zmiennej, indeks w konkretne: uwzględnia wiele atrybutów, jak również atrybuty z wieloma atrybutami . Indeks to liczba, która zaczyna się od 1. Jeśli nie podasz numeru indeksu, domyślnie zostanie użyty numer indeksu to 1. Jeśli zasady zawierają adres, numer telefonu i adres e-mail, możesz pobrać pierwszy atrybut i wartości przy użyciu 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 Atrybut miał wiele wartości (na przykład użytkownik ma kilka adresów e-mail). adresy), otrzymasz drugi adres e-mail z wyników podobnych do tych: ldap.policyName.search.result.attribute.mail[2] |
Kody błędów
Błędy zwracane przez zasady Edge mają spójny format opisany w dokumentacji kodu 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. |