en
Wybierz język
  • en
  • de
  • fr
  • es
  • br
  • ru
  • jp
  • kr
Tłumaczenie SI
  • ee
  • ae
  • cn
  • vn
  • id
  • eu
  • il
  • gr
  • no
  • fi
  • dk
  • se
  • tr
  • bg
  • nl
  • it
  • pl
  • hu
  • ro
  • ua
  • cs

Uwierzytelnianie LDAP

LDAP

Jak skonfigurować uwierzytelnianie LDAP

Przegląd
Deklarowanie trybu uwierzytelniania LDAP
Tworzenie użytkowników w locie
Grupowe logowanie LDAP
Rozwiązywanie problemów
sytuacje narożne

 

Przegląd

LDAP (Lightweight Directory Access Protocol) to protokół programowy umożliwiający każdemu lokalizowanie organizacji, osób i innych zasobów, takich jak pliki i urządzenia w sieci, zarówno w publicznym Internecie, jak iw firmowym intranecie. LDAP to „lekka” (mniejsza ilość kodu) wersja protokołu Directory Access Protocol (DAP), który jest częścią X.500, standardu usług katalogowych w sieci. LDAP jest lżejszy, ponieważ w swojej początkowej wersji nie zawierał funkcji bezpieczeństwa. Easy Redmine natywnie obsługuje uwierzytelnianie LDAP przy użyciu jednego lub wielu katalogów LDAP. Obsługiwane typy usług katalogowych obejmują Active Directory, OpenLDAP, eDirectory, Sun Java System Directory Server oraz inne kompatybilne usługi katalogowe.

Katalog LDAP jest zorganizowany w prostej hierarchii „drzewa” składającej się z następujących poziomów:

  1. Katalog główny (miejsce początkowe lub źródło drzewa), do którego rozgałęzia się
  2. Kraje, z których każdy ma swoje oddziały
  3. Organizacje, które prowadzą działalność na terenie
  4. Jednostki organizacyjne (działy, wydziały itd.), Które rozgałęziają się (obejmuje wpis dla)
  5. Osoby (w tym osoby, pliki i udostępnione zasoby, takie jak drukarki)

 

Deklarowanie trybu uwierzytelniania LDAP

Przejdź do Administracja i kliknij „Uwierzytelnianie LDAP” w menu. Tutaj znajduje się lista wszystkich istniejących trybów uwierzytelniania LDAP, w tym opcje testowania lub usuwania dowolnego. Aby utworzyć nowy, kliknij zielony przycisk „Nowy tryb uwierzytelniania” w prawym górnym rogu.

