Synchronizacja z usługami katalogowymi
Przeczytasz w 14 min.
Spis treści
Streszczenie
W artykule opisano konfigurację synchronizacji danych użytkowników oraz ról biznesowych (grup LDAP) z serwerem usług katalogowych (Active Directory i OpenLDAP). Synchronizacja profili użytkowników może obejmować również przypisanie użytkowników do jednostek organizacyjnych, co wymaga wcześniej odtworzenia w nAxiom struktury organizacyjnej z domeny LDAP (w tym skopiowania identyfikatorów jednostek z LDAP do nAxiom).
Konfiguracja odbywa się w dwóch miejscach:
- Ustawienia systemu (AdminSPA): konfiguracja połączenia z serwerem LDAP.
- Ustawienia tenantów w TenantsAdminSPA: konfiguracja uwierzytelniania (serwis auth) i synchronizacji (serwis taskservice).
Zmiany ustawień konfiguracyjnych dotyczących połączenia i synchronizacji z serwerem LDAP wymagają restartowania puli aplikacji serwisów auth i taskservice na serwerze IIS lub kontenerów/podów tych serwisów w przypadku wdrożenia nAxiom w architekturze skonteneryzowanej (Docker, Kubernetes, OpenShift).
Początkowy import użytkowników z usług LDAP odbywa się podczas pierwszej synchronizacji. Synchronizacja odbywa się jednokierunkowo, z usług LDAP do witryny nAxiom.
Ewentualne błędy są logowane w pliku log.db3 w podfolderze taskservice folderu instalacyjnego witryny nAxiom.
Do wersji nAxiom 1.11 konfigurowanie synchronizacji użytkowników z serwerem usług katalogowych wymaga modyfikacji plików appsettings.json serwisów auth i taskservice.
Konfiguracja w AdminSPA
Pierwszym krokiem jest skonfigurowanie parametrów połączenia z serwerem LDAP (Active Directory lub OpenLDAP). W tym celu zaloguj się w AdminSPA jako konsultant i z menu ADMINISTRACJA
wybierz polecenie Ustawienia systemu
. Przewiń stronę do sekcji LDAP
i podaj wymagane parametry. Przykład konfiguracji przedstawiają ilustracje poniżej.

Parametr Base DN do serwera LDAP
to ścieżka określająca miejsca rozpoczęcia wyszukiwania na serwerze LDAP.
W parametrze
Ścieżka do serwera LDAP
nie należy stosować przedrostka LDAP:// (LDAPS://).
W celu weryfikacji parametrów połączenia należy włączyć uwierzytelnianie na serwerze LDAP (w TenantsAdminSPA; patrz niżej), utworzyć profil użytkownika nAxiom z włączonym przełącznikiem Użytkownik LDAP
i sprawdzić, czy logowanie z użyciem tego profilu przebiega prawidłowo.
Konfiguracja w TenantsAdminSPA
W celu skonfigurowania uwierzytelniania i synchronizacji ról i użytkowników uruchom aplikację TenantsAdminSPA (https:/adres-witryny-naxiom/tenantsadmin), przejdź do edycji wybranego tenanta i kliknij zakładkę Configuration
.

