FoxIDs Control

FoxIDs konfigureres via FoxIDs Control som består af Control Client og Control API. Control Client og API er sikret af FoxIDs, og Control Client bruger Control API.

Control API indeholder al konfigurationsfunktionalitet. Derfor er det muligt at automatisere konfigurationen ved at integrere med Control API.

FoxIDs Control Client

Control Client er en Blazor WebAssembly (WASM) app.

Åbn din Control Client på FoxIDs.com.

Tenant og master miljø

Hvis du bruger FoxIDs.com, oprettes din tenant under registrering.

Hvis du deploy FoxIDs (self hosted) får du adgang til master tenant. Opret først en tenant til at indeholde din sikkerhedskonfiguration. De fleste installationer behøver kun én, men du kan konfigurere et ubegrænset antal tenants.

Configure tenants

En tenant indeholder et master miljø, hvorfra hele tenant konfigureres. Master miljøet indeholder et bruger repository og ved oprettelse kun én administratorbruger.

Normalt bør du ikke ændre master miljøets konfiguration eller tilføje nye autentificeringsmetoder eller applikationsregistreringer, men det er muligt. Du kan f.eks. ved at tilføje en autentificeringsmetode opnå single sign on (SSO) til master miljøet.

Opret administrator bruger(e)

Det er muligt at oprette flere administratorbrugere i master miljøet. En bruger bliver administrator ved at tilføje administratorrollen foxids:tenant.admin som vist nedenfor.

Opret en bruger:

  1. Åbn master miljøet
  2. Vælg fanen Users
  3. Klik Create User
  4. Tilføj brugeroplysninger og klik Create.

Configure administrator user

Tildel adgang til bruger

Adgang tildeles via roller. Scopes er kun nødvendige når en klient anmoder om en token til Control API; Control Client anmoder allerede om det krævede scope på foxids_control_api, så du tildeler typisk kun roller til brugeren i master miljøet.

For at lade en person logge ind i Control Client og se konfigurationsdata:

  1. Opret eller åbn brugeren i master miljøet (Users fanen).
  2. Tilføj basisrollen foxids:tenant:basic.read (kræves for at Control Client kan indlæse profil og værktøjer).
  3. Vælg hvad brugeren må se:
    • For at begrænse synligheden til ét miljø, tilføj foxids:tenant:track[vh2csjt4].read (erstat vh2csjt4 med det tekniske miljønavn).
    • For at tillade alle miljøer, tilføj foxids:tenant.read.
  4. Tilføj de operationelle roller brugeren har brug for i hvert miljø. Eksempler: foxids:tenant:track[vh2csjt4]:user til at administrere brugere, foxids:tenant:track[vh2csjt4]:party til at administrere applikationer og autentificeringsmetoder.

Control Client vs API only:

  • Control Client (interaktiv UI) læser profildata og miljølister ud over de specifikke API'er, du vil administrere. Den kræver derfor foxids:tenant:basic.read plus en miljølæse rolle (foxids:tenant:track[main].read eller foxids:tenant.read) sammen med dine action roller.
  • API only kaldere kan være mere snævre. Hvis en backend service kun kalder user API'et for miljøet vh2csjt4, er rollen foxids:tenant:track[vh2csjt4]:user (og anmodning om det matchende scope ved client credentials) tilstrækkelig; de ekstra read roller er ikke nødvendige fordi ingen UI data skal indlæses.

Miljøer

Konfigurer et antal miljøer, ét for hvert af dine miljøer f.eks. dev, qa og prod.

Opret et eller flere miljøer, læg ikke konfiguration i master miljøet.

Configure environments

Hvert miljø indeholder et bruger repository og en standard login autentificeringsmetode.

Du kan tilføje OpenID Connect, OAuth 2.0 og SAML 2.0 applikationsregistreringer og autentificeringsmetoder.

Configure application registrations and authentication methods

Et miljø indeholder et primært certifikat og muligvis et sekundært certifikat i Certificates fanen. Det er muligt at skifte mellem primært og sekundært certifikat hvis begge er konfigureret, afhængigt af certifikat container typen.

Configure certificates

Miljøets egenskaber kan konfigureres ved at klikke på settings ikonet øverst til højre.

  • Sequence lifetime er max levetid for en brugers login flow fra start til slut.
  • FoxIDs beskytter mod password gætning via max failing logins, failing login count lifetime og observation period.
  • Password krav konfigureres vedrørende længde, kompleksitet og password risk.
  • Det er muligt at hoste FoxIDs i en iframe fra tilladte domæner.
  • Du kan sende emails med din egen SendGrid tenant ved at tilføje en custom email adresse og SendGrid nøgle.

Configure environment settings

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 eksponeret i FoxIDs Control på .../api/swagger/v2/swagger.json og Swagger UI på .../api/swagger.

Control API navngivning:

  • Et miljø kaldes en track
  • En applikationsregistrering kaldes en downparty
  • En autentificeringsmetode kaldes en upparty

Control API URL'en indeholder variabler for tenant navn og track navn (miljønavn) du vil arbejde på: .../{tenant_name}/{track_name}/.... Erstat {tenant_name} med dit tenant navn og {track_name} med miljøets tekniske navn. Hvis du genererer en proxy fra Swagger (OpenAPI) dokumentet, leveres variablerne som input parametre.

For eksempel, for at læse en OpenID Connect applikationsregistrering i FoxIDs Cloud med det tekniske navn some_oidc_app, kald (HTTP GET) https://control.foxids.com/api/{tenant_name}/{track_name}/!oidcdownparty?name=some_oidc_app (erstat variablerne med dit tenant navn og miljøets tekniske navn).

