Directory Connector

Directory Connector umożliwia FoxIDs używanie zewnętrznego katalogu jako autorytatywnego źródła haseł użytkowników wewnętrznych i wybranych danych użytkownika.

Użytkownicy nadal istnieją jako użytkownicy wewnętrzni w środowisku FoxIDs. Podczas uwierzytelniania hasłem i operacji w cyklu życia hasła FoxIDs wywołuje API Directory Connector zamiast walidować hasło wyłącznie względem wewnętrznego użytkownika FoxIDs.

Ponieważ FoxIDs utrzymuje wewnętrzny rekord użytkownika, obsługę uwierzytelniania wieloskładnikowego (MFA) w FoxIDs można dodać do użytkowników z zewnętrznego repozytorium. Connector może zwracać ustawienia użytkownika związane z MFA, takie jak requireMultiFactor i wyłączone metody two-factor, a FoxIDs stosuje te ustawienia do użytkownika wewnętrznego, podczas gdy zewnętrzne repozytorium pozostaje autorytatywne dla haseł i wybranych danych użytkownika.

Dla Active Directory FoxIDs zawiera komponent Directory Connector dla Active Directory wdrażalny w IIS.

Użyj Directory Connector, gdy:

  • chcesz, aby użytkownicy logowali się przy użyciu zwykłej metody uwierzytelniania login.
  • chcesz włączyć użytkowników z istniejącego katalogu dla aplikacji OpenID Connect i SAML 2.0 przez FoxIDs.
  • zewnętrzny katalog jest autorytatywny dla walidacji haseł i zmian haseł.
  • chcesz, aby FoxIDs utrzymywał wewnętrzny rekord użytkownika z identyfikatorami, właściwościami, claims, ustawieniami uwierzytelniania wieloskładnikowego (MFA), przydziałami dostępu i opcjonalnie lokalną kopią hasła.
  • chcesz mieć możliwość późniejszego przejścia na użytkowników wewnętrznych i walidację haseł w FoxIDs bez zmuszania wszystkich użytkowników do resetu hasła.

Na każde środowisko przypada jeden Directory Connector. Po włączeniu działa on na poziomie środowiska.

Jak to działa

Gdy użytkownik loguje się przy użyciu nazwy użytkownika i hasła, FoxIDs wywołuje API Directory Connector.

Po pomyślnej walidacji FoxIDs tworzy lub aktualizuje użytkownika wewnętrznego w środowisku na podstawie odpowiedzi API. Odpowiedź musi zawierać stabilne directoryUserId, które jest zapisywane przy użytkowniku wewnętrznym i służy do powiązania użytkownika FoxIDs z użytkownikiem w katalogu zewnętrznym.

directoryUserId nie jest identyfikatorem użytkownika znanym użytkownikowi końcowemu. Jest to oddzielny, stabilny identyfikator w katalogu zewnętrznym. Nie używaj adresu e-mail, telefonu ani nazwy użytkownika jako directoryUserId, ponieważ te wartości mogą się zmieniać. Wartość musi być stabilna i unikalna w katalogu zewnętrznym.

Jeśli FoxIDs zna już directoryUserId użytkownika wewnętrznego, jest ono wysyłane w żądaniu Directory Connector razem z dokładnie jednym z identyfikatorów użytkownika: adresem e-mail, telefonem lub nazwą użytkownika. Dzięki temu katalog zewnętrzny może zidentyfikować użytkownika nawet wtedy, gdy identyfikator się zmienił.

Jeśli API Directory Connector pomyślnie zweryfikuje użytkownika, FoxIDs aktualizuje użytkownika wewnętrznego o identyfikatory, wybrane właściwości i claims zwrócone przez API.

Jeśli connector zgłosi, że użytkownik jest wyłączony lub usunięty, FoxIDs wyłączy lub usunie użytkownika wewnętrznego w środowisku.

Lokalna kopia hasła

Katalog zewnętrzny jest autorytatywny tak długo, jak włączony jest Directory Connector. FoxIDs nie wraca do lokalnego hasha hasła, jeśli API Directory Connector jest tymczasowo niedostępne.

