PDF

Synchronizacja z usługami katalogowymi

Przeczytasz w 14 min.

Spis treści

  1. Streszczenie
  2. Konfiguracja w AdminSPA
  3. Konfiguracja w TenantsAdminSPA
    1. Sekcja UserSettings — konfiguracja synchronizacji użytkowników
    2. Sekcja RoleSettings — konfiguracja synchronizacji ról
    3. Sekcja LDAPConfiguration — wspólna dla obu rodzajów synchronizacji
    4. Mapowanie grup na role
    5. Przykład konfiguracji

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 formularzu Edycja 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"
          ]
        }
      ]
    }

Copyright © 2025 OPTEAM SA. Theme Copyright © 2017-2020 Patrick Marsceill. Distributed by an MIT license.