Control API - gebruikers en authenticator-apps
Gebruik de FoxIDs Control API om interne gebruikers te provisionen en de authenticator-apps te beheren die elke gebruiker heeft geregistreerd. Deze handleiding richt zich op bewerkingen waarmee registraties tussen FoxIDs-deployments kunnen worden gesynchroniseerd.
Voordat u deze bewerkingen aanroept, configureert u Control API-authenticatie en toegangsrechten. Swagger blijft de exacte referentie voor alle gebruikerseigenschappen, filters, validatieregels en response-schema's:
Endpoint-basis
De voorbeelden gebruiken FoxIDs Cloud:
https://control.foxids.com/api/{tenant_name}/{track_name}
Vervang {tenant_name} door de tenantnaam en {track_name} door de technische naam van de omgeving. Wijzig de host voor een self-hosted deployment. Stuur het Control API-access token in de header Authorization: Bearer {access_token}.
Gebruikers- en authenticator-appbewerkingen vereisen een gebruikerstoegangsrecht voor de doelomgeving. Verleen via de Control API-hiërarchie voor toegangsrechten alleen de benodigde bewerking read, create, update of delete.
Gebruikersidentificaties
Elke interne gebruiker moet ten minste één aanmeldingsidentificatie hebben: e-mailadres, telefoonnummer of gebruikersnaam. E-mailadressen en gebruikersnamen worden naar kleine letters genormaliseerd en omringende spaties worden uit alle identificaties verwijderd.
Bewerkingen voor één gebruiker identificeren de gebruiker met de queryparameter email, phone of username. De gebruikersresponse bevat ook een door de server gemaakte userId. Deze ID is uniek en permanent, ook wanneer een aanmeldingsidentificatie verandert, en moet worden gebruikt om authenticator-apps of andere resources aan de gebruiker te koppelen.
Gebruikersbewerkingen
Bewerkingen voor afzonderlijke gebruikers zijn in Swagger gegroepeerd onder tenant users.
| Bewerking | Endpoint | Resultaat | Doel |
|---|---|---|---|
| Lijst | GET /!users |
200 OK |
Gebruikers met paginering weergeven en filteren. |
| Ophalen | GET /!user?email={email} |
200 OK |
Eén gebruiker ophalen via e-mail, telefoon of gebruikersnaam. |
| Maken | POST /!user |
201 Created |
Eén gebruiker met optionele wachtwoordgegevens maken. |
| Bijwerken | PUT /!user |
200 OK |
Bewerkbare gebruikerseigenschappen vervangen en eventueel aanmeldingsidentificaties wijzigen. |
| Verwijderen | DELETE /!user?email={email} |
204 No Content |
Eén gebruiker verwijderen via e-mail, telefoon of gebruikersnaam. |
| In bulk maken of vervangen | PUT /!users |
204 No Content |
Nieuwe gebruikers importeren of overeenkomende gebruikers vervangen. |
| In bulk verwijderen | DELETE /!users |
204 No Content |
In de request-body geïdentificeerde gebruikers verwijderen. |
| Wachtwoord instellen | PUT /!usersetpassword |
200 OK |
Een wachtwoord zonder het huidige wachtwoord instellen, importeren of verwijderen. |
| Wachtwoord wijzigen | PUT /!userchangepassword |
200 OK |
Een wachtwoord wijzigen met het huidige en nieuwe wachtwoord. |
| Wachtwoordgeschiedenis | GET, PUT of DELETE /!userpasswordhistory |
200 OK / 204 No Content |
De wachtwoordgeschiedenis lezen, vervangen of verwijderen. |
Gebruik waar nodig phone={phone} of username={username} in plaats van email={email}. Voeg elk endpoint toe aan de endpoint-basis.
Gebruikers weergeven en filteren
GET /!users accepteert filterEmail, filterPhone, filterUsername, filterUserId en filterClaimValue. Elk filter zoekt hoofdletterongevoelig naar gedeeltelijke waarden. Bij meerdere filters wordt een gebruiker geretourneerd als een van de filters overeenkomt.
De response bevat een data-collection en een niet-transparante paginationToken. Herhaal voor de volgende pagina dezelfde request met de geretourneerde waarde als paginationToken. Ga door totdat de response geen token meer bevat. Interpreteer of wijzig het token niet.
De gebruikersresponse meldt of een wachtwoord is ingesteld en wanneer dit voor het laatst is gewijzigd, maar retourneert nooit het wachtwoord of de huidige hash.
Een gebruiker maken
De create-request ondersteunt accountstatus, geverifieerde identificaties, aangepaste claims, keuze van wachtwoordbeleid, wachtwoordinstelling via e-mail of SMS en MFA-instellingen per gebruiker. Dit voorbeeld maakt een gebruiker zonder wachtwoord en vereist wachtwoordinstelling via e-mail:
POST https://control.foxids.com/api/{tenant_name}/{track_name}/!user
Authorization: Bearer {access_token}
Content-Type: application/json
{
"email": "alice@example.com",
"emailVerified": true,
"setPasswordEmail": true,
"claims": [
{
"claim": "role",
"values": ["employee"]
}
]
}
Een create-request kan een wachtwoord in platte tekst, ondersteunde wachtwoordhashvelden of geen wachtwoordgegevens bevatten. Stuur nooit beide wachtwoordformaten. Wachtwoorden in platte tekst worden aan het gekozen beleid getoetst; geïmporteerde hashes niet. Gebruik zonder gegevens setPasswordEmail of setPasswordSms als de gebruiker tijdens het aanmelden een wachtwoord moet instellen.
Een bestaande gebruiker maken retourneert 409 Conflict en de gebruikerslimiet van het tenantabonnement is van toepassing. Een gelijktijdige gebruikersbewerking kan het maken tijdelijk blokkeren; probeer een 423 Locked-response na korte tijd opnieuw.
Een gebruiker bijwerken
PUT /!user is een volledige update, geen patch. Lees de huidige gebruiker, behoud ongewijzigde eigenschappen, pas wijzigingen toe en stuur de volledige bewerkbare representatie. De claims-collection en account- en MFA-vlaggen worden door de requestwaarden vervangen. Wachtwoordgegevens en authenticator-appregistraties hebben eigen bewerkingen.
Identificeer de bestaande gebruiker met email, phone of username. Behoud om een identificatie te wijzigen de huidige waarde in het veld en stel updateEmail, updatePhone of updateUsername in op de nieuwe waarde. Een lege string verwijdert de identificatie; weglaten laat deze ongewijzigd. Zorg dat ten minste één aanmeldingsidentificatie behouden blijft.
Als disableAccount van false naar true verandert, worden refresh token grants en actieve sessies ingetrokken. Opnieuw inschakelen staat nieuwe aanmeldingen toe, maar herstelt ingetrokken sessies niet.
Wachtwoorden beheren
Gebruik PUT /!usersetpassword voor administratieve instelling of migratie. Er zijn drie modi:
- Geef
passwordop om het gekozen wachtwoordbeleid toe te passen en de geschiedenis bij te werken. - Geef
passwordHashAlgorithm,passwordHashenpasswordHashSaltop om een ondersteunde vooraf berekende hash zonder beleidscontrole te importeren. - Laat beide wachtwoordformaten weg om het huidige wachtwoord te verwijderen.
passwordLastChanged is optionele Unix-tijd in seconden. Met changePassword moet de gebruiker bij de volgende toepasselijke aanmelding een nieuw wachtwoord kiezen.
Gebruik PUT /!userchangepassword als het huidige wachtwoord bekend is. De bewerking verifieert dit en valideert het nieuwe wachtwoord tegen beleid en geschiedenis.
Het endpoint voor wachtwoordgeschiedenis is bedoeld voor gecontroleerde migratie en herstel. De detailresponse bevat wachtwoordhashmateriaal en PUT vervangt de volledige geschiedenis. Bescherm dit als geïmporteerde hashes en log geen request- of response-bodies.
Bulkprovisioning
PUT /!users accepteert 1 tot 1.000 gebruikers per request. Maximaal 100 entries mogen wachtwoorden in platte tekst bevatten, omdat elk wachtwoord veilig moet worden gehasht. Requests zonder zulke wachtwoorden, inclusief ondersteunde vooraf berekende hashes, mogen tot 1.000 gebruikers bevatten.
Bulk upload maakt nieuwe gebruikers of vervangt overeenkomende gebruikers; eigenschappen worden niet samengevoegd en e-mail-, telefoon- of gebruikersnaamidentificaties kunnen niet worden hernoemd. Behandel dit als vervangingsimport. Gebruik de update voor één gebruiker bij normale levenscycluswijzigingen waarbij bestaande status en permanente gebruikers-ID behouden moeten blijven.
DELETE /!users accepteert 1 tot 1.000 e-mailadressen, telefoonnummers of gebruikersnamen in userIdentifiers. Zie Veel gebruikers uploaden voor importformaten, prestaties en de seed tool.
Gebruikers verwijderen en toegang intrekken
Bij individuele of bulkverwijdering worden refresh token grants en actieve sessies ingetrokken voordat het account wordt verwijderd. Dit is permanent. Gebruik de delete-bewerkingen voor authenticator-apps als alleen één of alle registraties moeten worden verwijderd en de gebruiker behouden blijft.
Requests voor maken, bijwerken, wachtwoorden en verwijderen worden in het Control-auditlog opgenomen. Leesbewerkingen worden niet als audit-events geschreven.
Authenticator-appregistraties
Authenticator-appbewerkingen zijn in Swagger gegroepeerd onder tenant user authenticator apps. Een lijstbewerking retourneert veilige registratieoverzichten, terwijl de detailbewerking de gevoelige gegevens retourneert die nodig zijn voor gecontroleerde synchronisatie.
| Bewerking | Endpoint | Resultaat | Doel |
|---|---|---|---|
| Lijst | GET /!userauthenticatorapps?userId={userId} |
200 OK |
Retourneert registratie-ID's en aanmaaktijden zonder secrets of recovery code-hashgegevens. |
| Ophalen | GET /!userauthenticatorapp?userId={userId}&id={id} |
200 OK |
Retourneert één registratie inclusief het TOTP-secret en de recovery code-hashgegevens. |
| Maken | POST /!userauthenticatorapp |
201 Created |
Maakt een registratie met een door de client opgegeven unieke ID. |
| Bijwerken | PUT /!userauthenticatorapp |
200 OK |
Vervangt het secret en de recovery code-hashgegevens voor de geselecteerde gebruikers-ID en registratie-ID. |
| Verwijderen | DELETE /!userauthenticatorapp?userId={userId}&id={id} |
204 No Content |
Verwijdert één registratie. |
| Alles verwijderen | DELETE /!userauthenticatorapps?userId={userId} |
204 No Content |
Verwijdert alle authenticator-appregistraties van de gebruiker. |
Voeg elk endpoint toe aan de endpoint-basis. Bijvoorbeeld:
GET https://control.foxids.com/api/{tenant_name}/{track_name}/!userauthenticatorapps?userId=e061ed17-7b44-48a8-b224-ecdb800ed5cc
Authorization: Bearer {access_token}
Registratieresource
Maken en bijwerken gebruiken de volledige registratieresource:
{
"userId": "e061ed17-7b44-48a8-b224-ecdb800ed5cc",
"id": "7a772286-76a2-4f17-a0f8-4e927bb1772d",
"createTime": 1785769200,
"secret": "TOTP-SHARED-SECRET",
"recoveryCode": {
"hashAlgorithm": "P2HS512:10",
"hash": "RECOVERY-CODE-HASH",
"hashSalt": "RECOVERY-CODE-SALT"
}
}
De eigenschappen gedragen zich als volgt:
userIdis de stabiele FoxIDs-gebruikers-ID.idis een permanente registratie-ID die de client bij het maken opgeeft. Deze selecteert de registratie bij bijwerken en kan niet worden gewijzigd.createTimewordt uitgedrukt in Unix-seconden. Bij maken is deze optioneel en standaard de huidige tijd. Wanneer deze bij bijwerken wordt weggelaten, blijft de bestaande waarde behouden.secretis het gedeelde TOTP-secret en is vereist bij maken en bijwerken.recoveryCodebevat recovery code-hashgegevens en wordt weggelaten wanneer geen recovery code is geconfigureerd.
Een gebruiker kan maximaal vijf authenticator-appregistraties hebben. Maken met een bestaande registratie-ID retourneert 409 Conflict; maken nadat de limiet is bereikt retourneert 400 Bad Request.
Registraties synchroniseren
Een synchronisatieservice kan de interactieve Authenticator App notification API combineren met deze Control API-bewerkingen:
- Ontvang de notification
registeredmetuser_idenregistration_id. - Haal de registratie op uit de source deployment met de detailbewerking.
- Maak de registratie in de target deployment of werk deze bij als dezelfde registratie-ID al bestaat.
Control API-bewerkingen voor maken, bijwerken en verwijderen roepen de Authenticator App notification API niet aan. Synchroniseren veroorzaakt daarom geen notification-lus.
Beveiliging
De detail-, maak- en bijwerkbewerkingen tonen of accepteren een authenticator-appsecret en recovery code-hashgegevens. Verleen het vereiste gebruikerstoegangsrecht alleen aan vertrouwde clients, gebruik TLS, bescherm payloads bij opslag en log geen request- of response-bodies.
Gebruik de lijstbewerking wanneer alleen registratie-ID's en aanmaaktijden nodig zijn. Deze retourneert geen secret of recovery code-hashgegevens.
Compatibiliteitseigenschap
De eigenschap activeTwoFactorApp van de algemene gebruikers-API is deprecated en gepland voor verwijdering na 1 augustus 2027. In een update-request verwijdert false om compatibiliteitsredenen nog steeds alle authenticator-appregistraties; true of een weggelaten waarde laat registraties ongewijzigd. Nieuwe integraties moeten de authenticator-appendpoints gebruiken.
Foutresponses
Veelvoorkomende foutresponses voor gebruikers- en authenticator-appbewerkingen zijn:
400 Bad Requestwanneer identificaties, gegevens, filters of resourcegegevens ongeldig zijn, of de registratielimiet is bereikt.401 Unauthorizedwanneer het access token ontbreekt of ongeldig is.403 Forbiddenwanneer de client niet het vereiste gebruikerstoegangsrecht voor de omgeving heeft.404 Not Foundwanneer de gebruiker of authenticator-appregistratie niet bestaat.409 Conflictwanneer de gebruiker al bestaat of een registratie-ID opnieuw wordt gebruikt.423 Lockedwanneer maken of bulkimport tijdelijk is vergrendeld. Probeer het na korte tijd opnieuw.
Gebruik de response-body voor validatiedetails. Raadpleeg Swagger UI voor de responses die voor elke bewerking zijn gedeclareerd.