Domyślnie FoxIDs zapisuje lokalną kopię hasła przy użytkowniku wewnętrznym po pomyślnej walidacji hasła przez connector lub po operacji z cyklu życia hasła. Można to wyłączyć w ustawieniach środowiska.

Lokalna kopia hasła nie jest używana, gdy Directory Connector jest włączony. Istnieje po to, aby umożliwić późniejsze przejście na użytkowników wewnętrznych i walidację haseł w FoxIDs bez zmuszania wszystkich użytkowników do resetu hasła.

Cykl życia hasła

Operacje z cyklu życia hasła są delegowane do API Directory Connector:

  • Uwierzytelnianie hasłem wywołuje endpoint authentication.
  • Login create-user flow calls the create-user endpoint.
  • Zmiana hasła użytkownika wywołuje endpoint change-password.
  • Przepływy ustawiania hasła i resetowania hasła wywołują endpoint set-password.

FoxIDs zwykle wywołuje endpointy cyklu życia hasła tylko wtedy, gdy użytkownik wewnętrzny jest znany i ma directoryUserId. Wyjątkiem jest change-password podczas pierwszego logowania, gdy katalog zewnętrzny zwrócił password_expired, zanim FoxIDs utworzył użytkownika wewnętrznego. W takim przypadku FoxIDs wysyła identyfikator logowania i bieżące hasło bez directoryUserId; po pomyślnej zmianie hasła FoxIDs używa odpowiedzi sukcesu do utworzenia użytkownika wewnętrznego i zapisania zwróconego directoryUserId.

FoxIDs nie aktualizuje swojej wewnętrznej historii haseł, gdy używany jest Directory Connector, ponieważ FoxIDs nie musi znać wszystkich zmian haseł w katalogu zewnętrznym.

Polityka haseł i komunikaty o błędach

Katalog zewnętrzny egzekwuje politykę haseł. FoxIDs używa polityki haseł środowiska podczas wyświetlania komunikatów o błędach polityki haseł zwracanych przez connector.

Skonfiguruj politykę haseł środowiska tak, aby odpowiadała polityce haseł katalogu zewnętrznego. Jeśli nie są zgodne, użytkownicy mogą widzieć wskazówki dotyczące haseł, które nie odzwierciedlają rzeczywistych wymagań katalogu zewnętrznego.

Na przykład, jeśli katalog zewnętrzny odrzuci hasło, ponieważ jest zbyt krótkie, FoxIDs użyje minimalnej długości hasła z konfiguracji środowiska podczas renderowania komunikatu o błędzie.

Implementacja API

Implementujesz API Directory Connector i konfigurujesz FoxIDs za pomocą bazowego adresu URL i sekretu.

The API has a base URL and four endpoints:

  • authentication waliduje bieżące hasło użytkownika.
  • create-user creates a new user in the external directory and returns the created user.
  • change-password waliduje bieżące hasło i zmienia je na nowe.
  • set-password ustawia nowe hasło bez walidacji bieżącego hasła.

Jeśli bazowy adres URL to https://somewhere.org/directory, endpointy są następujące:

  • https://somewhere.org/directory/authentication
  • https://somewhere.org/directory/create-user
  • https://somewhere.org/directory/change-password
  • https://somewhere.org/directory/set-password

FoxIDs Cloud wywołuje Twoje API z adresu IP 57.128.60.142. Adresy IP mogą się zmieniać lub zostać rozszerzone.

Bezpieczeństwo

Żądania są zabezpieczone za pomocą HTTP Basic authentication:

  • Nazwa użytkownika: directory_connector
  • Hasło: skonfigurowany sekret API

Wywołanie jest wykonywane metodą HTTP POST z ciałem JSON.

FoxIDs wysyła wybrany język w nagłówku żądania Accept-Language, na przykład Accept-Language: da-DK. W procesie logowania odpowiada on językowi wybranemu przez ui_locales lub przeglądarkę, a FoxIDs używa angielskiego jako języka zastępczego. API może użyć tego nagłówka do lokalizacji komunikatów dla użytkownika i musi wybrać własny język zastępczy, jeśli nie obsługuje żądanego języka. Ten nagłówek jest wysyłany do wszystkich czterech endpointów.

