[comment]: # ({9b3e99c3-64e71448})
# 2 LDAP

[comment]: # ({/9b3e99c3-64e71448})

[comment]: # ({d8164d18-28a1e9c5})
#### Przegląd

Zewnętrzne [uwierzytelnianie](/manual/web_interface/frontend_sections/users/authentication) LDAP może być używane do sprawdzania nazw użytkowników i haseł.

Uwierzytelnianie LDAP w Zabbix działa co najmniej z Microsoft Active Directory i OpenLDAP.

Jeśli skonfigurowano tylko logowanie LDAP, użytkownik musi również istnieć w Zabbix, jednak jego hasło Zabbix nie będzie używane.
Jeśli uwierzytelnianie zakończy się powodzeniem, Zabbix dopasuje lokalną nazwę użytkownika do atrybutu nazwy użytkownika zwróconego przez LDAP.

[comment]: # ({/d8164d18-28a1e9c5})

[comment]: # ({0ce2f718-3654e16b})
#### Udostępnianie użytkowników

Możliwe jest skonfigurowanie JIT (just-in-time) **udostępniania użytkowników** dla użytkowników LDAP.
W takim przypadku nie jest wymagane, aby użytkownik istniał już w Zabbix.
Konto użytkownika może zostać utworzone, gdy użytkownik zaloguje się do Zabbix po raz pierwszy.

Gdy użytkownik LDAP wprowadza swój login LDAP i hasło, Zabbix sprawdza *domyślny* serwer LDAP, aby ustalić, czy taki użytkownik istnieje.
Jeśli użytkownik istnieje i nie ma jeszcze konta w Zabbix, w Zabbix tworzony jest nowy użytkownik i użytkownik może się zalogować.

Użytkownik utworzony za pomocą udostępniania JIT jest powiązany z serwerem LDAP (katalogiem), który w momencie utworzenia jest ustawiony jako domyślny.
Późniejsza zmiana domyślnego serwera LDAP nie zmienia ani nie aktualizuje serwera LDAP powiązanego z użytkownikami, którzy zostali już udostępnieni.

:::noteimportant
Jeśli udostępnianie JIT jest włączone, na karcie *Authentication* należy określić grupę użytkowników dla użytkowników wycofanych z udostępniania.
:::