Dostawca usług LDAP używa adresu URL do skonfigurowania połączenia z serwerem katalogowym. Aby wygenerować adres URL połączenia LDAP, należy określić następujące pola:

  • Nazwa: Dowolna nazwa katalogu.
  • host: Nazwa hosta LDAP (serwer testowy).
  • Port: Port LDAP (domyślnie jest to 389).
  • LDAPS: Zaznacz to, jeśli chcesz lub musisz użyć LDAPS, aby uzyskać dostęp do katalogu.
  • Konto: Wprowadź nazwę użytkownika, który ma dostęp do odczytu do LDAP, w przeciwnym razie pozostaw to pole puste, jeśli LDAP można odczytać anonimowo (serwery Active Directory zasadniczo nie pozwalają na anonimowy dostęp).
  • Hasło: Hasło do konta.
  • DN bazy: Nazwa wyróżniająca najwyższego poziomu w drzewie katalogów LDAP (przykład: dc = przykład, dc = com).
  • Filtr LDAP: Filtry mogą służyć do ograniczania liczby użytkowników lub grup, które mogą uzyskać dostęp do aplikacji. Zasadniczo filtr ogranicza, z której części drzewa LDAP aplikacja ma się synchronizować. Filtr może i powinien być napisany zarówno dla członkostwa użytkownika, jak i grupy. Gwarantuje to, że aplikacja nie zostanie zalana użytkownikami i grupami, które nie potrzebują dostępu.
     

    Przykładowe filtry

    (ostrzeżenie) Te filtry są napisane dla Active Directory. Aby użyć ich do czegoś takiego jak OpenLDAP, atrybuty będą musiały zostać zmienione.

    Spowoduje to synchronizację tylko użytkowników w grupie „CaptainPlanet” - należy to zastosować do Filtr obiektów użytkownika:

    (&(objectCategory=Person)(sAMAccountName=*)(memberOf=cn=CaptainPlanet,ou=users,dc=company,dc=com))

    Spowoduje to wyszukanie użytkowników należących do tej grupy, bezpośrednio lub poprzez zagnieżdżanie:

    (&(objectCategory=Person)(sAMAccountName=*)(memberOf:1.2.840.113556.1.4.1941:=cn=CaptainPlanet,ou=users,dc=company,dc=com))

    (informacje) Ważne, aby mieć Active Directory memberOf: 1.2.840.113556.1.4.1941 jeśli chcesz znaleźć zagnieżdżone grupy (nie zastępuj ciągu liczbowego) w grupie CaptainPlanet.

    Spowoduje to wyszukanie użytkowników należących do jednej lub wszystkich 4 grup (ognia, wiatru, wody, serca)

    (&(objectCategory=Person)(sAMAccountName=*)(|(memberOf=cn=fire,ou=users,dc=company,dc=com)(memberOf=cn=wind,ou=users,dc=company,dc=com)(memberOf=cn=water,ou=users,dc=company,dc=com)(memberOf=cn=heart,ou=users,dc=company,dc=com)))
  • Limit czasu (w sekundach): Jeśli dostawca LDAP nie otrzyma odpowiedzi LDAP w określonym czasie, przerywa próbę odczytu. Liczba całkowita powinna być większa od zera. Liczba całkowita mniejsza lub równa zero oznacza, że ​​nie określono limitu czasu odczytu, który jest równoważny z nieskończonym oczekiwaniem na odpowiedź, aż zostanie odebrana, co jest domyślnym zachowaniem oryginalnym. Jeśli ta właściwość nie zostanie określona, ​​domyślnie będzie czekać na odpowiedź, aż zostanie odebrana.
  • Tworzenie użytkowników w locie: Zaznaczając to, każdy użytkownik LDAP będzie miał automatycznie utworzone konto Easy Redmine przy pierwszym logowaniu do Easy Redmine. W przeciwnym razie będziesz musiał ręcznie utworzyć użytkownika w Easy Redmine dla każdego użytkownika LDAP, który chce się zalogować.

Atrybuty (przykłady):

  • Atrybut logowania: Nazwa logowania, pod którą użytkownik loguje się i jest uwierzytelniany.
  • Atrybut imienia: Atrybut imienia.
  • Atrybut nazwiska: Atrybut nazwiska.
  • Atrybut e-mail: Atrybut adresu e-mail.

Użytkownicy Easy Redmine powinni teraz móc uwierzytelniać się przy użyciu nazwy użytkownika i hasła LDAP, jeśli ich konta są ustawione na używanie LDAP do uwierzytelniania (sprawdź ustawienie „Tryb uwierzytelniania” podczas edytowania profilu użytkownika).

Aby to przetestować, utwórz użytkownika Easy Redmine z loginem, który pasuje do jego konta LDAP (zwykle Easy Redmine doradzi ci, wyszukując dane LDAP), wybierz nowo utworzony LDAP z listy rozwijanej Tryb uwierzytelniania (to pole jest widoczne na ekranie konta tylko w przypadku zadeklarowania LDAP) i pozostawić jego hasło puste. Spróbuj zalogować się do Easy Redmine przy użyciu nazwy użytkownika i hasła LDAP.

 

Tworzenie użytkowników w locie

Sprawdzając tworzenie użytkowników w locie, każdy użytkownik LDAP będzie miał swoje konto Easy Redmine automatycznie utworzone przy pierwszym logowaniu do Easy Redmine.
W tym celu musisz określić nazwę atrybutów LDAP (imię, nazwisko, e-mail), które będą używane do tworzenia kont Easy Redmine.

Oto typowy przykład użycia Active Directory:

Name = My Directory Host = host.domain.org Port = 389 LDAPS = no Account = MyDomain \ UserName (lub UserName @ MyDomain w zależności od serwera AD) Hasło = Base DN = CN = users, DC = host, DC = domain, DC = org Tworzenie użytkownika w locie = tak Atrybuty Login = sAMAccountName Firstname = givenName Lastname = sN Email = mail

Oto kolejny przykład usługi Active Directory z podzielonym na części intranetem:

Name = Tylko opis strony trybów uwierzytelniania Host = DepartmentName.OrganizationName.local Port = 389 LDAPS = no Account = DepartmentName \ UserName (lub UserName @ MyDomain w zależności od serwera AD lub bind DN uid = Manager, cn = users, dc = MyDomain, dc = com) Hasło = Base DN = DC = DepartmentName, DC = OrganizationName, DC = local Tworzenie użytkownika w locie = tak Atrybuty Login = sAMAccountName Firstname = givenName Lastname = sN Email = mail

Pamiętaj, że nazwy atrybutów LDAP to wielkość liter ma znaczenie.

Konto Dynamic Bind

Powyższa konfiguracja wymagałaby specjalnego konta na serwerze katalogowym, którego Easy Redmine używa do wstępnego uwierzytelnienia. Możliwe jest użycie słowa kluczowego $ login w polu konta, które zostanie zastąpione bieżącym loginem. W takim przypadku hasło można pozostawić puste, na przykład:

Konto: $login@COMPANY.DOMAIN.NAME

or

Konto: firma \ $ login

Podstawowe warianty DN

Chociaż całkiem możliwe, że powyższa podstawowa nazwa wyróżniająca jest standardowa dla usługi Active Directory, usługa Active Directory w witrynie mojego pracodawcy nie używa kontenera Użytkownicy dla standardowych użytkowników, więc instrukcje te skierowały mnie długą i bolesną ścieżką. Polecam również wypróbowanie tylko „DC = host, DC = domena, DC = org”, jeśli logowanie nie powiedzie się w ustawieniach tam.

 

Grupowe logowanie LDAP

Jeśli chcesz tylko zezwolić na logowanie użytkownikom należącym do określonej grupy LDAP, postępuj zgodnie z poniższymi instrukcjami. Oparte są na serwerze OpenLDAP LDAP i Easy Redmine.

1. (Serwer OpenLDAP) Włącz nakładkę członka

1.1 Utwórz plik:

vim ~ / memberof_add.ldif

Z poniższą treścią:

dn: cn = moduł, cn = config
klasa obiektu: olcModuleList
cn: moduł
olcModulePath: / usr / lib / ldap
olcModuleLoad: członek

1.2 Utwórz plik:

vim ~ / memberof_config.ldif

Z poniższą treścią:

dn: olcOverlay = memberof, olcDatabase = {1} hdb, cn = config
klasa obiektu: olcMemberOf
klasa obiektu: olcOverlayConfig
klasa obiektu: olcConfig
objectClass: top
olcNakładka: memberof
olcMemberOfDangling: ignoruj
olcMemberOfRefInt: PRAWDA
olcMemberOfGroupOC: groupOfNames
olcMemberOfMemberAD: członek
olcCzłonekCzłonkaAD: członek

1.3 Załaduj je. Będzie to zależeć od konfiguracji OpenLDAP, dlatego zaproponujemy kilka możliwości:

sudo ldapadd -c -Y ZEWNĘTRZNY -H ldapi: /// -f memberof_add.ldif
sudo ldapadd -c -Y ZEWNĘTRZNY -H ldapi: /// -f memberof_config.ldif

Lub:

ldapadd -D cn = admin, cn = config -w "hasło" -H ldapi: /// -f memberof_add.ldif
ldapadd -D cn = administrator, cn = config -w "hasło" -H ldapi: /// -f memberof_config.ldif

Ponowne uruchomienie NIE jest potrzebne, jeśli używasz dynamicznego silnika konfiguracyjnego środowiska wykonawczego (slapd-config).

1.4 (Opcjonalnie) Przetestuj:

ldapsearch -D cn=admin,dc=przykład,dc=com -x -W -b 'dc=przykład,dc=com' -H 'ldap://127.0.0.1:389/' '(&(objectClass=posixAccount )(memberOf=cn=ldapeasyredmine,ou=groups,dc=example,dc=com))'

2. (Serwer OpenLDAP) Utwórz grupę. W tym przykładzie użytkownik to „ldap_user_1”, a grupa to „ldapeasyredmine”:

dn: cn=ldapeasyredmine,ou=grupy,dc=przykład,dc=com
cn: ldapeasyredmine
opis: Członkowie personelu mogli zalogować się do systemu biletowego Easy Redmine
member: cn = użytkownik_danych_1, ou = ludzie, dc = przykład, dc = com
klasa obiektu: groupOfNames
klasa obiektu: górna

Dostosuj „dn” i „cn”, aby dopasować do struktury DIT

3. (Łatwe Redmine) Edytuj tryb uwierzytelniania LDAP. W moim przypadku "ldap_user_1" jest klasą obiektu "posixAccount":