Żądanie authentication

Endpoint authentication otrzymuje hasło użytkownika i dokładnie jeden identyfikator użytkownika. FoxIDs wysyła directoryUserId, jeśli użytkownik wewnętrzny istnieje i wartość jest znana.

{
  "directoryUserId": "a1b2c3d4",
  "email": "user1@somewhere.org",
  "password": "testpass1"
}

Pola:

  • directoryUserId jest opcjonalne. FoxIDs wysyła je, gdy użytkownik wewnętrzny istnieje i wartość jest znana.
  • Wysyłane jest dokładnie jedno z pól email, phone lub username.
  • password jest wymagane.

FoxIDs wybiera identyfikator na podstawie danych logowania podanych przez użytkownika i włączonych ustawień identyfikatorów. Na przykład, jeśli włączona jest tylko nazwa użytkownika, a użytkownik wpisze user1@somewhere.org, FoxIDs wyśle tę wartość jako username. FoxIDs usuwa otaczające białe znaki przed wysłaniem nazwy użytkownika do connectora.

Create-user request

Endpoint create-user otrzymuje dokładnie jeden identyfikator użytkownika, wymagane hasło, wybrane właściwości create-user oraz claims zebrane podczas przepływu create-user w FoxIDs.

{
  "email": "user1@somewhere.org",
  "password": "testpass1",
  "confirmAccount": true,
  "requireMultiFactor": false,
  "claims": [
    { "type": "given_name", "value": "User" },
    { "type": "family_name", "value": "One" }
  ]
}

Pola:

  • Wysyłane jest dokładnie jedno z pól email, phone lub username.
  • password jest wymagane. Utwórz użytkownika bez hasła nie jest obsługiwane z Directory Connector, ponieważ API Directory Connector uwierzytelnia użytkowników hasłem.
  • confirmAccount i requireMultiFactor to żądane ustawienia tworzenia użytkownika w FoxIDs.
  • claims zawiera oświadczenia niebędące identyfikatorami, zebrane podczas tworzenia użytkownika w FoxIDs.

W przypadku powodzenia zwróć standardową odpowiedź sukcesu. FoxIDs zapisuje zwrócony directoryUserId w użytkowniku wewnętrznym utworzonym po utworzeniu użytkownika w katalogu zewnętrznym.

Żądanie change-password

Endpoint change-password otrzymuje dokładnie jeden identyfikator użytkownika, bieżące hasło i nowe hasło. FoxIDs wysyła directoryUserId, gdy użytkownik wewnętrzny istnieje i wartość jest znana.

{
  "directoryUserId": "a1b2c3d4",
  "email": "user1@somewhere.org",
  "currentPassword": "oldpass1",
  "newPassword": "newpass1"
}

Pola:

  • directoryUserId jest opcjonalne. FoxIDs wysyła je, gdy użytkownik wewnętrzny istnieje i wartość jest znana. Może zostać pominięte podczas pierwszego logowania, jeśli katalog zewnętrzny wymaga zmiany hasła, zanim FoxIDs utworzy użytkownika wewnętrznego.
  • Wysyłane jest dokładnie jedno z pól email, phone lub username.
  • currentPassword i newPassword są wymagane.

Żądanie set-password

Endpoint set-password otrzymuje stabilne powiązanie użytkownika z katalogiem, dokładnie jeden identyfikator użytkownika oraz nowe hasło.

{
  "directoryUserId": "a1b2c3d4",
  "email": "user1@somewhere.org",
  "password": "newpass1"
}

Pola:

  • directoryUserId jest wysyłane i powinno być używane jako stabilne powiązanie z katalogiem.
  • Wysyłane jest dokładnie jedno z pól email, phone lub username. FoxIDs wybiera pierwszy dostępny wewnętrzny identyfikator użytkownika w kolejności: e-mail, telefon, nazwa użytkownika.
  • password jest wymagane.

Odpowiedź sukcesu

W przypadku sukcesu API musi zwrócić kod stanu HTTP 200 oraz odpowiedź użytkownika.