Udostępnianie JIT umożliwia również aktualizowanie udostępnionych kont użytkowników na podstawie zmian w LDAP.
Na przykład, jeśli użytkownik zostanie przeniesiony z jednej grupy LDAP do innej, użytkownik zostanie również przeniesiony z jednej grupy do innej w Zabbix; jeśli użytkownik zostanie usunięty z grupy LDAP, użytkownik zostanie również usunięty z grupy w Zabbix i, jeśli nie należy do żadnej innej grupy, zostanie dodany do grupy użytkowników dla użytkowników wycofanych z udostępniania.
Udostępnione konta użytkowników są aktualizowane zgodnie ze skonfigurowanym [okresem udostępniania](#configuration) lub gdy użytkownik loguje się do Zabbix.

Należy pamiętać, że udostępnianie w tle jest wykonywane przez frontend Zabbix, gdy użytkownik z niego korzysta lub ma co najmniej jedną otwartą stronę frontend w przeglądarce.
Nie ma dedykowanych procesów działających w tle do udostępniania użytkowników.

LDAP obsługuje trzy sposoby wiązania z katalogiem na potrzeby uwierzytelniania i wyszukiwania:

-   Wiązanie anonimowe — nie podano *Bind DN* / *Bind password*, a serwer LDAP zezwala na anonimowe zapytania.
-   Dedykowany użytkownik wiążący (konto usługi) — określone konto LDAP jest ustawione w *Bind DN* / *Bind password* i jest używane przez Zabbix do wyszukiwania oraz udostępniania.
Jest to zalecana i najbardziej elastyczna opcja, ponieważ Zabbix może wykonywać wyszukiwania i udostępnianie w tle bez poświadczeń użytkownika końcowego.
-   Bezpośrednie wiązanie użytkownika — Zabbix wykonuje wiązanie przy użyciu poświadczeń wprowadzonych przez użytkownika podczas logowania (bez skonfigurowanych *Bind DN* / *Bind password*); konfiguruje się to przez uwzględnienie symbolu zastępczego, takiego jak `uid=%{user}`, w Base DN.
W tym trybie Zabbix ma dostęp do hasła użytkownika tylko podczas interaktywnego logowania.
W rezultacie działania związane z udostępnianiem, które wymagają uwierzytelnienia w LDAP poza sesją logowania użytkownika (na przykład użycie przycisku [*Provision now*](/manual/web_interface/frontend_sections/users/user_list#mass-editing-options) lub uruchomienie udostępniania w tle, gdy użytkownik nie jest aktywnie zalogowany), nie mogą się uwierzytelnić i dlatego nie będą działać.
Udostępnianie i aktualizacje w przypadku bezpośredniego wiązania użytkownika odbywają się wyłącznie w momencie logowania użytkownika.

[comment]: # ({/0ce2f718-3654e16b})

[comment]: # ({df61670c-c7234b3e})
#### Wiele serwerów

W razie potrzeby można zdefiniować kilka serwerów LDAP.
Na przykład do uwierzytelniania innej grupy użytkowników można użyć innego serwera.
Po skonfigurowaniu serwerów LDAP w konfiguracji [grupy użytkowników](/manual/config/users_and_usergroups/usergroup#configuration) będzie można wybrać wymagany serwer LDAP dla odpowiedniej grupy użytkowników.

Jeśli użytkownik należy do wielu grup użytkowników i wielu serwerów LDAP, do uwierzytelniania zostanie użyty pierwszy serwer z listy serwerów LDAP posortowanej według nazwy w porządku rosnącym.

[comment]: # ({/df61670c-c7234b3e})

[comment]: # ({7e373a5b-e085db50})
#### Konfiguracja

![](../../../../../../assets/en/manual/web_interface/frontend_sections/users/auth_ldap.png)

Parametry konfiguracji:

|Parameter|Description|
|--|--------|
|*Enable LDAP authentication*|Zaznacz pole wyboru, aby włączyć uwierzytelnianie LDAP.|
|*Enable JIT provisioning*|Zaznacz pole wyboru, aby włączyć JIT provisioning.|
|*Servers*|Kliknij *Add*, aby skonfigurować serwer LDAP (zobacz [konfiguracja serwera LDAP](#ldap-server-configuration) poniżej).|
|*Case-sensitive login*|Usuń zaznaczenie pola wyboru, aby wyłączyć rozróżnianie wielkości liter podczas logowania nazw użytkowników (domyślnie włączone).<br>Wyłączenie rozróżniania wielkości liter podczas logowania umożliwia na przykład zalogowanie się jako "admin", nawet jeśli użytkownik Zabbix to "Admin" lub "ADMIN".<br>Należy pamiętać, że jeśli rozróżnianie wielkości liter podczas logowania jest wyłączone i istnieje wielu użytkowników Zabbix o podobnych nazwach użytkowników (np. Admin i admin), logowanie dla tych użytkowników będzie zawsze odrzucane z następującym komunikatem o błędzie: "Authentication failed: supplied credentials are not unique."|
|*Provisioning period*|Ustaw okres provisioning, czyli jak często zalogowany użytkownik będzie provisionowany podczas pracy z frontendem.|

[comment]: # ({/7e373a5b-e085db50})

[comment]: # ({250025f6-9c2f07ee})
#### Konfiguracja serwera LDAP

![](../../../../../../assets/en/manual/web_interface/frontend_sections/users/auth_ldap_server.png)

Parametry konfiguracji serwera LDAP:

|Parameter|Description|
|--|--------|
|*Name*|Nazwa serwera LDAP w konfiguracji Zabbix.|
|*Host*|Nazwa hosta, adres IP lub URI serwera LDAP. Przykłady: ldap.example.com, 127.0.0.1, ldap://ldap.example.com<br>W przypadku bezpiecznego serwera LDAP użyj protokołu *ldaps* i nazwy hosta. Przykład: ldaps://ldap.example.com<br>W przypadku OpenLDAP 2.x.x i nowszych można użyć pełnego URI LDAP w postaci ldap://hostname:port lub ldaps://hostname:port.|
|*Port*|Port serwera LDAP. Domyślnie 389.<br>W przypadku bezpiecznego połączenia LDAP numer portu wynosi zwykle 636.<br>Nie jest używany przy korzystaniu z pełnych URI LDAP.|
|*Base DN*|Bazowa ścieżka do kont użytkowników na serwerze LDAP:<br>ou=Users,ou=system (dla OpenLDAP),<br>DC=company,DC=com (dla Microsoft Active Directory)<br> uid=%{user},dc=example,dc=com (dla bezpośredniego wiązania użytkownika, zobacz uwagę poniżej)|
|*Search attribute*|Atrybut konta LDAP używany do wyszukiwania:<br>uid (dla OpenLDAP),<br>sAMAccountName (dla Microsoft Active Directory)|
|*Bind DN*|Konto LDAP do wiązania i wyszukiwania na serwerze LDAP, przykłady:<br>uid=ldap\_search,ou=system (dla OpenLDAP),<br>CN=ldap\_search,OU=user\_group,DC=company,DC=com (dla Microsoft Active Directory)<br>Obsługiwane jest również anonimowe wiązanie. Należy pamiętać, że anonimowe wiązanie potencjalnie udostępnia konfigurację domeny nieautoryzowanym użytkownikom (informacje o użytkownikach, komputerach, serwerach, grupach, usługach itp.). Ze względów bezpieczeństwa wyłącz anonimowe wiązania na hostach LDAP i zamiast tego używaj uwierzytelnionego dostępu.|
|*Bind password*|Hasło LDAP konta używanego do wiązania i wyszukiwania na serwerze LDAP.|
|*Description*|Opis serwera LDAP.|
|*Configure JIT provisioning*|Zaznacz to pole wyboru, aby wyświetlić opcje związane z JIT provisioning.|
|*Group configuration*|Wybierz metodę konfiguracji grup:<br>**memberOf** - poprzez wyszukiwanie użytkowników i ich atrybutu członkostwa w grupie<br>**groupOfNames** - poprzez wyszukiwanie grup za pomocą atrybutu member<br>Należy pamiętać, że memberOf jest preferowane, ponieważ działa szybciej; użyj groupOfNames, jeśli serwer LDAP nie obsługuje `memberOf` lub wymagane jest filtrowanie grup.|
|*Group name attribute*|Określ atrybut, z którego ma być pobierana nazwa grupy ze wszystkich obiektów w atrybucie `memberOf` (zobacz pole *User group membership attribute*)<br>Nazwa grupy jest niezbędna do mapowania grup użytkowników.|
|*User group membership attribute*|Określ atrybut zawierający informacje o grupach, do których należy użytkownik (np. `memberOf`).<br>Na przykład atrybut memberOf może zawierać takie informacje: `memberOf=cn=zabbix-admin,ou=Groups,dc=example,dc=com`<br>To pole jest dostępne tylko dla metody memberOf.|
|*User name attribute*|Określ atrybut zawierający imię użytkownika.|
|*User last name attribute*|Określ atrybut zawierający nazwisko użytkownika.|
|*User group mapping*|Mapuj wzorzec grupy użytkowników LDAP na grupę użytkowników Zabbix i rolę użytkownika.<br>Jest to wymagane do określenia, jaką grupę/rolę otrzyma aprowizowany użytkownik w Zabbix.<br>Kliknij *Add*, aby dodać mapowanie.<br>Pole *LDAP group pattern* obsługuje symbole wieloznaczne. Nazwa grupy musi odpowiadać istniejącej grupie.<br>Jeśli użytkownik LDAP pasuje do kilku grup użytkowników Zabbix, stanie się członkiem wszystkich z nich.<br>Jeśli użytkownik pasuje do kilku ról użytkowników Zabbix, otrzyma tę o najwyższym poziomie uprawnień spośród nich.|
|*Media type mapping*|Mapuj atrybuty LDAP użytkownika [media](/manual/config/notifications/media) (np. e-mail) na media użytkownika Zabbix do wysyłania powiadomień (wartość atrybutu jest używana jako pole media [*Send to*](/manual/config/notifications/media#user-media)).|
|*Advanced configuration*|Kliknij nagłówek *Advanced configuration*, aby wyświetlić zaawansowane opcje konfiguracji (zobacz poniżej).|
|*StartTLS*|Zaznacz pole wyboru, aby używać operacji StartTLS podczas łączenia z serwerem LDAP. Połączenie zostanie przerwane, jeśli serwer nie obsługuje StartTLS.<br>StartTLS nie może być używany z serwerami korzystającymi z protokołu *ldaps*.|
|*Search filter*|Zdefiniuj niestandardowy ciąg podczas uwierzytelniania użytkownika w LDAP. Obsługiwane są następujące symbole zastępcze:<br>`%{attr}` - nazwa atrybutu wyszukiwania (uid, sAMAccountName)<br>`%{user}` - wartość nazwy użytkownika do uwierzytelnienia<br>Na przykład, aby przeprowadzić wyszukiwanie z uwzględnieniem wielkości liter w środowisku LDAP lub Microsoft Active Directory, które domyślnie nie rozróżnia wielkości liter, ciąg można zdefiniować następująco:<br>`(%{attr}:caseExactMatch:=%{user})`.<br>Jeśli filtr nie zostanie dostosowany, LDAP użyje domyślnego: `(%{attr}=%{user})`.|

::: noteclassic
Aby skonfigurować serwer LDAP dla **bezpośredniego wiązania użytkownika**, dodaj atrybut uid=%{user} do parametru *Base DN* (na przykład *uid=%{user},dc=example,dc=com*) i pozostaw parametry *BindDN* oraz *Bind password* puste.
Podczas uwierzytelniania symbol zastępczy %{user} zostanie zastąpiony nazwą użytkownika wpisaną podczas logowania.<br>
W przypadku bezpośredniego wiązania użytkownika Zabbix ma dostęp do poświadczeń użytkownika tylko podczas interaktywnego logowania.
Dlatego zadania aprowizacji, które działają bez interaktywnego logowania (na przykład przycisk *Provision now* lub metoda API [`user.provision`](/manual/api/reference/user/provision)), zignorują użytkowników uwierzytelniających się za pomocą bezpośredniego wiązania użytkownika, ponieważ Zabbix nie może wiązać się w ich imieniu.
Użyj anonimowego wiązania lub dedykowanego użytkownika wiążącego (konta usługowego), jeśli potrzebujesz, aby aprowizacja i wyszukiwania LDAP działały z frontend bez konieczności logowania się użytkownika końcowego.
:::

Poniższe pola są specyficzne dla metody *Group configuration* "groupOfNames":

![](../../../../../../assets/en/manual/web_interface/frontend_sections/users/auth_ldap_server2.png)

|Parameter|Description|
|--|--------|
|*Group base DN*|Bazowa ścieżka do grup na serwerze LDAP.|
|*Group name attribute*|Określ atrybut, z którego ma być pobierana nazwa grupy w określonej bazowej ścieżce do grup.<br>Nazwa grupy jest niezbędna do mapowania grup użytkowników.|
|*Group member attribute*|Określ atrybut zawierający informacje o członkach grupy w LDAP (np. `member`).|
|*Reference attribute*|Określ atrybut referencyjny dla filtra grupy (zobacz pole *Group filter*).<br>Następnie użyj `%{ref}` w filtrze grupy, aby pobrać wartości dla atrybutu określonego tutaj.|
|*Group filter*|Określ filtr do pobrania grupy, której członkiem jest użytkownik.<br>Na przykład `(member=uid=%{ref},ou=Users,dc=example,dc=com)` dopasuje "User1", jeśli atrybut member grupy ma wartość `uid=User1,ou=Users,dc=example,dc=com`, i zwróci grupę, której "User1" jest członkiem.|

::: notewarning
W przypadku problemów z certyfikatami, aby bezpieczne połączenie LDAP (ldaps) działało, może być konieczne dodanie linii `TLS_REQCERT allow` do pliku konfiguracyjnego /etc/openldap/ldap.conf.
Może to obniżyć bezpieczeństwo połączenia z katalogiem LDAP.
:::

::: notetip
Zaleca się utworzenie oddzielnego konta LDAP (*Bind DN*) do wykonywania wiązania i wyszukiwania na serwerze LDAP z minimalnymi uprawnieniami w LDAP zamiast używania rzeczywistych kont użytkowników (używanych do logowania do frontend Zabbix).<br>
Takie podejście zapewnia większe bezpieczeństwo i nie wymaga zmiany *Bind password*, gdy użytkownik zmienia własne hasło na serwerze LDAP.<br>
W powyższej tabeli jest to nazwa konta *ldap\_search*.
:::

[comment]: # ({/250025f6-9c2f07ee})

[comment]: # ({6b688a6e-5c3e92b7})
##### Testowanie dostępu

Przycisk *Test* umożliwia przetestowanie dostępu użytkownika:

|Parameter|Description|
|--|--------|
|*Login*|Nazwa użytkownika LDAP do przetestowania (wstępnie wypełniona bieżącą nazwą użytkownika z frontend Zabbix). Ta nazwa użytkownika musi istnieć na serwerze LDAP.<br>Zabbix nie aktywuje uwierzytelniania LDAP, jeśli nie będzie w stanie uwierzytelnić testowanego użytkownika.|
|*User password*|Hasło użytkownika LDAP do przetestowania.|

[comment]: # ({/6b688a6e-5c3e92b7})
