Directory Connector
Directory Connector ermöglicht es FoxIDs, ein externes Verzeichnis als autoritative Quelle für die Kennwörter interner Benutzer und ausgewählte Benutzerdaten zu verwenden.
Die Benutzer existieren weiterhin als interne Benutzer in der FoxIDs-Umgebung. Während der Kennwortauthentifizierung und bei Vorgängen im Kennwortlebenszyklus ruft FoxIDs die Directory Connector API auf, anstatt das Kennwort nur gegen den internen FoxIDs-Benutzer zu validieren.
Da FoxIDs einen internen Benutzerdatensatz beibehält, kann FoxIDs-Multi-Faktor-Authentifizierung (MFA) für Benutzer aus dem externen Repository ergänzt werden. Der Connector kann MFA-bezogene Benutzereinstellungen zurückgeben, z. B. requireMultiFactor und deaktivierte Zwei-Faktor-Methoden, und FoxIDs wendet diese Einstellungen auf den internen Benutzer an, während das externe Repository für Kennwörter und ausgewählte Benutzerdaten autoritativ bleibt.
Für Active Directory enthält FoxIDs eine in IIS bereitstellbare Directory Connector für Active Directory-Komponente.
Verwenden Sie Directory Connector, wenn:
- sich Benutzer mit der normalen login-Authentifizierungsmethode anmelden sollen.
- Sie Benutzer aus einem vorhandenen Verzeichnis für OpenID Connect- und SAML 2.0-Anwendungen über FoxIDs aktivieren möchten.
- Ihr externes Verzeichnis für die Kennwortvalidierung und Kennwortänderungen autoritativ ist.
- FoxIDs einen internen Benutzerdatensatz mit Kennungen, Eigenschaften, Claims, Multi-Faktor-Authentifizierung (MFA)-Einstellungen, Zugriffszuweisungen und optional einer lokalen Kennwortkopie beibehalten soll.
- Sie später auf interne Benutzer und Kennwortvalidierung in FoxIDs umstellen möchten, ohne alle Benutzer zu einem Kennwort-Reset zu zwingen.
Es gibt einen Directory Connector pro Umgebung. Wenn er aktiviert ist, gilt er auf Umgebungsebene.
So funktioniert es
Wenn sich ein Benutzer mit Benutzername und Kennwort anmeldet, ruft FoxIDs die Directory Connector API auf.
Bei erfolgreicher Validierung erstellt oder aktualisiert FoxIDs den internen Benutzer in der Umgebung auf Grundlage der API-Antwort. Die Antwort muss eine stabile directoryUserId enthalten, die auf dem internen Benutzer gespeichert wird und zur Bindung des FoxIDs-Benutzers an den Benutzer im externen Verzeichnis dient.
Die directoryUserId ist keine Benutzerkennung, die dem Endbenutzer bekannt ist. Es handelt sich um eine separate stabile externe Verzeichnis-ID. Verwenden Sie E-Mail, Telefonnummer oder Benutzername nicht als directoryUserId, da sich diese Werte ändern können. Der Wert muss im externen Verzeichnis stabil und eindeutig sein.
Wenn FoxIDs die directoryUserId des internen Benutzers bereits kennt, wird sie zusammen mit genau einer der Kennungen E-Mail, Telefonnummer oder Benutzername des Benutzers in der Directory Connector-Anfrage gesendet. Dadurch kann das externe Verzeichnis den Benutzer auch dann identifizieren, wenn sich eine Kennung geändert hat.
Wenn die Directory Connector API den Benutzer erfolgreich validiert, aktualisiert FoxIDs den internen Benutzer mit den von der API zurückgegebenen Kennungen, ausgewählten Eigenschaften und Claims.
Wenn der Connector meldet, dass der Benutzer deaktiviert oder gelöscht ist, deaktiviert oder löscht FoxIDs den internen Benutzer in der Umgebung.
Lokale Kennwortkopie
Das externe Verzeichnis ist autoritativ, solange Directory Connector aktiviert ist. FoxIDs greift nicht auf den lokalen Kennworthash zurück, wenn die Directory Connector API vorübergehend nicht verfügbar ist.
Standardmäßig speichert FoxIDs nach einer erfolgreichen Kennwortvalidierung oder einem Kennwortlebenszyklusvorgang über den Connector eine lokale Kennwortkopie auf dem internen Benutzer. Dies kann in den Umgebungseinstellungen deaktiviert werden.
Die lokale Kennwortkopie wird nicht verwendet, solange Directory Connector aktiviert ist. Sie dient dazu, später auf interne Benutzer und Kennwortvalidierung in FoxIDs umzustellen, ohne alle Benutzer zu einem Kennwort-Reset zu zwingen.
Kennwortlebenszyklus
Vorgänge des Kennwortlebenszyklus werden an die Directory Connector API delegiert:
- Die Kennwortauthentifizierung ruft den Endpunkt
authenticationauf. - Login create-user flow calls the
create-userendpoint. - Das Ändern des Benutzerkennworts ruft den Endpunkt
change-passwordauf. - Set-password- und Reset-password-Abläufe rufen den Endpunkt
set-passwordauf.
The API has a base URL and four endpoints:
FoxIDs aktualisiert seinen internen Kennwortverlauf nicht, wenn Directory Connector verwendet wird, da FoxIDs nicht unbedingt alle Kennwortänderungen im externen Verzeichnis kennt.
Kennwortrichtlinie und Fehlermeldungen
Das externe Verzeichnis erzwingt die Kennwortrichtlinie. FoxIDs verwendet die Kennwortrichtlinie der Umgebung, wenn Kennwortrichtlinien-Fehlermeldungen angezeigt werden, die vom Connector zurückgegeben wurden.
Konfigurieren Sie die Kennwortrichtlinie der Umgebung so, dass sie der Kennwortrichtlinie des externen Verzeichnisses entspricht. Wenn sie nicht übereinstimmen, können Benutzer Kennworthinweise sehen, die nicht den tatsächlichen Anforderungen des externen Verzeichnisses entsprechen.
Wenn das externe Verzeichnis beispielsweise ein Kennwort zurückweist, weil es zu kurz ist, verwendet FoxIDs beim Anzeigen der Fehlermeldung die Mindestlänge des Kennworts aus der Umgebung.
API implementieren
Sie implementieren eine Directory Connector API und konfigurieren FoxIDs mit deren Basis-URL und Secret.
The API has a base URL and four endpoints:
authenticationvalidiert das aktuelle Kennwort eines Benutzers.create-usercreates a new user in the external directory and returns the created user.change-passwordvalidiert das aktuelle Kennwort und ändert es in ein neues Kennwort.set-passwordsetzt ein neues Kennwort, ohne das aktuelle Kennwort zu validieren.
The API has a base URL and four endpoints:
https://somewhere.org/directory/authenticationhttps://somewhere.org/directory/create-userhttps://somewhere.org/directory/change-passwordhttps://somewhere.org/directory/set-password
FoxIDs Cloud ruft Ihre API von IP
57.128.60.142auf. IP(s) können sich ändern oder erweitert werden.
Sicherheit
Anfragen werden mit HTTP Basic authentication abgesichert:
- Benutzername:
directory_connector - Kennwort: das konfigurierte API-Secret
Der Aufruf erfolgt per HTTP POST mit einem JSON-Body.
FoxIDs sendet die ausgewählte Sprache im HTTP-Anforderungsheader Accept-Language, zum Beispiel Accept-Language: da-DK. In einem Anmeldeablauf entspricht sie der über ui_locales oder den Browser ausgewählten Sprache; FoxIDs verwendet Englisch als Rückfallsprache. Die API kann diesen Header zur Lokalisierung benutzerseitiger Meldungen verwenden und muss eine eigene Rückfallsprache wählen, wenn sie die angeforderte Sprache nicht unterstützt. Dieser Header wird an alle vier Endpunkte gesendet.
Authentifizierungsanfrage
Der Endpunkt authentication empfängt das Kennwort des Benutzers und genau eine Benutzerkennung. FoxIDs sendet directoryUserId, wenn der interne Benutzer existiert und der Wert bekannt ist.
{
"directoryUserId": "a1b2c3d4",
"email": "user1@somewhere.org",
"password": "testpass1"
}
Felder:
directoryUserIdist optional. FoxIDs sendet sie, wenn der interne Benutzer existiert und der Wert bekannt ist.- Genau eine von
email,phoneoderusernamewird gesendet. passwordist erforderlich.
FoxIDs wählt die Kennung aus der Login-Eingabe des Benutzers und den aktivierten Kennungseinstellungen. Wenn zum Beispiel nur der Benutzername aktiviert ist und der Benutzer user1@somewhere.org eingibt, sendet FoxIDs diesen Wert als username. FoxIDs entfernt umgebende Leerzeichen, bevor der Benutzername an den Connector gesendet wird.
Create-user request
Der Endpunkt create-user erhält genau eine Benutzerkennung, ein erforderliches Kennwort, ausgewählte create-user-Eigenschaften und Claims, die während des FoxIDs create-user-Ablaufs erfasst wurden.
{
"email": "user1@somewhere.org",
"password": "testpass1",
"confirmAccount": true,
"requireMultiFactor": false,
"claims": [
{ "type": "given_name", "value": "User" },
{ "type": "family_name", "value": "One" }
]
}
Felder:
- Genau einer der Werte
email,phoneoderusernamewird gesendet. passwordist erforderlich. Benutzer erstellen ohne Kennwort wird mit Directory Connector nicht unterstützt, da die Directory Connector API Benutzer mit einem Kennwort authentifiziert.confirmAccountundrequireMultiFactorsind die angeforderten Einstellungen für die Benutzererstellung in FoxIDs.claimsenthält die bei der Benutzererstellung in FoxIDs erfassten Claims, die keine Benutzerkennungen sind.
Geben Sie bei Erfolg eine normale Erfolgsantwort zurück. FoxIDs speichert die zurückgegebene directoryUserId beim internen Benutzer, der nach dem Benutzer im externen Verzeichnis erstellt wird.
Change-password-Anfrage
Der Endpunkt change-password empfängt genau eine Benutzerkennung, das aktuelle Kennwort und das neue Kennwort. FoxIDs sendet directoryUserId, wenn der interne Benutzer existiert und der Wert bekannt ist.
{
"directoryUserId": "a1b2c3d4",
"email": "user1@somewhere.org",
"currentPassword": "oldpass1",
"newPassword": "newpass1"
}
Felder:
directoryUserIdist optional. FoxIDs sendet sie, wenn der interne Benutzer existiert und der Wert bekannt ist. Sie kann beim ersten Login weggelassen werden, wenn das externe Verzeichnis eine Kennwortänderung verlangt, bevor FoxIDs den internen Benutzer erstellt hat.- Genau eine von
email,phoneoderusernamewird gesendet. currentPasswordundnewPasswordsind erforderlich.
Set-password-Anfrage
Der Endpunkt set-password empfängt die stabile Verzeichnisbindung des Benutzers, genau eine Benutzerkennung und ein neues Kennwort.
{
"directoryUserId": "a1b2c3d4",
"email": "user1@somewhere.org",
"password": "newpass1"
}
Felder:
directoryUserIdwird gesendet und sollte als stabile Verzeichnisbindung verwendet werden.- Genau eine von
email,phoneoderusernamewird gesendet. FoxIDs wählt die erste verfügbare interne Benutzerkennung in dieser Reihenfolge: E-Mail, Telefonnummer, Benutzername. passwordist erforderlich.
Erfolgsantwort
Bei Erfolg muss die API den HTTP-Statuscode 200 und eine Benutzerantwort zurückgeben.
{
"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 verwendet die Antwort, um den internen Benutzer in der Umgebung zu erstellen oder zu aktualisieren.
Felder:
directoryUserIdist erforderlich. Sie muss im externen Verzeichnis stabil und eindeutig sein und wird auf dem internen FoxIDs-Benutzer gespeichert.email,phoneundusernamesind einzeln optional, aber mindestens eines muss vorhanden sein. FoxIDs speichert die zurückgegebenen Werte als Kennungen des internen Benutzers. Zurückgegebene Benutzerkennungswerte müssen genau einen Benutzer im externen Verzeichnis identifizieren, das der Connector verwendet.phonemuss die Landesvorwahl im internationalen Format enthalten, z. B.+4511223344.confirmAccountsteuert, ob FoxIDs einen Bestätigungsablauf für den internen Benutzer ausführen soll.emailVerifiedsteuert, ob die E-Mail des internen Benutzers als verifiziert markiert wird.phoneVerifiedsteuert, ob die Telefonnummer des internen Benutzers als verifiziert markiert wird.disableTwoFactorAppdeaktiviert die Zwei-Faktor-Authentifizierung per Authenticator-App für den internen Benutzer.disableTwoFactorSmsdeaktiviert die SMS-Zwei-Faktor-Authentifizierung für den internen Benutzer.disableTwoFactorEmaildeaktiviert die E-Mail-Zwei-Faktor-Authentifizierung für den internen Benutzer.requireMultiFactorsteuert, ob der interne Benutzer Multi-Faktor-Authentifizierung verwenden muss.claimsist optional. FoxIDs speichert die zurückgegebenen Claims auf dem internen Benutzer.
FoxIDs ignoriert Claims, deren type oder value fehlt, null oder leer ist oder nur aus Leerraum besteht. Bei aktiviertem Meldungs-Trace enthält der Antwort-Trace die empfangenen Claims vor der Filterung. Lange Trace-Meldungen werden gekürzt.
Fehlerantwort
Wenn die Basic Authentication abgelehnt wird, geben Sie den HTTP-Statuscode 401 und invalid_api_id_secret zurück.
{
"error": "invalid_api_id_secret",
"errorMessage": "Invalid API ID or secret."
}
Wenn der Benutzer beim Aufruf des Endpunkts authentication ohne eine directoryUserId nicht existiert, geben Sie den HTTP-Statuscode 400, 401 oder 403 und user_not_exists zurück.
{
"error": "user_not_exists",
"errorMessage": "User not found."
}
Wenn das Kennwort vom Endpunkt authentication abgelehnt wird, geben Sie den HTTP-Statuscode 400, 401 oder 403 und invalid_password zurück.
{
"error": "invalid_password",
"errorMessage": "Invalid password."
}
Wenn Benutzerkennung und Kennwort gültig sind, die Anmeldung aber aus einem anderen Grund abgelehnt wird, geben Sie von authentication den HTTP-Statuscode 400, 401 oder 403 und login_rejected zurück. Dies wird mit und ohne directoryUserId unterstützt. Die optionale uiErrorMessage wird als reiner Text im Anmeldeformular angezeigt. Die API liefert die übersetzte Meldung anhand von Accept-Language.
{
"error": "login_rejected",
"errorMessage": "Credentials verified; login rejected by directory policy.",
"uiErrorMessage": "You cannot log in here. Contact support."
}
Wenn uiErrorMessage fehlt, null oder leer ist oder nur Leerraumzeichen enthält, zeigt FoxIDs dieselbe lokalisierte allgemeine Anmeldemeldung wie bei invalid_password, user_not_exists, user_disabled und user_deleted. Eine abgelehnte Anmeldung wird beim bestehenden Schutz vor wiederholten fehlgeschlagenen Anmeldeversuchen mitgezählt. Sie erstellt, aktualisiert, deaktiviert oder löscht den internen Benutzer nicht.
Wenn das aktuelle Kennwort vom Endpunkt change-password abgelehnt wird, geben Sie den HTTP-Statuscode 400, 401 oder 403 und invalid_current_password zurück.
{
"error": "invalid_current_password",
"errorMessage": "Invalid current password."
}
Das Feld errorMessage enthält Diagnosetext für die Protokolle von FoxIDs und wird dem Endbenutzer nicht angezeigt. Geben Sie den Grund für den Fehler an, aber niemals Kennwörter, API-Geheimnisse oder private Schlüssel.
FoxIDs zeigt eine zurückgegebene uiErrorMessage nur für login_rejected an. Bei anderen unterstützten Fehlercodes wählt FoxIDs die benutzerseitige Meldung aus seinen eigenen lokalisierten Textressourcen. Diagnosetext in errorMessage wird niemals als Ersatz für eine benutzerseitige Meldung verwendet.
Unterstützte Fehlercodes nach Endpunkt:
| Fehlercode | authentication |
create-user |
change-password |
set-password |
Bedeutung |
|---|---|---|---|---|---|
invalid_api_id_secret |
Ja | Ja | Ja | Ja | Der API-Benutzername oder das Geheimnis für HTTP Basic authentication ist ungültig. |
user_exists |
Nein | Ja | Nein | Nein | Ein Benutzer mit der angegebenen Kennung existiert bereits im externen Verzeichnis. |
user_not_exists |
Ja, ohne directoryUserId |
Nein | Ja, ohne directoryUserId |
Nein | Kein Benutzer im externen Verzeichnis stimmt mit den angegebenen Benutzerkennungen überein. |
invalid_password |
Ja | Nein | Nein | Nein | Das Verzeichnis hat das Kennwort in einer Authentifizierungsanfrage abgelehnt. |
login_rejected |
Ja | Nein | Nein | Nein | Die Anmeldung wurde nach Prüfung der Benutzerkennung und des Kennworts abgelehnt. Eine optionale uiErrorMessage wird im Anmeldeformular angezeigt. |
invalid_current_password |
Nein | Nein | Ja | Nein | Das Verzeichnis hat das aktuelle Kennwort in einer Anfrage zur Kennwortänderung abgelehnt. |
create_user_not_supported |
Nein | Ja | Nein | Nein | Der Connector unterstützt das Erstellen von Benutzern im externen Verzeichnis nicht. |
user_disabled |
Ja | Nein | Ja | Ja | Der Benutzer existiert im Verzeichnis, ist aber deaktiviert. FoxIDs deaktiviert den internen Benutzer. |
user_deleted |
Ja, mit directoryUserId |
Nein | Ja, mit directoryUserId |
Ja, mit directoryUserId |
Der über directoryUserId verknüpfte Benutzer im externen Verzeichnis existiert nicht mehr oder wurde gelöscht. FoxIDs löscht den internen Benutzer. |
password_not_accepted |
Ja | Ja | Ja | Ja | Das Kennwort, das zur Authentifizierung oder Benutzererstellung verwendet, geändert oder gesetzt wird, wurde durch eine Kennwortregel des Verzeichnisses abgelehnt, der kein spezifischerer Code entspricht. |
password_min_length |
Ja | Ja | Ja | Ja | Das Kennwort, das zur Authentifizierung oder Benutzererstellung verwendet, geändert oder gesetzt wird, ist kürzer als die im Verzeichnis festgelegte Mindestlänge für Kennwörter. |
password_max_length |
Ja | Ja | Ja | Ja | Das Kennwort, das zur Authentifizierung oder Benutzererstellung verwendet, geändert oder gesetzt wird, ist länger als die im Verzeichnis festgelegte Höchstlänge für Kennwörter. |
password_banned_characters |
Ja | Ja | Ja | Ja | Das Kennwort, das zur Authentifizierung oder Benutzererstellung verwendet, geändert oder gesetzt wird, enthält ein oder mehrere Zeichen oder Wörter, die das Verzeichnis ablehnt. |
password_complexity |
Ja | Ja | Ja | Ja | Älterer Fehler zur Zeichenkomplexität, den FoxIDs als password_character_variation interpretiert. Verwenden Sie für neue Integrationen einen der beiden spezifischen Zeichenfehlercodes. |
password_character_repeat |
Ja | Ja | Ja | Ja | Das Kennwort, das zur Authentifizierung oder Benutzererstellung verwendet, geändert oder gesetzt wird, enthält zu viele Zeichenwiederholungen. |
password_character_variation |
Ja | Ja | Ja | Ja | Das Kennwort, das zur Authentifizierung oder Benutzererstellung verwendet, geändert oder gesetzt wird, enthält nicht genügend unterschiedliche Zeichen. |
password_email_text_complexity |
Ja | Ja | Ja | Ja | Das Kennwort, das zur Authentifizierung oder Benutzererstellung verwendet, geändert oder gesetzt wird, enthält die E-Mail-Adresse des Benutzers oder einen Teil davon. |
password_phone_text_complexity |
Ja | Ja | Ja | Ja | Das Kennwort, das zur Authentifizierung oder Benutzererstellung verwendet, geändert oder gesetzt wird, enthält die Telefonnummer des Benutzers oder einen Teil davon. |
password_username_text_complexity |
Ja | Ja | Ja | Ja | Das Kennwort, das zur Authentifizierung oder Benutzererstellung verwendet, geändert oder gesetzt wird, enthält den Benutzernamen des Benutzers oder einen Teil davon. |
password_url_text_complexity |
Ja | Ja | Ja | Ja | Das Kennwort, das zur Authentifizierung oder Benutzererstellung verwendet, geändert oder gesetzt wird, enthält Text mit Bezug zur URL von FoxIDs. |
password_risk |
Ja | Ja | Ja | Ja | Das Kennwort, das zur Authentifizierung oder Benutzererstellung verwendet, geändert oder gesetzt wird, ist bekanntermaßen riskant, kompromittiert oder anderweitig unsicher. |
password_history |
Ja | Ja | Ja | Ja | Das Kennwort, das zur Authentifizierung oder Benutzererstellung verwendet, geändert oder gesetzt wird, wurde abgelehnt, weil es bereits verwendet wurde. |
password_expired |
Ja | Ja | Ja | Ja | Das Kennwort, das zur Authentifizierung oder Benutzererstellung verwendet, geändert oder gesetzt wird, ist abgelaufen und muss geändert werden, bevor die Authentifizierung fortgesetzt werden kann. |
new_password_equals_current |
Nein | Nein | Ja | Nein | Das neue Kennwort ist mit dem aktuellen identisch. set-password kann diesen Fehler nicht zurückgeben, da der Endpunkt das aktuelle Kennwort nicht erhält. |
Bei Kennwortrichtlinienfehlern verwendet FoxIDs die Kennwortrichtlinie der Umgebung, um die benutzerseitige Fehlermeldung anzuzeigen. Siehe Kennwortrichtlinie und Fehlermeldungen.
Geben Sie nur einen Fehlercode zurück, der vom Endpunkt und der übermittelten directoryUserId gemäß der obigen Tabelle unterstützt wird. Ein nicht unterstützter Code, eine fehlerhaft formatierte Antwort oder ein unerwarteter HTTP-Status ist ein Integrationsfehler und führt zur allgemeinen Fehlerseite. Geben Sie bei einem technischen Fehler im Connector den HTTP-Statuscode 500 zurück. Unter Fehlerbehebung bei Browserfehlern erfahren Sie, wie Sie anhand der Kennungen auf der Fehlerseite die Diagnosedetails finden.
Authentifizierungsfehler und Datenschutz
Ein nicht authentifizierter Aufrufer darf aus einem Anmeldefehler nicht ableiten können, ob ein Benutzername oder eine E-Mail-Adresse existiert. Bei der Kennwortauthentifizierung behandelt FoxIDs die unterstützten Fehler wie folgt:
| Connectorfehler | Ergebnis für den Benutzer |
|---|---|
invalid_password, user_not_exists, user_disabled oder user_deleted |
Dieselbe allgemeine Anmeldemeldung, beispielsweise Falsche E-Mail oder falsches Passwort., übersetzt in die aktive Sprache und angepasst an die aktivierten Anmeldekennungen. |
login_rejected |
Die übermittelte uiErrorMessage oder, wenn sie fehlt oder leer ist, dieselbe allgemeine Anmeldemeldung an derselben Stelle im Anmeldeformular. |
password_not_accepted |
Die Seite zur Kennwortänderung mit allgemeinen Hinweisen zur Kennwortrichtlinie. |
password_expired oder ein anderer spezifischer Kennwortrichtlinienfehler |
Die Seite zur Kennwortänderung mit den entsprechenden lokalisierten Hinweisen zur Kennwortrichtlinie. |
Der Connector muss das übermittelte aktuelle Kennwort prüfen, bevor er einen Kennwortrichtlinienfehler von authentication zurückgibt. Andernfalls kann eine andere Seite oder Meldung einem Angreifer ermöglichen, Benutzer zu entdecken und ihre Kennungen durch Erraten von Benutzernamen oder E-Mail-Adressen zu bestätigen. Prüfen Sie bei change-password das aktuelle Kennwort, bevor Sie kontospezifische Hinweise zum neuen Kennwort zurückgeben. Allgemeine Formatprüfungen dürfen nicht offenlegen, ob ein Konto existiert.
Wenn sich ein Benutzer aus irgendeinem Grund nicht über diesen Anmeldeablauf anmelden darf, prüfen Sie zunächst die übermittelte Benutzerkennung und das Kennwort. Geben Sie eine auf dieser Einschränkung beruhende Ablehnung erst zurück, nachdem beides erfolgreich geprüft wurde, damit die Einschränkung nicht offenlegt, ob eine erratene Kennung zu einem tatsächlichen Benutzer gehört. Geben Sie login_rejected von authentication zurück, tragen Sie den Diagnosegrund in errorMessage ein und stellen Sie bei Bedarf sichere Hinweise für den Benutzer in uiErrorMessage bereit. Wenn die Anmeldedaten nicht verifiziert werden können, geben Sie den normalen Authentifizierungsfehler zurück, ohne die Einschränkung offenzulegen.
FoxIDs verlässt sich darauf, dass der Connector die Anmeldedaten prüft, bevor er login_rejected zurückgibt; eine erfolgreiche Kontosuche oder die Kenntnis von directoryUserId reicht nicht aus. Solange die Anmeldedaten nicht geprüft wurden, müssen Hinweise oder Schaltflächen für alternative Anmeldemethoden unabhängig davon angezeigt werden, ob die übermittelte Kennung einem Konto entspricht.
Verwenden Sie user_disabled und user_deleted nur, um den entsprechenden Kontostatus im Verzeichnis zu melden. Diese Codes deaktivieren oder löschen auch den internen Benutzer und widerrufen seinen Zugriff; sie sind keine allgemeinen Codes zur Ablehnung einer Anmeldung.
Behandeln Sie Fehler bei bekannten und unbekannten Kennungen einheitlich, einschließlich beobachtbarer Antwortzeiten und des Schutzes vor wiederholten Versuchen. Eine allgemeine Meldung allein verhindert die Entdeckung von Benutzern nicht, wenn eine andere Weiterleitung, ein anderer Status oder eine andere Antwortzeit das Ergebnis offenlegt. Beachten Sie bei der Implementierung des Connectors die Hinweise von OWASP zu Authentifizierungsfehlern.
API-Beispiel
Das Beispiel DirectoryConnectorApiSample zeigt, wie die Directory Connector API in ASP.NET Core implementiert wird.
Das Beispiel enthält: The API has a base URL and four endpoints:
- HTTP Basic Authentication mit dem API-Benutzernamen
directory_connector. - ein kleines In-Memory-Verzeichnis mit Demo-Benutzern und stabilen
directoryUserId-Werten. - Beispiele für Kennwortrichtlinienfehler wie
password_min_length,password_banned_charactersundnew_password_equals_current. - ein Beispiel für einen deaktivierten Benutzer, das
user_disabledzurückgibt.
Die Postman-Collection directory-connector-api.postman_collection.json kann verwendet werden, um die Beispiel-API mit Postman aufzurufen und zu testen.
Active Directory-Komponente
FoxIDs enthält eine Directory Connector für Active Directory-Komponente, die in IIS bereitgestellt werden kann. Die Komponente implementiert die Directory Connector API für eine AD/LDAP-Domäne und kann Kennwörter validieren, Kennwörter ändern, Kennwörter setzen, konfigurierte AD-Attribute als Claims zurückgeben und konfigurierte verschachtelte AD-Gruppenmitgliedschaften als Claims zurückgeben.
Konfiguration
Konfigurieren Sie Directory Connector in den Umgebungseinstellungen im FoxIDs Control Client.
- Wählen Sie die Registerkarte Settings.
- Wählen Sie die Registerkarte Environment.
- Suchen Sie den Abschnitt Directory Connector.
- Aktivieren Sie Directory Connector.
- Fügen Sie die Basis-API-URL ohne den Endpunktordner in API URL hinzu.
- Fügen Sie das API secret hinzu.
- Entscheiden Sie, ob eine lokale Kennwortkopie gespeichert werden soll.
- Konfigurieren Sie die Kennwortrichtlinie der Umgebung so, dass sie der Kennwortrichtlinie des externen Verzeichnisses entspricht.
- Klicken Sie auf Update.