Du kan kalde Control API enten som en service daemon med en OAuth 2.0 client (client credentials) eller i konteksten af en bruger via en OpenID Connect client.

Trinene nedenfor opretter en OAuth 2.0 client og tildeler den admin niveau access rights via scopes og roller.

Opret en OAuth 2.0 client i FoxIDs Control Client:

  1. Vælg master miljøet (i headeren).
  2. Vælg fanen Applications.
  3. Klik New Application.
  4. Klik Backend Application.
    1. Tilføj et Name f.eks. My API Client.
    2. Klik Register.
    3. Kopiér Client ID og Client secret.
    4. Klik Close.
  5. Klik din client registrering i listen for at åbne den.
  6. I sektionen Resource and scopes - tildeler client adgang til din tenant:
    1. Klik Add Resource and scope og tilføj resourcen foxids_control_api.
    2. Klik Add Scope og tilføj scopet foxids:tenant.
  7. Vælg Show advanced.
  8. I sektionen Issue claims - tildeler clienten tenant administrator rollen:
    1. Klik Add Claim og tilføj claim role.
    2. Klik Add Value og tilføj claim værdi foxids:tenant.admin.
  9. Klik Update.

Udfør derefter en OAuth 2.0 Client Credentials Grant request for at få en access token til Control API.

Erstat {tenant_name}, {track_name}, {client_id} og {client_secret}. Skift domænet hvis du self hoster.

Postman sample Denne Postman collection autentificerer med OAuth 2.0 clienten My API Client og returnerer brugerne for det konfigurerede miljø (track).

Opret en Postman collection JSON fil, f.eks. foxids_control_api.postman_collection.json, med indholdet nedenfor. Erstat {tenant_name}, {track_name}, {client_id} og {client_secret}. Skift domænerne (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 autentificerer 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 bruges til at kalde Control API.

C# code sample Denne C# sample autentificerer 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);

Kald derefter Control API med access token som Authorization Bearer header, som defineret i OAuth 2.0 Bearer Token (RFC 6750) standarden.

C# code sample Denne C# sample viser hvordan access token tilføjes til HttpClient og læser OpenID Connect applikationsregistreringen 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 konfigurationen i en tenants master miljø med det default sæt af scopes som giver adgang til tenant data.

Configure foxids_control_api

Du kan tilføje flere scopes for at udvide Control API adgangsrettigheder pr. miljø for at opnå least privilege konfigurationer.

Adgang til Control API er begrænset af scopes og roller. Der er to scope familier: foxids:master giver adgang til master tenant data og foxids:tenant giver adgang til tenant data. Control API resourcen foxids_control_api er defineret i hver tenants master miljø, og de konfigurerede scopes giver adgang til den tenants data via Control API.

Et scopes adgang kan indsnævres ved at tilføje flere elementer adskilt med semikolon og punktum. Punktum notation begrænser til en specifik sub rolle og bruges både i scopes og roller. Kaldere skal præsentere et eller flere matchende scope(s) og rolle(r).

Hver adgangsrettighed defineres både som et scope og en rolle. Det gør det muligt at tildele eller begrænse adgang på både client og bruger niveau. Adgangsrettigheder er hierarkiske, og client og bruger behøver ikke matchende scopes og roller.

Administrator rollen foxids:tenant.admin giver adgang til alle data i en tenant og master tenant data; den svarer til at have rollerne foxids:tenant og foxids:master.

En client anmoder om et scope ved at specificere resourcen og scopet adskilt af et semikolon. For eksempel, for at anmode om scopet foxids:tenant:track:party.create anmoder clienten om foxids_control_api:foxids:tenant:track:party.create.

Hvis en anmodning afvises på grund af utilstrækkelige adgangsrettigheder, logges et trace item med mulige autoriserende scopes og roller sammen med brugerens aktuelle scopes og roller.

Tenant access rights

Tenant adgangsrettigheder er både scopes og roller.

Hvis scopet du har brug for ikke er defineret på Control API foxids_control_api kan du tilføje scopet.

:track[xxxx] specificerer et miljø ved det tekniske navn. f.eks. et Test miljø med det tekniske navn hsgm7je5 er :track[hsgm7je5] og et Production miljø med det tekniske navn - er :track[-].

Scope / role Access
Adgang 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
Adgang til basale tenant elementer:
  • Min profil brugt i Control Client.
  • Kald ReadCertificate API'et for at få en JWT med certifikat information fra et X509 certifikat.
  • 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
    Adgang til alt i alle miljøer i en tenant, ikke inklusiv 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
    Adgang til alt i et specifikt 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 inklusiv master miljøet. Ikke relevant i master tenant.
    foxids:tenant:track:usage read
    Usage logs i et specifikt 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 inklusiv master miljøet.
    foxids:tenant:track:audit read
    Audit logs i et specifikt miljø i en tenant.
    foxids:tenant:track[xxxx]:audit read
    Alle logs i alle miljøer i en tenant, ikke inklusiv 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 specifikt 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 brugere i alle miljøer i en tenant, ikke inklusiv 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 brugere i et specifikt 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 applikationsregistreringer og autentificeringsmetoder i alle miljøer i en tenant, ikke inklusiv 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 applikationsregistreringer og autentificeringsmetoder i et specifikt 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 adgangsrettigheder er både scopes og roller.

    Scope / role Access
    Adgang til master tenant data
    Kan liste, oprette og slette tenants men ikke kigge ind 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

    Dit privatliv

    Vi bruger cookies til at gøre din oplevelse på vores websites bedre. Klik på 'Acceptér alle cookies' for at acceptere brugen af cookies. For at fravælge ikke-nødvendige cookies, klik på 'Kun nødvendige cookies'.

    Besøg vores privatlivspolitik for mere