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.
API-referanse
Swagger beskriver de nøyaktige rutene, parameterne, request- og response-skjemaene samt gjeldende statuskoder.
Ressursguider
Ressursguider forklarer hvordan du kan kombinere relaterte operasjoner på en sikker måte. De inkluderer arbeidsflyter, eksempler, sikkerhetshensyn og bemerkelsesverdige bivirkninger uten å duplisere hele OpenAPI-kontrakten.
Tenant struktur
Konfigurasjon
Brukere og tilgang
Drift
Terminologi og endpoint-struktur
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).
Autentisering
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}/master/{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}/master/{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 httpClient.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 og medlemskap i tilgangsstrukturer 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 og medlemskap i tilgangsstrukturer 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 tilgangsstrukturer og medlemskap i tilgangsstrukturer i alle miljøer i en tenant, ikke inkludert master miljøet. | |
foxids:tenant:track:accessstructure |
read, create, update, delete |
foxids:tenant:track:accessstructure.read |
read |
foxids:tenant:track:accessstructure.create |
create |
foxids:tenant:track:accessstructure.update |
update |
foxids:tenant:track:accessstructure.delete |
delete |
| Alle tilgangsstrukturer og medlemskap i tilgangsstrukturer i et spesifikt miljø i en tenant. | |
foxids:tenant:track[xxxx]:accessstructure |
read, create, update, delete |
foxids:tenant:track[xxxx]:accessstructure.read |
read |
foxids:tenant:track[xxxx]:accessstructure.create |
create |
foxids:tenant:track[xxxx]:accessstructure.update |
update |
foxids:tenant:track[xxxx]:accessstructure.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 |