Directory Connector
Directory Connector lar FoxIDs bruke et eksternt katalog som autoritativ kilde for interne brukeres passord og utvalgte brukerdata.
Brukerne eksisterer fortsatt som interne brukere i FoxIDs-miljøet. Under passordautentisering og operasjoner i passordets livssyklus kaller FoxIDs Directory Connector API-et i stedet for bare å validere passordet mot den interne FoxIDs-brukeren.
Bruk Directory Connector når:
- du vil at brukere skal logge inn med den vanlige login-autentiseringsmetoden.
- det eksterne kataloget er autoritativt for passordvalidering og passordendringer.
- du vil at FoxIDs skal beholde en intern brukerpost med identifikatorer, egenskaper, claims, MFA-innstillinger, tilgangstildelinger og eventuelt en lokal kopi av passordet.
- du vil ha en vei til senere å bytte til interne brukere og passordvalidering i FoxIDs uten å tvinge alle brukere gjennom en passordtilbakestilling.
Det finnes én Directory Connector per miljø. Når den er aktivert, gjelder den på miljønivå.
Slik fungerer det
Når en bruker logger inn med brukernavn og passord, kaller FoxIDs Directory Connector API-et.
Ved vellykket validering oppretter eller oppdaterer FoxIDs den interne brukeren i miljøet basert på API-responsen. Responsen må inneholde en stabil directoryUserId, som lagres på den interne brukeren og brukes til å binde FoxIDs-brukeren til brukeren i det eksterne kataloget.
directoryUserId er ikke en brukeridentifikator som sluttbrukeren kjenner. Det er en separat stabil ekstern katalog-ID. Ikke bruk e-post, telefon eller brukernavn som directoryUserId, fordi disse verdiene kan endre seg. Verdien må være stabil og unik i det eksterne kataloget.
Hvis FoxIDs allerede kjenner den interne brukerens directoryUserId, sendes den i Directory Connector-forespørselen sammen med nøyaktig én av brukerens identifikatorer: e-post, telefon eller brukernavn. Dette gjør det mulig for det eksterne kataloget å identifisere brukeren selv om en identifikator har endret seg.
Hvis Directory Connector API-et validerer brukeren vellykket, oppdaterer FoxIDs den interne brukeren med identifikatorer, utvalgte egenskaper og claims som returneres fra API-et.
Hvis connectoren rapporterer at brukeren er deaktivert eller slettet, vil FoxIDs deaktivere eller slette den interne brukeren i miljøet.
Lokal passordkopi
Det eksterne kataloget er autoritativt så lenge Directory Connector er aktivert. FoxIDs faller ikke tilbake til den lokale passordhashen hvis Directory Connector API-et er midlertidig utilgjengelig.
Som standard lagrer FoxIDs en lokal kopi av passordet på den interne brukeren etter en vellykket passordvalidering eller operasjon i passordets livssyklus via connectoren. Dette kan deaktiveres i miljøinnstillingene.
Den lokale passordkopien brukes ikke mens Directory Connector er aktivert. Den finnes for å støtte en senere overgang til interne brukere og passordvalidering i FoxIDs uten å tvinge alle brukere til å tilbakestille passordet.
Passordlivssyklus
Operasjoner i passordets livssyklus delegeres til Directory Connector API-et:
- Passordautentisering kaller endepunktet
authentication. - Endring av brukerpassord kaller endepunktet
change-password. - Flyter for å sette passord og tilbakestille passord kaller endepunktet
set-password.
FoxIDs kaller bare endepunktene for passordlivssyklus når den interne brukeren er kjent og har en directoryUserId. Dette forhindrer at FoxIDs kaller det eksterne kataloget uten den stabile bindingen til den eksterne brukeren.
FoxIDs oppdaterer ikke sin interne passordhistorikk når Directory Connector brukes, fordi FoxIDs ikke nødvendigvis kjenner til alle passordendringer i det eksterne kataloget.
Passordpolicy og feilmeldinger
Det eksterne kataloget håndhever passordpolicyen. FoxIDs bruker miljøets passordpolicy når det viser feilmeldinger om passordpolicy som returneres fra connectoren.
Konfigurer miljøets passordpolicy slik at den samsvarer med passordpolicyen i det eksterne kataloget. Hvis de ikke samsvarer, kan brukerne se passordveiledning som ikke gjenspeiler de faktiske kravene i det eksterne kataloget.
Hvis det eksterne kataloget for eksempel avviser et passord fordi det er for kort, bruker FoxIDs miljøets minimumslengde for passord når feilmeldingen vises.
Implementer API
Du implementerer et Directory Connector API og konfigurerer FoxIDs med basis-URL og secret.
API-et har en basis-URL og tre endepunkter:
authenticationvaliderer brukerens nåværende passord.change-passwordvaliderer det nåværende passordet og endrer det til et nytt passord.set-passwordsetter et nytt passord uten å validere det nåværende passordet.
Hvis basis-URL-en er https://somewhere.org/directory, er endepunktene:
https://somewhere.org/directory/authenticationhttps://somewhere.org/directory/change-passwordhttps://somewhere.org/directory/set-password
FoxIDs Cloud kaller API-et ditt fra IP
57.128.60.142.
IP(s) kan endres eller utvides.
Sikkerhet
Forespørsler sikres med HTTP Basic authentication:
- Brukernavn:
directory_connector - Passord: det konfigurerte API-secretet
Kallet er HTTP POST med en JSON-body.
Authentication-forespørsel
Endepunktet authentication mottar brukerens passord og nøyaktig én brukeridentifikator. FoxIDs sender directoryUserId hvis den interne brukeren finnes og verdien er kjent.
{
"directoryUserId": "a1b2c3d4",
"email": "user1@somewhere.org",
"password": "testpass1"
}
Felt:
directoryUserIder valgfri. FoxIDs sender den når den interne brukeren finnes og verdien er kjent.- Nøyaktig én av
email,phoneellerusernamesendes. passworder påkrevd.
FoxIDs velger identifikatoren fra brukerens innloggingsinput og de aktiverte identifikatorinnstillingene. Hvis for eksempel bare brukernavn er aktivert og brukeren skriver inn user1@somewhere.org, sender FoxIDs den som username.
Change-password-forespørsel
Endepunktet change-password mottar brukerens stabile katalogbinding, nøyaktig én brukeridentifikator, nåværende passord og nytt passord.
{
"directoryUserId": "a1b2c3d4",
"email": "user1@somewhere.org",
"currentPassword": "oldpass1",
"newPassword": "newpass1"
}
Felt:
directoryUserIdsendes og bør brukes som den stabile katalogbindingen.- Nøyaktig én av
email,phoneellerusernamesendes. currentPasswordognewPassworder påkrevd.
Set-password-forespørsel
Endepunktet set-password mottar brukerens stabile katalogbinding, nøyaktig én brukeridentifikator og nytt passord.
{
"directoryUserId": "a1b2c3d4",
"email": "user1@somewhere.org",
"password": "newpass1"
}
Felt:
directoryUserIdsendes og bør brukes som den stabile katalogbindingen.- Nøyaktig én av
email,phoneellerusernamesendes. FoxIDs velger den første tilgjengelige interne brukeridentifikatoren i denne rekkefølgen: e-post, telefon, brukernavn. passworder påkrevd.
Suksessrespons
Ved suksess må API-et returnere HTTP-statuskode 200 og en brukerrespons.
{
"directoryUserId": "a1b2c3d4",
"email": "user1@somewhere.org",
"phone": "+4511223344",
"username": "user1",
"confirmAccount": true,
"emailVerified": true,
"phoneVerified": true,
"disableAccount": false,
"disableTwoFactorApp": false,
"disableTwoFactorSms": false,
"disableTwoFactorEmail": false,
"requireMultiFactor": false,
"claims": [
{ "type": "name", "value": "User One" },
{ "type": "role", "value": "employee" }
]
}
FoxIDs bruker responsen til å opprette eller oppdatere den interne brukeren i miljøet.
Felt:
directoryUserIder påkrevd. Den må være stabil og unik i det eksterne kataloget og lagres på den interne FoxIDs-brukeren.email,phoneogusernameer hver for seg valgfrie, men minst én må være til stede. FoxIDs lagrer de returnerte verdiene som identifikatorer for den interne brukeren.confirmAccountstyrer om FoxIDs skal kjøre en bekreftelsesflyt for å bekrefte den interne brukeren.emailVerifiedstyrer om den interne brukerens e-post merkes som verifisert.phoneVerifiedstyrer om den interne brukerens telefonnummer merkes som verifisert.disableAccountstyrer om den interne brukeren deaktiveres i FoxIDs etter synkronisering.disableTwoFactorAppdeaktiverer to-faktorautentisering med authenticator-app for den interne brukeren.disableTwoFactorSmsdeaktiverer SMS-basert to-faktorautentisering for den interne brukeren.disableTwoFactorEmaildeaktiverer e-postbasert to-faktorautentisering for den interne brukeren.requireMultiFactorstyrer om den interne brukeren må bruke multi-faktorautentisering.claimser valgfri. FoxIDs lagrer de returnerte claims på den interne brukeren.
Feilrespons
Hvis Basic authentication avvises, returner HTTP-statuskode 401 og invalid_api_id_secret.
{
"error": "invalid_api_id_secret",
"errorMessage": "Invalid API ID or secret."
}
Hvis kombinasjonen av brukernavn og passord avvises av endepunktet authentication, returner HTTP-statuskode 400, 401 eller 403 og invalid_username_password.
{
"error": "invalid_username_password",
"errorMessage": "Invalid username or password."
}
Hvis det nåværende passordet avvises av endepunktet change-password, returner HTTP-statuskode 400, 401 eller 403 og invalid_current_password.
{
"error": "invalid_current_password",
"errorMessage": "Invalid current password."
}
Feltet errorMessage logges av FoxIDs og vises ikke til sluttbrukeren.
Støttede feilkoder:
invalid_username_password- Kombinasjonen av brukeridentifikator og passord ble avvist av kataloget.invalid_current_password- Det nåværende passordet i en change-password-forespørsel ble avvist av kataloget.user_disabled- Brukeren finnes i kataloget, men er deaktivert. FoxIDs vil deaktivere den interne brukeren.user_deleted- Brukeren finnes ikke lenger eller er slettet i kataloget. FoxIDs vil slette den interne brukeren.password_not_accepted- Det nye passordet ble avvist av en passordregel i kataloget som ikke kan knyttes til en mer spesifikk kode.password_min_length- Det nye passordet er kortere enn katalogets minimumslengde for passord.password_max_length- Det nye passordet er lengre enn katalogets maksimumslengde for passord.password_banned_characters- Det nye passordet inneholder ett eller flere tegn eller ord som avvises av kataloget.password_complexity- Det nye passordet oppfyller ikke katalogets krav til kompleksitet.password_email_text_complexity- Det nye passordet inneholder brukerens e-post eller en del av den.password_phone_text_complexity- Det nye passordet inneholder brukerens telefonnummer eller en del av det.password_username_text_complexity- Det nye passordet inneholder brukerens brukernavn eller en del av det.password_url_text_complexity- Det nye passordet inneholder tekst relatert til FoxIDs-URL-en.password_risk- Det nye passordet er kjent for å være risikabelt, kompromittert eller på annen måte usikkert.password_history- Det nye passordet ble avvist fordi det har vært brukt før.password_expired- Det nåværende passordet er utløpt og må endres før autentisering kan fortsette.new_password_equals_current- Det nye passordet er det samme som det nåværende passordet.
Ved feil knyttet til passordpolicy bruker FoxIDs miljøets passordpolicy til å vise den brukerrettede feilmeldingen. Se Passordpolicy og feilmeldinger.
Hvis andre feil oppstår, returner HTTP-statuskode 500 eller en annen passende feilkode. Inkluder en teknisk errorMessage når det er nyttig for diagnostikk.
API-eksempel
Eksemplet DirectoryConnectorApiSample viser hvordan du implementerer Directory Connector API-et i ASP.NET Core.
Eksemplet inkluderer:
- endepunktene
authentication,change-passwordogset-password. - HTTP Basic authentication med API-brukernavnet
directory_connector. - et lite in-memory-katalog med demobrukere og stabile
directoryUserId-verdier. - eksempler på feil i passordpolicy som
password_min_length,password_banned_charactersognew_password_equals_current. - et eksempel på en deaktivert bruker som returnerer
user_disabled.
Postman-kolleksjonen directory-connector-api.postman_collection.json kan brukes til å kalle og teste eksempel-API-et med Postman.
Active Directory-komponent
FoxIDs inkluderer en Active Directory Directory Connector-komponent som kan deployes til IIS. Komponenten implementerer Directory Connector API-et for ett AD/LDAP-domene og kan validere passord, endre passord, sette passord, returnere konfigurerte AD-attributter som claims og returnere konfigurerte nestede AD-gruppemedlemskap som claims.
Konfigurer
Konfigurer Directory Connector i miljøinnstillingene i FoxIDs Control Client.
- Velg fanen Settings.
- Velg fanen Environment.
- Finn seksjonen Directory Connector.
- Aktiver Directory Connector.
- Legg til basis-API-URL-en uten endepunktmappen i API URL.
- Legg til API secret.
- Bestem om en lokal kopi av passordet skal lagres.
- Konfigurer miljøets passordpolicy slik at den samsvarer med passordpolicyen i det eksterne kataloget.
- Klikk Update.