{
  "directoryUserId": "a1b2c3d4",
  "email": "user1@somewhere.org",
  "phone": "+4511223344",
  "username": "user1",
  "confirmAccount": true,
  "emailVerified": true,
  "phoneVerified": true,
  "disableTwoFactorApp": false,
  "disableTwoFactorSms": false,
  "disableTwoFactorEmail": false,
  "requireMultiFactor": false,
  "claims": [
    { "type": "name", "value": "User One" },
    { "type": "role", "value": "employee" }
  ]
}

FoxIDs używa odpowiedzi do utworzenia lub zaktualizowania użytkownika wewnętrznego w środowisku.

Pola:

  • directoryUserId jest wymagane. Musi być stabilne i unikalne w katalogu zewnętrznym i jest zapisywane przy użytkowniku wewnętrznym FoxIDs.
  • email, phone i username są opcjonalne indywidualnie, ale co najmniej jedno z nich musi być obecne. FoxIDs zapisuje zwrócone wartości jako identyfikatory użytkownika wewnętrznego. Zwrócone wartości identyfikatorów użytkownika muszą jednoznacznie identyfikować jednego użytkownika w katalogu zewnętrznym używanym przez connector.
  • phone musi zawierać numer kierunkowy kraju w formacie międzynarodowym, na przykład +4511223344.
  • confirmAccount określa, czy FoxIDs ma uruchomić przepływ potwierdzenia dla użytkownika wewnętrznego.
  • emailVerified określa, czy adres e-mail użytkownika wewnętrznego ma zostać oznaczony jako zweryfikowany.
  • phoneVerified określa, czy numer telefonu użytkownika wewnętrznego ma zostać oznaczony jako zweryfikowany.
  • disableTwoFactorApp wyłącza uwierzytelnianie dwuskładnikowe przy użyciu aplikacji authenticator dla użytkownika wewnętrznego.
  • disableTwoFactorSms wyłącza uwierzytelnianie dwuskładnikowe SMS dla użytkownika wewnętrznego.
  • disableTwoFactorEmail wyłącza uwierzytelnianie dwuskładnikowe e-mail dla użytkownika wewnętrznego.
  • requireMultiFactor określa, czy użytkownik wewnętrzny musi używać uwierzytelniania wieloskładnikowego.
  • claims są opcjonalne. FoxIDs zapisuje zwrócone claims przy użytkowniku wewnętrznym.

FoxIDs ignoruje oświadczenia, w których pole type lub value nie występuje, ma wartość null, jest puste lub zawiera wyłącznie białe znaki. Gdy rejestrowanie śladów komunikatów jest włączone, ślad odpowiedzi zawiera otrzymane oświadczenia przed ich filtrowaniem. Długie komunikaty śledzenia są obcinane.

Odpowiedź błędu

Jeśli Basic authentication zostanie odrzucone, zwróć kod stanu HTTP 401 i invalid_api_id_secret.

{
  "error": "invalid_api_id_secret",
  "errorMessage": "Invalid API ID or secret."
}

Jeśli użytkownik nie istnieje podczas wywołania endpointu authentication bez directoryUserId, zwróć kod stanu HTTP 400, 401 lub 403 i user_not_exists.

{
  "error": "user_not_exists",
  "errorMessage": "User not found."
}

Jeśli hasło zostanie odrzucone przez endpoint authentication, zwróć kod stanu HTTP 400, 401 lub 403 i invalid_password.

{
  "error": "invalid_password",
  "errorMessage": "Invalid password."
}

Jeśli identyfikator użytkownika i hasło są prawidłowe, ale logowanie zostaje odrzucone z innego powodu, zwróć z authentication kod statusu HTTP 400, 401 lub 403 oraz login_rejected. Jest to obsługiwane zarówno z directoryUserId, jak i bez niego. Opcjonalny uiErrorMessage jest wyświetlany jako zwykły tekst w formularzu logowania. API dostarcza przetłumaczony komunikat na podstawie Accept-Language.

{
  "error": "login_rejected",
  "errorMessage": "Credentials verified; login rejected by directory policy.",
  "uiErrorMessage": "You cannot log in here. Contact support."
}