W polu Settings
przewiń plik JSON do klucza UseADAuthentication na samym końcu i ustaw wartość true. To umożliwi logowanie do nAxiom użytkowników, którzy mają w profilu włączony przełącznik Użytkownik LDAP
.
W celu skonfigurowania synchronizacji profili użytkowników z usługami katalogowymi w tym samym polu przewiń plik JSON do sekcji OpenLDAPConf i nadaj wartości następującym parametrom:
-
UserId: identyfikator (GUID) użytkownika witryny nAxiom, który będzie wykonywał import użytkowników oraz który zostanie zapisany jako twórca dokumentów biznesowych dla danych dodatkowych importowanych użytkowników; GUID użytkownika można skopiować z tabeli core.UserProfiles z bazy danych nAxiom.
Ten użytkownik musi mieć odpowiednie uprawnienia PBA oraz rolę Administrator.
- RepeatInterval: interwał synchronizacji w sekundach,
- UserSettings: ustawienia konfiguracyjne synchronizacji użytkowników; patrz opis poniżej,
- RoleSettings: ustawienia konfiguracyjne synchronizacji ról; patrz opis poniżej.
Sekcja UserSettings — konfiguracja synchronizacji użytkowników
- AlternativeIdAttribute: alternatywny atrybut z serwera LDAP jako identyfikator, domyślnie jest to objectGUID,
- SynchronizationType: typ synchronizacji; dostępne wartości to Full i Update; synchronizacja typu Full obejmuje dodawanie i aktualizację użytkowników; synchronizacja typu Update tylko aktualizuje dane użytkowników istniejących w danej witrynie nAxiom,
- UserMatchingType: tryb dopasowywania użytkowników między witryną nAxiom i serwerem usług katalogowych; dostępne wartości to Id, Login i Email; dopasowanie po adresie e-mail nie jest zalecane ze względu na możliwość zduplikowanych adresów,
- DefaultEmailAddress: domyślny adres e-mail podawany w przypadku braku adresu,
- DefaultLanguageCode: domyślny język użytkownika, należy zastosować kod języka z nAxiom np. pl (core.Languages.Code),
- DefaultOrganizationSymbols: (od wersji nAxiom 1.13 nieużywane) domyślne organizacje przypisane do użytkownika, należy podać listę symboli organizacji (core.Organizations.Symbol),
- SystemRoleCode: rola systemowa dla użytkowników, domyślnie należy podać CLIENT (core.Roles.Code),
- BusinessRoleCodes: role biznesowe dla każdego użytkownika, należy podać listę kodów ról (core.Roles.Code),
- SkipUsersWithoutEmail: flaga pomijania użytkowników bez adresu e-mail, wartość true lub false,
-
SkipOUInstancesSynchronization: flaga pomijania synchronizacji przypisania użytkowników do jednostek organizacyjnych (same jednostki organizacyjne nie są synchronizowane); true — pomijaj synchronizację, przypisanie do jednostek odbywa się ręcznie; false — synchronizuj jednostki, wymagane jest wcześniejsze ręczne przepisanie wartości objectGUID z usług katalogowych do pola
OUID
na formularzuEdycja jednostki organizacyjnej
(core.OUInstances.Ouid) dla jednostek organizacyjnych w nAxiom.Jeśli pole
OUID
będzie puste i zostanie ustawiona wartość false, wszelkie istniejące przypisania użytkowników do jednostek organizacyjnych zostaną wyczyszczone. - OverrideUserLanguageByDefaultValue: flaga czy nadpisywać język wartością domyślną,
- OverrideUserOrganizationByDefaultValue: (od wersji nAxiom 1.13 nieużywane) flaga czy nadpisywać organizacje wartościami domyślnymi,
- FieldsMapping: mapowanie dodatkowych atrybutów LDAP na pola formularza danych dodatkowych profilu użytkownika np. przenoszenie numeru telefonu lub adresu, gdzie klucz to nazwa kolumny w bazie dla formularza, a wartość to nazwa atrybutu LDAP,
- LDAPConfiguration: konfiguracja połączenia z serwerem LDAP i wyszukiwania (patrz opis)
Sekcja RoleSettings — konfiguracja synchronizacji ról
Role biznesowe w nAxiom są odpowiednikiem grup w usługach katalogowych. Podczas synchronizacji ról w nAxiom tworzone są role biznesowe odpowiadające grupom w domenie LDAP. Podczas synchronizacji użytkowników te role są przypisywane użytkownikom zgodnie z ich przynależnością do grup LDAP.
- ModuleDefinitionName: nazwa definicji modułu, do którego przypisane zostaną role,
- RoleMatchingType: typ dopasowania roli między nAxiom i LDAP, dostępne wartości to Id oraz Code,
- SynchronizationType: typ synchronizacji; dostępne wartości to Full — synchronizacja obejmuje dodawanie nowych wpisów i aktualizację istniejących — oraz Update — tylko aktualizacja istniejących wpisów,
- LDAPConfiguration: konfiguracja połączenia z serwerem LDAP i wyszukiwania (patrz opis)
Sekcja LDAPConfiguration — wspólna dla obu rodzajów synchronizacji
Konfiguracja pozwala na wykonywanie synchronizacji z więcej niż jedną domeną, jednak ze względu na to, że serwis auth obsługuje logowanie tylko w obrębie jednej domeny, należy skonfigurować dostęp do jednej domeny.
- Path: ścieżka do serwera LDAP; nie może zawierać przedrostka LDAP:// (LDAPS://),
- User: nazwa użytkownika, który ma dostęp do serwera LDAP,
- Password: hasło użytkownika LDAP; wartość zaszyfrowana za pomocą osobnego narzędzia,
- Domain: nazwa domeny,
- Host: nazwa hosta lub adres IP serwera LDAP,
- Port: port połączenia, domyślnie 389 dla połączenia nieszyfrowanego,
- SSL: flaga użycia SSL,
- BaseDN: podstawowa ścieżka LDAP, od której rozpoczyna się poszukiwanie użytkowników,
- SearchScope: zakres poszukiwań w domenie LDAP, dostępne wartości to Base, OneLevel i Subtree, przy czym dla pierwszych dwóch wyszukiwanie obejmuje tylko poziom wskazany przez BaseDN; dla wartości Subtree wyszukiwanie obejmuje również elementy podrzędne,
- Filter: dodatkowy filtr w formacie zapytania LDAP pozwalający odfiltrować użytkowników, wartości dodawane są do zapisu (&(objectCategory=user){filter})
-
LdapType: rodzaj serwera LDAP; dostępne wartości:
- OpenLdap
- ActiveDirectory (domyślna)
Mapowanie grup na role
Funkcjonalność synchronizacji oferuje mechanizm pozwalający na mapowanie grup domenowych na wskazane role biznesowe, który pozwala ograniczyć liczbę ról biznesowych w nAxiom. Jeśli mapowanie nie zostanie skonfigurowane, użytkownikom importowanym z domeny LDAP są przypisywane role zgodnie z ich przynależnościami do grup LDAP — każdej grupie odpowiada jedna rola.
W przypadku mapowania, jedna rola może odpowiadać wielu grupom LDAP. Podczas synchronizacji użytkowników nastąpi zmiana wcześniejszych ról (odpowiadających indywidualnym grupom) na nowe role zgodne z konfiguracją mapowania (nie zostaną utworzone role biznesowe). Mapowanie odbywa się w sekcji konfiguracji GroupsToRoleMapping w pliku appsettings.json serwisu taskservice.
Dostępne parametry:
- RoleCode: kod docelowej roli biznesowej w nAxiom, na którą zostaną zmapowane grupy LDAP; jeśli rola o podanym kodzie nie istnieje, mapowana na nią grupa nie występuje w innym mapowaniu, użytkownikom z tej grupy nie zostanie przypisana żadna rola.
- GroupNames: lista nazw grup z domeny LDAP, które zostaną zmapowane na rolę biznesową o podanym kodzie; jeśli grupa wystąpi w kilku mapowaniach, zostanie zmapowana na wszystkie role — użytkownicy należący do tej grupy, będą mieli przypisane wszystkie role z mapowań, w których występuje ta grupa.
{
"OpenLDAPConf": {
(...)
"GroupsToRoleMapping": [
{
"RoleCode": "KIER",
"GroupNames": [
"Kierownik Produkcji",
"Kierownik Magazynu"
]
}
]
}
}
Przykład konfiguracji
"OpenLDAPConf": {
"RepeatInterval": 240,
"UserId": "3F53097E-BFE6-4690-E075-08D6CEBA7D84",
"UserSettings": [
{
"SynchronizationType": "Full",
"DefaultEmailAddress": "brakmaila@acme.com",
"DefaultLanguageCode": "pl",
"SkipUsersWithoutEmail": false,
"DefaultOrganizationSymbols": [ "System" ],
"SystemRoleCode": "CLIENT",
"UserMatchingType": "Login",
"LDAPConfiguration": {
"Path": "192.168.0.5",
"User": "acme\\acmeapp",
"Password": "(zaszyfrowane hasło)",
"Domain": "corp.acme.local",
"Host": "192.168.0.5",
"Port": 389,
"SSL": false,
"BaseDN": "DC=corp,DC=acme,DC=local",
"SearchScope": "Subtree",
"Filter": "(sAMAccountName=*)(givenName=*)(sn=*)"
},
"OverrideUserRolesByDefaultValue": false,
"OverrideUserLanguageByDefaultValue": false
}
],
"RoleSettings": [
{
"RoleMatchingType": "Id",
"SynchronizationType": "Full",
"ModuleDefinitionName": "BaseModule",
"LDAPConfiguration": {
"Path": "192.168.0.1",
"User": "acme\\acmeapp",
"Password": "(zaszyfrowane hasło)",
"Domain": "emea.corp.acme.local",
"Host": "192.168.0.1",
"Port": 389,
"SSL": false,
"BaseDN": "DC=emea,DC=corp,DC=acme,DC=local",
"SearchScope": "Subtree"
}
},
{
"RoleMatchingType": "Id",
"SynchronizationType": "Full",
"ModuleDefinitionName": "BaseModule",
"LDAPConfiguration": {
"Path": "192.168.0.5",
"User": "acme\\acmeapp",
"Password": "(zaszyfrowane hasło)",
"Domain": "corp.acme.local",
"Host": "192.168.0.5",
"Port": 389,
"SSL": false,
"BaseDN": "DC=corp,DC=acme,DC=local",
"SearchScope": "Subtree"
}
}
],
"GroupsToRoleMapping": [
{
"RoleCode": "CORPPRAC",
"GroupNames": [
"Grupa CORP A",
"Grupa EMEA B"
]
}
]
}