FoxIDs Control
FoxIDs konfigureres via FoxIDs Control som består av Control Client og Control API. Control Client og API er sikret av FoxIDs, og Control Client bruker Control API.
Control API inneholder all konfigurasjonsfunksjonalitet. Derfor er det mulig å automatisere konfigurasjonen ved å integrere med Control API.
FoxIDs Control Client
Control Client er en Blazor WebAssembly (WASM) app.
Åpne din Control Client på FoxIDs.com.
Tenant og master miljø
Hvis du bruker FoxIDs.com, opprettes tenant under registrering.
Hvis du deploy FoxIDs (self hosted) får du tilgang til master tenant. Opprett først en tenant som inneholder sikkerhetskonfigurasjonen din. De fleste installasjoner trenger bare én, men du kan konfigurere et ubegrenset antall tenants.

En tenant inneholder et master miljø der hele tenant konfigureres. Master miljøet inneholder et bruker repository og ved opprettelse kun én administratorbruker.
Normalt bør du ikke endre master miljø konfigurasjonen eller legge til nye autentiseringsmetoder eller applikasjonsregistreringer, men det er mulig. Du kan for eksempel ved å legge til en autentiseringsmetode få single sign on (SSO) til master miljøet.
Opprett administrator brukere
Det er mulig å opprette flere administrator brukere i master miljøet. En bruker blir administrator ved å legge til administrator rollen foxids:tenant.admin som vist nedenfor.
Opprett en bruker:
- Åpne master miljøet
- Velg Users fanen
- Klikk Create User
- Legg til brukerinformasjon og klikk Create.

Gi tilgang til bruker
Tilgang gis med roller. Scopes er bare nødvendig når en klient ber om et token for Control API; Control Client ber allerede om det nødvendige scopet på foxids_control_api, så du tildeler typisk bare roller til brukeren i master miljøet.
For å la en person logge inn i Control Client og se konfigurasjonsdata:
- Opprett eller åpne brukeren i
mastermiljøet (Users fanen). - Legg til basisrollen
foxids:tenant:basic.read(kreves for at Control Client skal laste profil og hjelpetools). - Bestem hva brukeren kan se:
- For å begrense synlighet til ett miljø, legg til
foxids:tenant:track[vh2csjt4].read(erstattvh2csjt4med teknisk miljønavn). - For å tillate alle miljøer, legg til
foxids:tenant.read.
- For å begrense synlighet til ett miljø, legg til
- Legg til operasjonsroller brukeren trenger i hvert miljø. Eksempler:
foxids:tenant:track[vh2csjt4]:userfor å administrere brukere,foxids:tenant:track[vh2csjt4]:partyfor å administrere applikasjoner og autentiseringsmetoder.
Control Client vs API only:
- Control Client (interaktiv UI) leser profildata og miljølister i tillegg til de spesifikke APIene du vil administrere. Den trenger derfor
foxids:tenant:basic.readpluss en miljø read rolle (foxids:tenant:track[main].readellerfoxids:tenant.read) sammen med action roller. - API only kallere kan være smalere. Hvis en backend tjeneste bare kaller user API for miljøet
vh2csjt4, er rollenfoxids:tenant:track[vh2csjt4]:user(og forespør matching scope ved client credentials) tilstrekkelig; ekstra read roller er ikke nødvendig fordi ingen UI data må lastes.
Miljøer
Konfigurer et antall miljøer, ett for hvert av dine miljøer f.eks. dev, qa og prod.
Opprett ett eller flere miljøer, ikke legg konfigurasjon i master miljøet.

Hvert miljø inneholder et bruker repository og en standard login autentiseringsmetode.
Du kan legge til OpenID Connect, OAuth 2.0 og SAML 2.0 applikasjonsregistreringer og autentiseringsmetoder.

Et miljø inneholder et primært sertifikat og eventuelt et sekundært sertifikat i Certificates fanen. Det er mulig å bytte mellom primært og sekundært sertifikat hvis begge er konfigurert, avhengig av sertifikat container typen.

Miljøegenskapene kan konfigureres ved å klikke på settings ikonet øverst til høyre.
- Sequence lifetime er maks levetid for en brukers login flow fra start til slutt.
- FoxIDs beskytter mot password gjetting via max failing logins, failing login count lifetime og observation period.
- Passordkrav konfigureres med hensyn til lengde, kompleksitet og password risk.
- Det er mulig å hoste FoxIDs i en iframe fra tillatte domener.
- Du kan sende emails med din egen SendGrid tenant ved å legge til en custom email adresse og SendGrid nøkkel.

