FoxIDs Control

FoxIDs konfigureras via FoxIDs Control som består av Control Client och Control API. Control Client och API är skyddade av FoxIDs, och Control Client använder Control API.

Control API innehåller all konfigurationsfunktionalitet. Därför är det möjligt att automatisera konfigurationen genom att integrera med Control API.

FoxIDs Control Client

Control Client är en Blazor WebAssembly (WASM) app.

Öppna din Control Client på FoxIDs.com.

Tenant och master miljö

Om du använder FoxIDs.com skapas din tenant under registrering.

Om du deploy FoxIDs (self hosted) får du tillgång till master tenant. Skapa först en tenant som innehåller din säkerhetskonfiguration. De flesta installationer behöver bara en, men du kan konfigurera ett obegränsat antal tenants.

Configure tenants

En tenant innehåller en master miljö där hela tenant konfigureras. Master miljön innehåller ett användar repository och vid skapande endast en administratör användare.

Normalt bör du inte ändra master miljö konfigurationen eller lägga till nya autentiseringsmetoder eller applikationsregistreringar, men det är möjligt. Du kan till exempel genom att lägga till en autentiseringsmetod få single sign on (SSO) till master miljön.

Skapa administratör användare

Det är möjligt att skapa fler administratör användare i master miljön. En användare blir administratör genom att lägga till administratör rollen foxids:tenant.admin som visas nedan.

Skapa en användare:

  1. Öppna master miljön
  2. Välj Users fliken
  3. Klicka Create User
  4. Lägg till användarinformation och klicka Create.

Configure administrator user

Ge åtkomst till användare

Åtkomst ges via roller. Scopes behövs bara när en client begär en token för Control API; Control Client begär redan det nödvändiga scopet på foxids_control_api, så du tilldelar vanligtvis bara roller till användaren i master miljön.

För att låta en person logga in i Control Client och se konfigurationsdata:

  1. Skapa eller öppna användaren i master miljön (Users fliken).
  2. Lägg till basrollen foxids:tenant:basic.read (krävs för att Control Client ska kunna ladda profil och hjälptools).
  3. Bestäm vad användaren får se:
    • För att begränsa synlighet till en miljö, lägg till foxids:tenant:track[vh2csjt4].read (ersätt vh2csjt4 med det tekniska miljö namnet).
    • För att tillåta alla miljöer, lägg till foxids:tenant.read.
  4. Lägg till de operationella roller användaren behöver i varje miljö. Exempel: foxids:tenant:track[vh2csjt4]:user för att hantera användare, foxids:tenant:track[vh2csjt4]:party för att hantera applikationer och autentiseringsmetoder.

Control Client vs API only:

  • Control Client (interaktiv UI) läser profildata och miljölistor utöver de specifika APIer du vill hantera. Den behöver därför foxids:tenant:basic.read plus en miljö read roll (foxids:tenant:track[main].read eller foxids:tenant.read) tillsammans med dina action roller.
  • API only callers kan vara smalare. Om en backend tjänst bara kallar user API för miljön vh2csjt4, räcker rollen foxids:tenant:track[vh2csjt4]:user (och att begära matchande scope vid client credentials); extra read roller behövs inte eftersom inga UI data behöver laddas.

Miljöer

Konfigurera ett antal miljöer, en för varje av dina miljöer t.ex. dev, qa och prod.

Skapa en eller flera miljöer, lägg inte konfiguration i master miljön.

Configure environments

Varje miljö innehåller ett användar repository och en standard login autentiseringsmetod.

Du kan lägga till OpenID Connect, OAuth 2.0 och SAML 2.0 applikationsregistreringar och autentiseringsmetoder.

Configure application registrations and authentication methods

En miljö innehåller ett primärt certifikat och eventuellt ett sekundärt certifikat i Certificates fliken. Det är möjligt att byta mellan primärt och sekundärt certifikat om båda är konfigurerade, beroende på certifikat container typen.

Configure certificates

Miljöegenskaperna kan konfigureras genom att klicka på settings ikonen uppe till höger.

  • Sequence lifetime är max livslängd för en användares login flow från start till slut.
  • FoxIDs skyddar mot password gissning via max failing logins, failing login count lifetime och observation period.
  • Password krav konfigureras gällande längd, komplexitet och password risk.
  • Det är möjligt att hosta FoxIDs i en iframe från tillåtna domäner.
  • Du kan skicka emails med din egen SendGrid tenant genom att lägga till en custom email adress och SendGrid nyckel.

Configure environment settings

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.

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).

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:

  1. Välj master miljön (i headern).
  2. Välj Applications fliken.
  3. Klicka New Application.
  4. Klicka Backend Application.
    1. Lägg till ett Name t.ex. My API Client.
    2. Klicka Register.
    3. Kopiera Client ID och Client secret.
    4. Klicka Close.
  5. Klicka din client registrering i listan för att öppna den.
  6. I sektionen Resource and scopes - ger clienten tillgång till din tenant:
    1. Klicka Add Resource and scope och lägg till resursen foxids_control_api.
    2. Klicka Add Scope och lägg till scopet foxids:tenant.
  7. Välj Show advanced.
  8. I sektionen Issue claims - ger clienten tenant administratör rollen:
    1. Klicka Add Claim och lägg till claim role.
    2. Klicka Add Value och lägg till claim värde foxids:tenant.admin.
  9. 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}/{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 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}/{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);

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 client.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.

Configure foxids_control_api

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_api kan 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:
  • Min profil som används i Control Client.
  • Anropa ReadCertificate API för att få en JWT med certifikatinformation från ett 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
    Å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 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 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 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

    Din integritet

    Vi använder cookies för att göra din upplevelse av våra webbplatser bättre. Klicka på 'Acceptera alla cookies' för att godkänna användningen av cookies. För att avstå från icke-nödvändiga cookies, klicka på 'Endast nödvändiga cookies'.

    Besök vår integritetspolicy för mer