Podstawowa nazwa wyróżniająca: dc = przykład, dc = com
Filtr: (&(objectClass=posixAccount)(memberOf=cn=ldapeasyredmine,ou=groups,dc=example,dc=com))

 

Rozwiązywanie problemów

Jeśli chcesz korzystać z tworzenia użytkowników w locie, upewnij się, że Easy Redmine może pobrać z LDAP wszystkie informacje wymagane do utworzenia prawidłowego użytkownika.
Na przykład tworzenie użytkowników w locie nie będzie działać, jeśli nie masz prawidłowych adresów e-mail w katalogu (podczas próby zalogowania pojawi się komunikat o błędzie „Nieprawidłowa nazwa użytkownika / hasło”).
(Nie dotyczy to nowszych wersji Easy Redmine; okno dialogowe tworzenia użytkownika jest wypełnione wszystkim, co może znaleźć z serwera LDAP, i prosi nowego użytkownika o wypełnienie reszty.)

Upewnij się również, że nie masz żadnego niestandardowego pola oznaczonego jako wymagany dla kont użytkowników. Te niestandardowe pola uniemożliwiłyby tworzenie kont użytkowników w locie.

Błędy w systemie logowania nie są zgłaszane z żadnymi prawdziwymi informacjami w dziennikach Easy Redmine, co utrudnia rozwiązywanie problemów. Jednak większość potrzebnych informacji można znaleźć za pomocą Wireshark między hostem Easy Redmine a serwerem LDAP. Zauważ, że działa to tylko wtedy, gdy masz uprawnienia do odczytu ruchu sieciowego między tymi dwoma hostami.

Możesz również użyć narzędzia „ldapsearch”, aby sprawdzić, czy Twoje ustawienia są prawidłowe. Zaloguj się do komputera z systemem Linux, na którym znajduje się Twój Easy Redmine (i ewentualnie zainstaluj ldaputils) i uruchom to:

ldapsearch -x -b  "dc=example,dc=com" -H ldap://hostname/ -D "DOMAIN\USER" -w mypassword [searchterm]

Jeśli się powiedzie, otrzymasz listę zawartości AD pasującą do Twojego zapytania. Wtedy będziesz wiedział, jak wypełnić pola w konfiguracji LDAP w Easy Redmine.

Alternatywne sposoby weryfikacji funkcjonalności

  • Spróbuj usunąć filtry LDAP, które, jeśli są niepoprawnie ustawione, mogą usunąć użytkowników, których chcesz znaleźć.
  • Obok „Atrybutu logowania” znajduje się ikona książki. Jeśli klikniesz go, a LDAP zostanie poprawnie ustawiony, „zwykłe atrybuty” zostaną automatycznie wstępnie wypełnione przez rzeczywisty serwer LDAP. Zamiast pól tekstowych pojawiają się pola wyboru dla sprawy, w której użytkownik chce zmienić ustawienia. W większości przypadków użytkownik wcale nie musi tego wypełniać. Jeśli to zadziała, wszystko inne prawdopodobnie będzie działać.
  • W przypadku problemów z połączeniem można użyć przycisku „Test” na liście serwerów LDAP. Uwaga, służy to tylko do sprawdzenia, czy można połączyć się z LDAP. Częstym problemem jest to, że administratorzy nie wypełniają użytkownika systemu LDAP, nawet jeśli ustawienia LDAP są nadal chronione. W takim przypadku test zostanie uruchomiony OK, ponieważ połączenie działa, ale nie można dodać użytkowników, ponieważ LDAP nie „widzi” żadnego.
  • Aby sprawdzić, czy LDAP naprawdę działa, można również użyć numeru „Dostępni użytkownicy” - jeśli jego wartość wynosi 0, LDAP nie zwraca żadnych danych i prawdopodobnie jest niepoprawnie ustawiony. Jeśli istnieje liczba, możesz ją kliknąć, aby rozwinąć i zobaczyć, co pokazuje LDAP (i odpowiednio dostosować filtry).

Konto format wartości

Nazwa użytkownika dla poświadczeń powiązania może wymagać określenia nazwy wyróżniającej zamiast nazwy UPN (użytkownik@domena.com) lub jako domena \ użytkownik, jak wskazano w tym komentarzu w źródło: trunk / vendor / plugins / ruby-net-ldap-0.0.4 / lib / net / ldap.rb:

  # Jak opisano w #bind, większość serwerów LDAP wymaga podania kompletnej nazwy wyróżniającej # jako referencji powiązania wraz z uwierzytelniaczem, takim jak hasło.