FoxIDs Control API
Control API er en REST API med en online Swagger (OpenAPI) interface beskrivelse og Swagger UI.
Hvis du self hoster FoxIDs, er Swagger (OpenAPI) dokumentet eksponert i FoxIDs Control på .../api/swagger/v2/swagger.json og Swagger UI på .../api/swagger.
Control API navngivning:
- Et miljø kalles en
track- En applikasjonsregistrering kalles en
downparty- En autentiseringsmetode kalles en
upparty
Control API URLen inneholder variabler for tenant navn og track navn (miljønavn) du vil operere på: .../{tenant_name}/{track_name}/....
Erstatt {tenant_name} med tenant navnet ditt og {track_name} med teknisk miljønavn. Hvis du genererer en proxy fra Swagger (OpenAPI) dokumentet, leveres disse variablene som input parametre.
For eksempel, for å lese en OpenID Connect applikasjonsregistrering i FoxIDs Cloud med teknisk navn some_oidc_app, kall (HTTP GET) https://control.foxids.com/api/{tenant_name}/{track_name}/!oidcdownparty?name=some_oidc_app (erstatt variablene med tenant navn og teknisk miljønavn).
Du kan kalle Control API enten som en service daemon med en OAuth 2.0 client (client credentials) eller i konteksten av en bruker via en OpenID Connect client.
Trinnene nedenfor oppretter en OAuth 2.0 client og gir den admin nivå access rights via scopes og roller.
Opprett en OAuth 2.0 client i FoxIDs Control Client:
- Velg master miljøet (i headeren).
- Velg Applications fanen.
- Klikk New Application.
- Klikk Backend Application.
- Legg til Name f.eks.
My API Client. - Klikk Register.
- Kopier Client ID og Client secret.
- Klikk Close.
- Legg til Name f.eks.
- Klikk din client registrering i listen for å åpne den.
- I seksjonen Resource and scopes - gir clienten tilgang til tenant:
- Klikk Add Resource and scope og legg til ressurss
foxids_control_api. - Klikk Add Scope og legg til scopet
foxids:tenant.
- Klikk Add Resource and scope og legg til ressurss
- Velg Show advanced.
- I seksjonen Issue claims - gir clienten tenant administrator rollen:
- Klikk Add Claim og legg til claim
role. - Klikk Add Value og legg til claim verdi
foxids:tenant.admin.
- Klikk Add Claim og legg til claim
- Klikk Update.
Gjør deretter en OAuth 2.0 Client Credentials Grant request for å få et access token til Control API.
Erstatt {tenant_name}, {track_name}, {client_id} og {client_secret}. Bytt domene hvis du self hoster.
Postman sample
Denne Postman collection autentiserer med OAuth 2.0 clienten My API Client og returnerer brukerne for konfigurert miljø (track).
Opprett en Postman collection JSON fil, f.eks. foxids_control_api.postman_collection.json, med innholdet nedenfor. Erstatt {tenant_name}, {track_name}, {client_id} og {client_secret}. Bytt domener (foxids.com og control.foxids.com) hvis du self hoster.
{
"info": {
"name": "FoxIDs API",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
},
"item": [
{
"name": "GET users",
"request": {
"auth": {
"type": "oauth2",
"oauth2": [
{
"key": "accessTokenUrl",
"value": "https://foxids.com/{tenant_name}/master/{client_id}/(*)/oauth/token",
"type": "string"
},
{
"key": "clientSecret",
"value": "{client_secret}",
"type": "string"
},
{
"key": "clientId",
"value": "{client_id}",
"type": "string"
},
{
"key": "tokenName",
"value": "api_access_token",
"type": "string"
},
{
"key": "client_authentication",
"value": "body",
"type": "string"
},
{
"key": "scope",
"value": "foxids_control_api:foxids:tenant",
"type": "string"
},
{
"key": "grant_type",
"value": "client_credentials",
"type": "string"
},
{
"key": "addTokenTo",
"value": "header",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"protocol": "https",
"host": [
"control.foxids.com"
],
"port": "443",
"path": [
"api",
"{tenant_name}",
"{track_name}",
"!users"
]
}
}
}
]
}
HTTP request sample
Denne HTTP sample autentiserer som OAuth 2.0 clienten My API Client med client credentials grant.
POST https://foxids.com/{tenant_name}/{track_name}/{client_id}(*)/oauth/token HTTP/1.1
Host: foxids.com
Content-Type: application/x-www-form-urlencoded
client_id={client_id}
&client_secret={client_secret}
&grant_type=client_credentials
&scope=foxids_control_api%3Afoxids%3Atenant
Token JSON response:
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-cache, no-store
{
"access_token":"eyJhGfjlc...nNjH3iIWvMdCM",
"token_type":"Bearer",
"expires_in":3600
}
access_token brukes til å kalle Control API.
C# code sample
Denne C# sample autentiserer som OAuth 2.0 clienten My API Client med client credentials grant.
// NuGet package: ITfoxtec.Identity
using ITfoxtec.Identity.Helpers
var oidcDiscoveryUrl = "https://foxids.com/{tenant_name}/{track_name}/{client_id}(*)/.well-known/openid-configuration";
// Inject IHttpClientFactory httpClientFactory
var oidcDiscovery = new OidcDiscoveryHandler(httpClientFactory, oidcDiscoveryUrl);
// Inject IHttpClientFactory httpClientFactory
var tokenHelper = new TokenHelper(httpClientFactory, oidcDiscovery);
var clientId = "{client_id}";
var clientSecret = "{client_secret}";
var scope = "foxids_control_api:foxids:tenant";
(var accessToken, var expiresIn) = await tokenHelper.GetAccessTokenWithClientCredentialGrantAsync(clientId, clientSecret, scope);
Kall deretter Control API med access token som Authorization Bearer header, som definert i OAuth 2.0 Bearer Token (RFC 6750) standarden.
C# code sample
Denne C# sample viser hvordan du legger til access token i HttpClient og leser OpenID Connect applikasjonsregistreringen some_oidc_app (teknisk navn).
// NuGet package: ITfoxtec.Identity
using ITfoxtec.Identity
// Inject IHttpClientFactory httpClientFactory
var httpClient = httpClientFactory.CreateClient();
// Add the access token
httpClient.SetAuthorizationHeaderBearer(accessToken);
// Call Control API using the httpClient
// E.g. read a OpenID Connect application registration
using var response = await client.GetAsync("https://control.foxids.com/api/{tenant_name}/{track_name}/!oidcdownparty?name=some_oidc_app");
API access rights
Dette viser Control API konfigurasjonen i en tenants master miljø med standard sett av scopes som gir tilgang til tenant data.

Du kan legge til flere scopes for å utvide Control API tilgangsrettigheter per miljø for å oppnå least privilege konfigurasjoner.
Tilgang til Control API er begrenset av scopes og roller. Det er to scope familier: foxids:master gir tilgang til master tenant data og foxids:tenant gir tilgang til tenant data.
Control API ressursen foxids_control_api er definert i hver tenants master miljø, og de konfigurerte scopes gir tilgang til tenant data via Control API.
En scopes tilgang kan snevres inn ved å legge til flere elementer separert med semikolon og punktum. Punktum notasjon begrenser til en spesifikk sub rolle og brukes både i scopes og roller. Kallere må presentere ett eller flere matchende scope(s) og rolle(r).
Hver tilgangsrettighet er definert både som et scope og en rolle. Dette lar deg gi eller begrense tilgang på både client og bruker nivå. Tilgangsrettigheter er hierarkiske, og client og bruker trenger ikke matchende scopes og roller.
Administrator rollen foxids:tenant.admin gir tilgang til alle data i en tenant og master tenant data; den tilsvarer rollene foxids:tenant og foxids:master.
En client ber om et scope ved å spesifisere resource og scope separert med et semikolon. For eksempel, for å be om scopet foxids:tenant:track:party.create ber clienten om foxids_control_api:foxids:tenant:track:party.create.
Hvis en request avvises på grunn av utilstrekkelige tilgangsrettigheter, logges et trace item med mulige autoriserende scopes og roller sammen med brukerens faktiske scopes og roller.
Tenant access rights
Tenant tilgangsrettigheter er både scopes og roller.
Hvis scopet du trenger ikke er definert på Control API
foxids_control_apikan du legge til scopet.
:track[xxxx] spesifiserer et miljø ved teknisk navn. f.eks. et Test miljø med teknisk navn hsgm7je5 er :track[hsgm7je5]
og et Production miljø med teknisk navn - er :track[-].
| Scope / role | Access |
|---|---|
| Tilgang til alt i tenant, ikke master tenant data. | |
foxids:tenant |
read, create, update, delete |
foxids:tenant.read |
read |
foxids:tenant.create |
create |
foxids:tenant.update |
update |
foxids:tenant.delete |
delete |
| Tilgang til grunnleggende tenant elementer:
|
|
foxids:tenant:basic |
read, create, update, delete |
foxids:tenant:basic.read |
read |
foxids:tenant:basic.create |
create |
foxids:tenant:basic.update |
update |
foxids:tenant:basic.delete |
delete |
| Tilgang til alt i alle miljøer i en tenant, ikke inkludert master miljøet. | |
foxids:tenant:track |
read, create, update, delete |
foxids:tenant:track.read |
read |
foxids:tenant:track.create |
create |
foxids:tenant:track.update |
update |
foxids:tenant:track.delete |
delete |
| Tilgang til alt i et spesifikt miljø i en tenant. `xxxx` er miljøets tekniske navn. | |
foxids:tenant:track[xxxx] |
read, create, update, delete |
foxids:tenant:track[xxxx].read |
read |
foxids:tenant:track[xxxx].create |
create |
foxids:tenant:track[xxxx].update |
update |
foxids:tenant:track[xxxx].delete |
delete |
| Alle usage logs i alle miljøer i en tenant, ikke inkludert master miljøet. Ikke relevant i master tenant. | |
foxids:tenant:track:usage |
read |
| Usage logs i et spesifikt miljø i en tenant. Ikke relevant i master tenant. | |
foxids:tenant:track[xxxx]:usage |
read |
| Alle audit logs i alle miljøer i en tenant, ikke inkludert master miljøet. | |
foxids:tenant:track:audit |
read |
| Audit logs i et spesifikt miljø i en tenant. | |
foxids:tenant:track[xxxx]:audit |
read |
| Alle logs i alle miljøer i en tenant, ikke inkludert master miljøet. | |
foxids:tenant:track:log |
read, create, update, delete |
foxids:tenant:track:log.read |
read |
foxids:tenant:track:log.create |
create |
foxids:tenant:track:log.update |
update |
foxids:tenant:track:log.delete |
delete |
| Logs i et spesifikt miljø. | |
foxids:tenant:track[xxxx]:log |
read, create, update, delete |
foxids:tenant:track[xxxx]:log.read |
read |
foxids:tenant:track[xxxx]:log.create |
create |
foxids:tenant:track[xxxx]:log.update |
update |
foxids:tenant:track[xxxx]:log.delete |
delete |
| Alle brukere i alle miljøer i en tenant, ikke inkludert master miljøet. | |
foxids:tenant:track:user |
read, create, update, delete |
foxids:tenant:track:user.read |
read |
foxids:tenant:track:user.create |
create |
foxids:tenant:track:user.update |
update |
foxids:tenant:track:user.delete |
delete |
| Alle brukere i et spesifikt miljø i en tenant. | |
foxids:tenant:track[xxxx]:user |
read, create, update, delete |
foxids:tenant:track[xxxx]:user.read |
read |
foxids:tenant:track[xxxx]:user.create |
create |
foxids:tenant:track[xxxx]:user.update |
update |
foxids:tenant:track[xxxx]:user.delete |
delete |
| Alle applikasjonsregistreringer og autentiseringsmetoder i alle miljøer i en tenant, ikke inkludert master miljøet. | |
foxids:tenant:track:party |
read, create, update, delete |
foxids:tenant:track:party.read |
read |
foxids:tenant:track:party.create |
create |
foxids:tenant:track:party.update |
update |
foxids:tenant:track:party.delete |
delete |
| Alle applikasjonsregistreringer og autentiseringsmetoder i et spesifikt miljø i en tenant. | |
foxids:tenant:track[xxxx]:party |
read, create, update, delete |
foxids:tenant:track[xxxx]:party.read |
read |
foxids:tenant:track[xxxx]:party.create |
create |
foxids:tenant:track[xxxx]:party.update |
update |
foxids:tenant:track[xxxx]:party.delete |
delete |
Master tenant access rights
Master tenant tilgangsrettigheter er både scopes og roller.
| Scope / role | Access |
|---|---|
| Tilgang til master tenant data Kan liste, opprette og slette tenants men ikke se inn i andre tenants. |
|
foxids:master |
read, create, update, delete |
foxids:master.read |
read |
foxids:master.create |
create |
foxids:master.update |
update |
foxids:master.delete |
delete |
| Audit log i master tenant. | |
foxids:master:audit |
read |
| Usage log i master tenant. | |
foxids:master:usage |
read |