FoxIDs Control API
Control API är en REST API med en online Swagger (OpenAPI) interface beskrivning och Swagger UI.
Om du self hostar FoxIDs, exponeras Swagger (OpenAPI) dokumentet i FoxIDs Control på .../api/swagger/v2/swagger.json och Swagger UI på .../api/swagger.
API-referens
Swagger beskriver exakta routes, parametrar, request- och response-scheman samt aktuella statuskoder.
Resursguider
Resursguider förklarar hur man kombinerar relaterade operationer på ett säkert sätt. De inkluderar arbetsflöden, exempel, säkerhetsöverväganden och anmärkningsvärda bieffekter utan att duplicera hela OpenAPI-kontraktet.
Tenant struktur
Konfiguration
Användare och åtkomst
Operationer
Terminologi och endpoint-struktur
Control API namngivning:
- En miljö kallas
track- En applikationsregistrering kallas
downparty- En autentiseringsmetod kallas
upparty
Control API URLen innehåller variabler för tenant namn och track namn (miljö namn) du vill arbeta på: .../{tenant_name}/{track_name}/....
Ersätt {tenant_name} med ditt tenant namn och {track_name} med miljöns tekniska namn. Om du genererar en proxy från Swagger (OpenAPI) dokumentet, levereras variablerna som input parametrar.
Till exempel, för att läsa en OpenID Connect applikationsregistrering i FoxIDs Cloud med tekniskt namn some_oidc_app, anropa (HTTP GET) https://control.foxids.com/api/{tenant_name}/{track_name}/!oidcdownparty?name=some_oidc_app (ersätt variablerna med ditt tenant namn och tekniskt miljö namn).
Autentisering
Du kan anropa Control API antingen som en service daemon med en OAuth 2.0 client (client credentials) eller i kontexten av en användare via en OpenID Connect client.
Stegen nedan skapar en OAuth 2.0 client och ger den admin nivå access rights via scopes och roller.
Skapa en OAuth 2.0 client i FoxIDs Control Client:
- Välj master miljön (i headern).
- Välj Applications fliken.
- Klicka New Application.
- Klicka Backend Application.
- Lägg till ett Name t.ex.
My API Client. - Klicka Register.
- Kopiera Client ID och Client secret.
- Klicka Close.
- Lägg till ett Name t.ex.
- Klicka din client registrering i listan för att öppna den.
- I sektionen Resource and scopes - ger clienten tillgång till din tenant:
- Klicka Add Resource and scope och lägg till resursen
foxids_control_api. - Klicka Add Scope och lägg till scopet
foxids:tenant.
- Klicka Add Resource and scope och lägg till resursen
- Välj Show advanced.
- I sektionen Issue claims - ger clienten tenant administratör rollen:
- Klicka Add Claim och lägg till claim
role. - Klicka Add Value och lägg till claim värde
foxids:tenant.admin.
- Klicka Add Claim och lägg till claim
- Klicka Update.
Gör sedan en OAuth 2.0 Client Credentials Grant request för att få ett access token till Control API.
Ersätt {tenant_name}, {track_name}, {client_id} och {client_secret}. Byt domän om du self hostar.
Postman sample
Denna Postman collection autentiserar med OAuth 2.0 clienten My API Client och returnerar användarna för den konfigurerade miljön (track).
Skapa en Postman collection JSON fil, t.ex. foxids_control_api.postman_collection.json, med innehållet nedan. Ersätt {tenant_name}, {track_name}, {client_id} och {client_secret}. Byt domäner (foxids.com och control.foxids.com) om du self hostar.
{
"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
Denna HTTP sample autentiserar 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 används för att anropa Control API.
C# code sample
Denna C# sample autentiserar 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);
Anropa sedan Control API med access token som Authorization Bearer header, enligt OAuth 2.0 Bearer Token (RFC 6750) standarden.
C# code sample
Denna C# sample visar hur du lägger till access token i HttpClient och läser OpenID Connect applikationsregistreringen some_oidc_app (tekniskt namn).
// 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
Detta visar Control API konfigurationen i en tenants master miljö med default uppsättning scopes som ger åtkomst till tenant data.

Du kan lägga till fler scopes för att utöka Control API åtkomst per miljö för att uppnå least privilege konfigurationer.
Åtkomst till Control API är begränsad av scopes och roller. Det finns två scope familjer: foxids:master ger åtkomst till master tenant data och foxids:tenant ger åtkomst till tenant data.
Control API resursen foxids_control_api är definierad i varje tenants master miljö, och de konfigurerade scopes ger åtkomst till tenant data via Control API.
En scopes åtkomst kan begränsas genom att lägga till fler element separerade med semikolon och punkter. Punkt notering begränsar till en specifik sub roll och används både i scopes och roller. Callers måste presentera en eller flera matchande scope(s) och roll(er).
Varje åtkomsträtt är definierad både som ett scope och en roll. Detta gör det möjligt att ge eller begränsa åtkomst på både client och användare nivå. Åtkomsträttigheter är hierarkiska, och client och användare behöver inte matchande scopes och roller.
Administratör rollen foxids:tenant.admin ger åtkomst till all data i en tenant och master tenant data; den är likvärdig med rollerna foxids:tenant och foxids:master.
En client begär ett scope genom att ange resource och scope separerat med ett semikolon. Till exempel, för att begära scopet foxids:tenant:track:party.create begär clienten foxids_control_api:foxids:tenant:track:party.create.
Om en request nekas på grund av otillräckliga åtkomsträttigheter loggas ett trace item med möjliga authoriserande scopes och roller tillsammans med användarens faktiska scopes och roller.
Tenant access rights
Tenant access rights är både scopes och roller.
Om scopet du behöver inte är definierat på Control API
foxids_control_apikan du lägga till scopet.
:track[xxxx] specificerar en miljö med tekniskt namn. t.ex. en Test miljö med tekniskt namn hsgm7je5 är :track[hsgm7je5]
och en Production miljö med tekniskt namn - är :track[-].
| Scope / role | Access |
|---|---|
| Åtkomst till allt i tenant, inte 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 |
| Åtkomst till grundläggande tenant element:
|
|
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 |
| Åtkomst till allt i alla miljöer i en tenant, inte inklusive master miljön. | |
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 |
| Åtkomst till allt i en specifik miljö i en tenant. `xxxx` är miljöns tekniska namn. | |
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 |
| Alla usage logs i alla miljöer i en tenant, inte inklusive master miljön. Inte relevant i master tenant. | |
foxids:tenant:track:usage |
read |
| Usage logs i en specifik miljö i en tenant. Inte relevant i master tenant. | |
foxids:tenant:track[xxxx]:usage |
read |
| Alla audit logs i alla miljöer i en tenant, inte inklusive master miljön. | |
foxids:tenant:track:audit |
read |
| Audit logs i en specifik miljö i en tenant. | |
foxids:tenant:track[xxxx]:audit |
read |
| Alla logs i alla miljöer i en tenant, inte inklusive master miljön. | |
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 en specifik 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 |
| Alla användare och medlemskap i åtkomststrukturer i alla miljöer i en tenant, inte inklusive master miljön. | |
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 |
| Alla användare och medlemskap i åtkomststrukturer i en specifik 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 |
| Alla åtkomststrukturer och medlemskap i åtkomststrukturer i alla miljöer i en tenant, exklusive master miljön. | |
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 |
| Alla åtkomststrukturer och medlemskap i åtkomststrukturer i en specifik 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 |
| Alla applikationsregistreringar och autentiseringsmetoder i alla miljöer i en tenant, inte inklusive master miljön. | |
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 |
| Alla applikationsregistreringar och autentiseringsmetoder i en specifik 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 access rights är både scopes och roller.
| Scope / role | Access |
|---|---|
| Åtkomst till master tenant data Kan lista, skapa och ta bort tenants men inte se in i andra 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 |