Dlatego użytkownik z MyDomain \ MyUserName lub MojaNazwaUżytkownika@MojaDomena.com nazwa użytkownika może wprowadzić tylko MyUserName jako nazwę logowania Easy Redmine.

Powolne uwierzytelnianie LDAP

Jeśli uwierzytelnianie LDAP jest powolne i masz klaster AD, spróbuj podać w polu Host jeden z fizycznych serwerów AD. To może pomóc.

Otwórz DS

Jeśli korzystasz z serwera OpenDS, możesz mieć problemy z kontrolką żądania „Wyniki stronicowane” wysyłaną z początkowym zapytaniem wyszukującym użytkownika według określonego atrybutu logowania. Ta kontrola żądania 1.2.840.113556.1.4.319 nie jest domyślnie dozwolona dla anonimowych użytkowników, co uniemożliwia Easy Redmine znalezienie użytkownika w katalogu, nawet zanim nastąpi powiązanie.

Dodaj globalny ACI w ten sposób

./dsconfig -h SERVER_IP -p 4444 -D cn = "Directory Manager" -w HASŁO -n zestaw-kontrola dostępu-handler-prop --trustAll --add global-aci: \ (targetcontrol = \ "1.2.840.113556.1.4.319 .3.0 \ "\) \ \ (wersja \ 1.2.840.113556.1.4.319 \; \ acl \ \" Anonimowy \ control \ access \ to \ XNUMX \ "\; \ allow \ \ (read \) \ userdn = \ "ldap: /// anyone \" \; \)

Uwaga: Wpisz polecenie w jednym wierszu, użyj znaku ucieczki dokładnie tak, jak pokazano (\ po „acl” ma oznaczać „\” dla spacji).

Niektórzy użytkownicy nie mogą się zalogować

Problem: Określona jednostka organizacyjna użytkowników nie może się zalogować (niepoprawny użytkownik lub hasło), podczas gdy wszyscy inni to robią. Użytkownicy znajdują się w zdalnej witrynie, ale użytkownicy w innych jednostkach organizacyjnych w tej samej witrynie nie otrzymują tego błędu.

Rozwiązanie: Problem najprawdopodobniej nie jest związany z nieprawidłowymi ustawieniami, ale raczej problemem z Active Directory (AD). Użytkownicy, którzy nie mogli się połączyć, mieli pole „Zaloguj się do” ustawione na określony komputer we właściwościach użytkownika usługi AD (administracja AD). Po zmianie na „Loguj się z każdego miejsca” powinno działać. Mówiąc dokładniej, to pole musi być ustawione na: AD User -> Properties -> Account -> Logon from wszędzie.

Problemy z logowaniem podczas korzystania z LDAPS bez ważnego certyfikatu

Podczas korzystania z LDAPS bez ważnego certyfikatu mogą wystąpić problemy z logowaniem. W Redmine 4 certyfikat LDAPS jest zawsze sprawdzany. Z nieważnym certyfikatem użytkownicy nie będą mogli się zalogować. Oczywiście, poprawnym i długoterminowym rozwiązaniem jest użycie ważnego certyfikatu. Ale dopóki tego nie zrobisz, tymczasowym rozwiązaniem jest przejście do Administracja >> Uwierzytelnianie LDAP >> Edytuj odpowiedni tryb uwierzytelniania.

Zmień ustawienie na LDAPS (bez sprawdzania certyfikatu).

Dzięki rozwiązaniu Easy Redmine Server możesz zmienić go luzem z konsoli szyny
rails r "AuthSource.update_all (verify_peer: false)" -e produkcja

lub przez SQL
UPDATE auth_sources set verify_peer = 0;

 

sytuacje narożne

  • Podczas automatycznego importowania / tworzenia użytkowników z LDAP domyślne ustawienie typu użytkownika wprowadzone w formularzu tworzenia użytkownika jest lepsze niż domyślne ustawienie typu użytkownika wprowadzone na LDAP. Po utworzeniu użytkownika tego ustawienia nie można później zmienić (chyba że utworzysz nowy LDAP).

Wypróbuj Easy Redmine w 30-dniowym bezpłatnym okresie próbnym

Pełne funkcje, ochrona SSL, codzienne kopie zapasowe w Twojej geolokalizacji