Jeśli uiErrorMessage zostanie pominięty, ma wartość null, jest pusty lub zawiera tylko białe znaki, FoxIDs wyświetla ten sam zlokalizowany ogólny komunikat logowania co dla invalid_password, user_not_exists, user_disabled i user_deleted. Odrzucone logowanie jest uwzględniane przez istniejącą ochronę przed wielokrotnymi nieudanymi próbami logowania. Nie powoduje utworzenia, aktualizacji, wyłączenia ani usunięcia użytkownika wewnętrznego.

Jeśli bieżące hasło zostanie odrzucone przez endpoint change-password, zwróć kod stanu HTTP 400, 401 lub 403 i invalid_current_password.

{
  "error": "invalid_current_password",
  "errorMessage": "Invalid current password."
}

Pole errorMessage zawiera tekst diagnostyczny przeznaczony do dzienników FoxIDs i nie jest wyświetlane użytkownikowi końcowemu. Podaj przyczynę błędu, ale nigdy nie umieszczaj haseł, sekretów API ani kluczy prywatnych.

FoxIDs wyświetla zwrócony uiErrorMessage tylko dla login_rejected. Dla pozostałych obsługiwanych kodów błędów FoxIDs wybiera komunikat dla użytkownika z własnych zlokalizowanych zasobów tekstowych. Tekst diagnostyczny w errorMessage nigdy nie zastępuje komunikatu dla użytkownika.

Obsługiwane kody błędów według endpointu:

Kod błędu authentication create-user change-password set-password Znaczenie
invalid_api_id_secret Tak Tak Tak Tak Nazwa użytkownika API lub sekret dla HTTP Basic authentication jest nieprawidłowy.
user_exists Nie Tak Nie Nie Użytkownik o podanym identyfikatorze już istnieje w katalogu zewnętrznym.
user_not_exists Tak, bez directoryUserId Nie Tak, bez directoryUserId Nie Żaden użytkownik w katalogu zewnętrznym nie odpowiada podanym identyfikatorom użytkownika.
invalid_password Tak Nie Nie Nie Katalog odrzucił hasło w żądaniu uwierzytelnienia.
login_rejected Tak Nie Nie Nie Logowanie zostało odrzucone po weryfikacji identyfikatora użytkownika i hasła. Opcjonalny uiErrorMessage jest wyświetlany w formularzu logowania.
invalid_current_password Nie Nie Tak Nie Katalog odrzucił bieżące hasło w żądaniu zmiany hasła.
create_user_not_supported Nie Tak Nie Nie Konektor nie obsługuje tworzenia użytkowników w katalogu zewnętrznym.
user_disabled Tak Nie Tak Tak Użytkownik istnieje w katalogu, ale jest wyłączony. FoxIDs wyłączy użytkownika wewnętrznego.
user_deleted Tak, z directoryUserId Nie Tak, z directoryUserId Tak, z directoryUserId Użytkownik w katalogu zewnętrznym powiązany przez directoryUserId już nie istnieje lub został usunięty. FoxIDs usunie użytkownika wewnętrznego.
password_not_accepted Tak Tak Tak Tak Hasło weryfikowane, używane podczas tworzenia użytkownika, zmieniane lub ustawiane zostało odrzucone przez regułę haseł w katalogu, której nie odpowiada bardziej szczegółowy kod.
password_min_length Tak Tak Tak Tak Hasło weryfikowane, używane podczas tworzenia użytkownika, zmieniane lub ustawiane jest krótsze niż minimalna długość hasła w katalogu.
password_max_length Tak Tak Tak Tak Hasło weryfikowane, używane podczas tworzenia użytkownika, zmieniane lub ustawiane jest dłuższe niż maksymalna długość hasła w katalogu.
password_banned_characters Tak Tak Tak Tak Hasło weryfikowane, używane podczas tworzenia użytkownika, zmieniane lub ustawiane zawiera co najmniej jeden znak lub wyraz odrzucany przez katalog.
password_complexity Tak Tak Tak Tak Starszy błąd złożoności znaków, interpretowany przez FoxIDs jako password_character_variation. W nowych integracjach używaj jednego z dwóch szczegółowych kodów błędów dotyczących znaków.
password_character_repeat Tak Tak Tak Tak Hasło weryfikowane, używane podczas tworzenia użytkownika, zmieniane lub ustawiane zawiera zbyt wiele powtórzeń znaków.
password_character_variation Tak Tak Tak Tak Hasło weryfikowane, używane podczas tworzenia użytkownika, zmieniane lub ustawiane nie zawiera wystarczająco zróżnicowanych znaków.
password_email_text_complexity Tak Tak Tak Tak Hasło weryfikowane, używane podczas tworzenia użytkownika, zmieniane lub ustawiane zawiera adres e-mail użytkownika lub jego część.
password_phone_text_complexity Tak Tak Tak Tak Hasło weryfikowane, używane podczas tworzenia użytkownika, zmieniane lub ustawiane zawiera numer telefonu użytkownika lub jego część.
password_username_text_complexity Tak Tak Tak Tak Hasło weryfikowane, używane podczas tworzenia użytkownika, zmieniane lub ustawiane zawiera nazwę użytkownika lub jej część.
password_url_text_complexity Tak Tak Tak Tak Hasło weryfikowane, używane podczas tworzenia użytkownika, zmieniane lub ustawiane zawiera tekst związany z adresem URL FoxIDs.
password_risk Tak Tak Tak Tak Hasło weryfikowane, używane podczas tworzenia użytkownika, zmieniane lub ustawiane jest znane jako ryzykowne, ujawnione lub niebezpieczne z innego powodu.
password_history Tak Tak Tak Tak Hasło weryfikowane, używane podczas tworzenia użytkownika, zmieniane lub ustawiane zostało odrzucone, ponieważ było już wcześniej używane.
password_expired Tak Tak Tak Tak Hasło weryfikowane, używane podczas tworzenia użytkownika, zmieniane lub ustawiane wygasło i musi zostać zmienione, zanim uwierzytelnianie będzie mogło być kontynuowane.
new_password_equals_current Nie Nie Tak Nie Nowe hasło jest takie samo jak bieżące. set-password nie może zwrócić tego błędu, ponieważ nie otrzymuje bieżącego hasła.

