Konfiguracja SAML z Okta
Ta sekcja zawiera wskazówki dotyczące konfiguracji Okta, aby włączyć uwierzytelnianie SAML 2.0 oraz provisioning użytkowników dla Zabbix.
Konfiguracja Okta
1. Przejdź do https://developer.okta.com/signup/ i zarejestruj się / zaloguj na swoje konto.
2. W interfejsie webowym Okta przejdź do Applications > Applications.
3. Kliknij Create App Integration.

Wybierz "SAML 2.0" jako metodę logowania i kliknij Next.
4. W ustawieniach ogólnych wpisz nazwę aplikacji i kliknij Next.
5. W konfiguracji SAML wprowadź poniższe wartości, a następnie kliknij Next.

-
W sekcji General dodaj:
- Single sign-on URL:
http://<your-zabbix-url>/zabbix/index_sso.php?acs
Zwróć uwagę na użycie "http", a nie "https", aby parametracsnie został obcięty w żądaniu. Pole wyboru Use this for Recipient URL and Destination URL również powinno być zaznaczone. - Audience URI (SP Entity ID):
zabbix
Zwróć uwagę, że ta wartość będzie używana w asercji SAML jako unikalny identyfikator dostawcy usług (jeśli nie będzie zgodna, operacja zostanie odrzucona). W tym polu można podać adres URL lub dowolny ciąg znaków. - Default RelayState:
Pozostaw to pole puste; jeśli wymagane jest niestandardowe przekierowanie, można je dodać w Zabbix w ustawieniach Users > Users. - Uzupełnij pozostałe pola zgodnie z własnymi preferencjami.
- Single sign-on URL:
-
W sekcji Attribute Statements/Group Attribute Statements dodaj:

Te instrukcje atrybutów są wstawiane do asercji SAML udostępnianych Zabbix.
Użyte tutaj nazwy atrybutów są przykładowe i dowolne. Możesz użyć innych nazw atrybutów, jednak muszą one odpowiadać odpowiednim wartościom pól w ustawieniach SAML Zabbix.
Jeśli chcesz skonfigurować logowanie SAML do Zabbix bez JIT provisioning użytkowników, wymagany jest tylko atrybut email.
Jeśli planujesz używać szyfrowanego połączenia, wygeneruj prywatny i publiczny certyfikat szyfrowania, a następnie prześlij publiczny certyfikat do Okta. Formularz przesyłania certyfikatu pojawi się, gdy Assertion Encryption zostanie ustawione na "Encrypted" (kliknij Show Advanced Settings, aby znaleźć ten parametr).
6. W następnej karcie wybierz "I'm a software vendor. I'd like to integrate my app with Okta" i kliknij Finish.
7. Przejdź do karty "Assignments" nowo utworzonej aplikacji i kliknij przycisk Assign, a następnie wybierz z listy rozwijanej Assign to People.

8. W wyświetlonym oknie przypisz aplikację osobom, które będą używać SAML 2.0 do uwierzytelniania w Zabbix, a następnie kliknij Save and go back.
9. Pobierz certyfikat IdP. Nadaj mu uprawnienia 644, uruchamiając:
chmod 644 idp.crt
10. Przejdź do karty "Sign On" i kliknij przycisk View Setup Instructions.
Instrukcje konfiguracji zostaną otwarte w nowej karcie; pozostaw tę kartę otwartą podczas konfigurowania Zabbix.
Konfiguracja Zabbix
1. W Zabbix przejdź do ustawień SAML i wypełnij opcje konfiguracji zgodnie z instrukcjami konfiguracji z Okta:

| Pole Zabbix | Pole konfiguracji w Okta | Przykładowa wartość |
|---|---|---|
| IdP entity ID | Identity Provider Issuer | |
| SSO service URL | Identity Provider Single Sign-On URL | |
| Username attribute | Attribute name | usrEmail |
| SP entity ID | Audience URI | zabbix |
| Group name attribute | Attribute name | groups |
| User name attribute | Attribute name | user_name |
| User last name attribute | Attribute name | user_lastname |
Wymagana jest również konfiguracja mapowania grup użytkowników i mediów.
2. Dodaj certyfikat Base64 podany w instrukcjach konfiguracji SAML w Okta.
Jeśli w pliku zabbix.conf.php ustawiono $SSO['CERT_STORAGE'] = 'database', możesz wkleić tekst certyfikatu lub przesłać plik certyfikatu we frontendzie podczas konfiguracji SAML — pliki nie są wymagane w systemie plików.
Jeśli w pliku zabbix.conf.php ustawiono $SSO['CERT_STORAGE'] = 'file', certyfikat musi być dostępny w systemie plików (domyślnie w ui/conf/certs lub w ścieżce skonfigurowanej w zabbix.conf.php), a frontend nie będzie przechowywać certyfikatów w bazie danych.
Zwróć uwagę, że jeśli $SSO['CERT_STORAGE'] nie jest ustawione lub jest zakomentowane, przyjmowane jest przechowywanie w plikach, a certyfikaty są odczytywane z ui/conf/certs.
3. Jeśli w Okta ustawiono Assertion Encryption na "Encrypted", pole wyboru "Assertions" parametru Encrypt powinno być również zaznaczone w Zabbix.
4. Kliknij przycisk Update, aby zapisać te ustawienia.
Provisioning SCIM
1. Aby włączyć provisioning SCIM, przejdź do General > App Settings aplikacji w Okta.
Zaznacz pole wyboru Enable SCIM provisioning. W rezultacie pojawi się nowa karta Provisioning.
2. Przejdź do karty "Provisioning", aby skonfigurować połączenie SCIM:
- W SCIM connector base URL określ ścieżkę do frontend Zabbix i dodaj do niej
api_scim.php, tj.:
https://<your-zabbix-url>/zabbix/api_scim.php - Unique identifier field for users:
email - Authentication mode:
HTTP header - W Authorization wprowadź prawidłowy token API z uprawnieniami Super admin

Jeśli występują problemy z uwierzytelnianiem, zobacz Authorization header forwarding.
3. Kliknij Test Connector Configuration, aby przetestować połączenie. Jeśli wszystko jest poprawne, zostanie wyświetlony komunikat o powodzeniu.
4. W Provisioning > To App upewnij się, że zaznaczono następujące pola wyboru:
- Create Users
- Update User Attributes
- Deactivate Users
Dzięki temu te typy żądań będą wysyłane do Zabbix.
5. Upewnij się, że wszystkie atrybuty zdefiniowane w SAML są zdefiniowane w SCIM. Do edytora profilu swojej aplikacji możesz przejść w Provisioning > To App, klikając Go to Profile Editor.
Kliknij Add Attribute.
Wypełnij wartości Display name, Variable name, External name nazwą atrybutu SAML, na przykład user_name.

External namespace powinien być taki sam jak schemat użytkownika: urn:ietf:params:scim:schemas:core:2.0:User
6. Przejdź do Provisioning > To App > Attribute Mappings swojej aplikacji. Kliknij na dole Show Unmapped Attributes. Pojawią się nowo dodane atrybuty.
7. Przypisz mapowanie do każdego dodanego atrybutu.

8. Dodaj użytkowników na karcie "Assignments". Użytkownicy muszą wcześniej zostać dodani w Directory > People. Wszystkie te przypisania zostaną wysłane jako żądania do Zabbix.
9. Dodaj grupy na karcie "Push Groups". Wzorzec mapowania grup użytkowników w ustawieniach SAML Zabbix musi odpowiadać grupie określonej tutaj. Jeśli nie ma zgodności, użytkownik nie może zostać utworzony w Zabbix.
Informacje o członkach grupy są wysyłane za każdym razem, gdy zostanie wprowadzona jakaś zmiana.