W przypadku błędów polityki haseł FoxIDs używa polityki haseł środowiska do wyświetlenia komunikatu o błędzie dla użytkownika. Zobacz Polityka haseł i komunikaty o błędach.

Zwracaj wyłącznie kod błędu obsługiwany przez endpoint i przekazany directoryUserId, zgodnie z powyższą tabelą. Nieobsługiwany kod, nieprawidłowo sformatowana odpowiedź lub nieoczekiwany status HTTP oznacza błąd integracji i prowadzi do ogólnej strony błędu. W przypadku błędu technicznego w konektorze zwróć kod stanu HTTP 500. Zobacz Rozwiązywanie problemów z błędami w przeglądarce, aby znaleźć szczegóły diagnostyczne za pomocą identyfikatorów widocznych na stronie błędu.

Błędy uwierzytelniania i prywatność użytkowników

Nieuwierzytelniony podmiot wywołujący nie może na podstawie błędu logowania ustalić, czy istnieje dana nazwa użytkownika lub adres e-mail. Podczas uwierzytelniania hasłem FoxIDs przetwarza obsługiwane błędy w następujący sposób:

Błąd konektora Wynik widoczny dla użytkownika
invalid_password, user_not_exists, user_disabled lub user_deleted Ten sam ogólny komunikat logowania, na przykład Nieprawidłowy adres e-mail lub hasło., przetłumaczony na aktywny język i dostosowany do włączonych identyfikatorów logowania.
login_rejected Podany uiErrorMessage lub ten sam ogólny komunikat logowania, jeśli go brakuje albo jest pusty, w tym samym miejscu formularza logowania.
password_not_accepted Strona zmiany hasła z ogólnymi wskazówkami dotyczącymi polityki haseł.
password_expired lub inny szczegółowy błąd polityki haseł Strona zmiany hasła z odpowiednimi zlokalizowanymi wskazówkami dotyczącymi polityki haseł.

Konektor musi zweryfikować podane bieżące hasło przed zwróceniem błędu polityki haseł z authentication. W przeciwnym razie inna strona lub komunikat może umożliwić atakującemu odkrywanie użytkowników i potwierdzanie ich identyfikatorów przez odgadywanie nazw użytkowników lub adresów e-mail. W przypadku change-password zweryfikuj bieżące hasło przed zwróceniem wskazówek dotyczących nowego hasła, które są specyficzne dla konta. Ogólne kontrole formatu nie mogą ujawniać, czy konto istnieje.

Jeśli z jakiegokolwiek powodu użytkownik nie może logować się za pomocą tego procesu logowania, najpierw zweryfikuj podany identyfikator użytkownika i hasło. Odmowę opartą na tym ograniczeniu zwracaj dopiero po pomyślnej weryfikacji obu danych, aby ograniczenie nie ujawniło, czy odgadnięty identyfikator należy do rzeczywistego użytkownika. Zwróć login_rejected z authentication, umieść przyczynę diagnostyczną w errorMessage i opcjonalnie podaj bezpieczne wskazówki dla użytkownika w uiErrorMessage. Jeśli nie można zweryfikować danych logowania, zwróć zwykły błąd uwierzytelniania bez ujawniania ograniczenia.

FoxIDs polega na tym, że connector zweryfikuje dane logowania przed zwróceniem login_rejected; pomyślne wyszukanie konta ani znajomość directoryUserId nie wystarczą. Przed weryfikacją danych logowania wszelkie instrukcje lub przyciski dotyczące alternatywnych metod logowania należy wyświetlać niezależnie od tego, czy podany identyfikator odpowiada kontu.

Używaj user_disabled i user_deleted wyłącznie do zgłaszania odpowiedniego stanu konta w katalogu. Powodują one również wyłączenie lub usunięcie użytkownika wewnętrznego i cofnięcie jego dostępu; nie są to ogólne kody odmowy logowania.

Obsługuj błędy w spójny sposób dla znanych i nieznanych identyfikatorów, uwzględniając obserwowalne czasy odpowiedzi i ochronę przed powtarzanymi próbami. Sam ogólny komunikat nie zapobiega odkrywaniu użytkowników, jeśli inne przekierowanie, status lub czas odpowiedzi ujawnia wynik. Przy implementacji konektora przestrzegaj wytycznych OWASP dotyczących błędów uwierzytelniania.

Przykład API

Przykład DirectoryConnectorApiSample pokazuje, jak zaimplementować API Directory Connector w ASP.NET Core.

Przykład obejmuje:

  • endpointy authentication, create-user, change-password i set-password.
  • HTTP Basic authentication z nazwą użytkownika API directory_connector.
  • mały katalog in-memory z użytkownikami demonstracyjnymi i stabilnymi wartościami directoryUserId.
  • przykłady błędów polityki haseł, takich jak password_min_length, password_banned_characters i new_password_equals_current.
  • przykład wyłączonego użytkownika, który zwraca user_disabled.

Kolekcji Postman directory-connector-api.postman_collection.json można użyć do wywoływania i testowania przykładowego API za pomocą Postman.

Komponent Active Directory

FoxIDs zawiera komponent Directory Connector dla Active Directory, który można wdrożyć w IIS. Komponent implementuje API Directory Connector dla jednej domeny AD/LDAP i może walidować hasła, zmieniać hasła, ustawiać hasła, zwracać skonfigurowane atrybuty AD jako claims oraz zwracać skonfigurowane zagnieżdżone członkostwa w grupach AD jako claims.

Konfiguracja

Skonfiguruj Directory Connector w ustawieniach środowiska w FoxIDs Control Client.

  1. Wybierz kartę Settings.
  2. Wybierz kartę Environment.
  3. Znajdź sekcję Directory Connector.
  4. Włącz Directory Connector.
  5. Dodaj bazowy adres URL API bez folderu endpointu w polu API URL.
  6. Dodaj API secret.
  7. Zdecyduj, czy lokalna kopia hasła ma być zapisywana.
  8. Skonfiguruj politykę haseł środowiska tak, aby odpowiadała polityce haseł katalogu zewnętrznego.
  9. Kliknij Update.

Ustawienia Directory Connector