FoxIDs Control

FoxIDs wird über FoxIDs Control konfiguriert, das aus Control Client und Control API besteht. Control Client und API sind durch FoxIDs gesichert, und Control Client verwendet Control API.

Control API enthält die gesamte Konfigurationsfunktionalität. Daher ist es möglich, die Konfiguration durch Integration mit Control API zu automatisieren.

FoxIDs Control Client

Control Client ist eine Blazor WebAssembly (WASM) App.

Öffnen Sie Ihren Control Client auf FoxIDs.com.

Tenant und Master Umgebung

Wenn Sie FoxIDs.com verwenden, wird Ihr Tenant während der Registrierung erstellt.

Wenn Sie FoxIDs bereitstellen (self hosted), erhalten Sie Zugriff auf den Master Tenant. Erstellen Sie zuerst einen Tenant, der Ihre Sicherheitskonfiguration enthält. Die meisten Installationen benötigen nur einen, aber Sie können eine unbegrenzte Anzahl von Tenants konfigurieren.

Configure tenants

Ein Tenant enthält eine Master Umgebung, von der der gesamte Tenant konfiguriert wird. Die Master Umgebung enthält ein Benutzer Repository und bei der Erstellung nur einen Administrator Benutzer.

Normalerweise sollten Sie die Master Umgebung Konfiguration nicht ändern oder neue Authentifizierungsmethoden oder Anwendungsregistrierungen hinzufügen, aber es ist möglich. Sie können z. B. durch Hinzufügen einer Authentifizierungsmethode Single Sign on (SSO) zur Master Umgebung erreichen.

Administrator Benutzer erstellen

Es ist möglich, weitere Administrator Benutzer in der master Umgebung zu erstellen. Ein Benutzer wird Administrator, indem die Administrator Rolle foxids:tenant.admin hinzugefügt wird, wie unten gezeigt.

Benutzer erstellen:

  1. Master Umgebung öffnen
  2. Tab Users auswählen
  3. Create User klicken
  4. Benutzerinformationen hinzufügen und Create klicken.

Configure administrator user

Zugriff für Benutzer gewähren

Zugriff wird über Rollen gewährt. Scopes sind nur erforderlich, wenn ein Client ein Token für Control API anfordert; Control Client fordert bereits das erforderliche Scope auf foxids_control_api an, daher weisen Sie in der Regel nur Rollen für den Benutzer in der Master Umgebung zu.

Damit sich eine Person im Control Client anmelden und Konfigurationsdaten sehen kann:

  1. Benutzer in der master Umgebung erstellen oder öffnen (Users Tab).
  2. Basis Rolle foxids:tenant:basic.read hinzufügen (erforderlich, damit Control Client Profil und Hilfstools laden kann).
  3. Entscheiden, was der Benutzer sehen darf:
    • Um die Sichtbarkeit auf eine Umgebung zu beschränken, foxids:tenant:track[vh2csjt4].read hinzufügen (ersetzen Sie vh2csjt4 durch den technischen Umgebungsnamen).
    • Um alle Umgebungen zu erlauben, foxids:tenant.read hinzufügen.
  4. Die benötigten Betriebsrollen für jede Umgebung hinzufügen. Beispiele: foxids:tenant:track[vh2csjt4]:user zur Verwaltung von Benutzern, foxids:tenant:track[vh2csjt4]:party zur Verwaltung von Anwendungen und Authentifizierungsmethoden.

Control Client vs API only:

  • Control Client (interaktive UI) liest Profildaten und Umgebungslisten zusätzlich zu den spezifischen APIs, die Sie verwalten möchten. Daher benötigt es foxids:tenant:basic.read plus eine Umgebungs Lese Rolle (foxids:tenant:track[main].read oder foxids:tenant.read) zusammen mit Ihren Action Rollen.
  • API only Aufrufer können enger sein. Wenn ein Backend Dienst nur die User API für die Umgebung vh2csjt4 aufruft, reicht die Rolle foxids:tenant:track[vh2csjt4]:user (und Anforderung des passenden Scopes bei Client Credentials) aus; die zusätzlichen Read Rollen sind nicht erforderlich, da keine UI Daten geladen werden.

Umgebungen

Konfigurieren Sie mehrere Umgebungen, eine für jede Ihrer Umgebungen z. B. dev, qa und prod.

Erstellen Sie eine oder mehrere Umgebungen, legen Sie keine Konfiguration in der Master Umgebung ab.

Configure environments

Jede Umgebung enthält ein Benutzer Repository und eine Standard login Authentifizierungsmethode.

Sie können OpenID Connect, OAuth 2.0 und SAML 2.0 Anwendungsregistrierungen und Authentifizierungsmethoden hinzufügen.

Configure application registrations and authentication methods

Eine Umgebung enthält ein primäres Zertifikat und möglicherweise ein sekundäres Zertifikat im Certificates Tab. Es ist möglich, zwischen primärem und sekundärem Zertifikat zu wechseln, wenn beide konfiguriert sind, abhängig vom Zertifikat Container Typ.

Configure certificates

Die Umgebungs Eigenschaften können über das Settings Symbol oben rechts konfiguriert werden.

  • Sequence lifetime ist die maximale Lebensdauer eines Login Flows vom Start bis zum Ende.
  • FoxIDs schützt vor Passwort Raten über max failing logins, failing login count lifetime und observation period.
  • Passwort Anforderungen werden bezüglich Länge, Komplexität und password risk konfiguriert.
  • Es ist möglich, FoxIDs in einem iframe aus erlaubten Domains zu hosten.
  • Sie können Emails mit Ihrem eigenen SendGrid Tenant senden, indem Sie eine Custom Email Adresse und einen SendGrid Schlüssel hinzufügen.

Configure environment settings

FoxIDs Control API

Control API ist eine REST API mit einer online Swagger (OpenAPI) Interface Beschreibung und Swagger UI.

Wenn Sie FoxIDs self hosten, wird das Swagger (OpenAPI) Dokument in FoxIDs Control unter .../api/swagger/v2/swagger.json und Swagger UI unter .../api/swagger bereitgestellt.

Control API Benennung:

  • Eine Umgebung heißt track
  • Eine Anwendungsregistrierung heißt downparty
  • Eine Authentifizierungsmethode heißt upparty

Die Control API URL enthält Variablen für den Tenant Namen und den Track Namen (Umgebungsname), den Sie bearbeiten möchten: .../{tenant_name}/{track_name}/.... Ersetzen Sie {tenant_name} durch Ihren Tenant Namen und {track_name} durch den technischen Umgebungsnamen. Wenn Sie einen Proxy aus dem Swagger (OpenAPI) Dokument generieren, werden diese Variablen als Eingabeparameter bereitgestellt.

Zum Beispiel, um eine OpenID Connect Anwendungsregistrierung in FoxIDs Cloud mit dem technischen Namen some_oidc_app zu lesen, rufen Sie (HTTP GET) https://control.foxids.com/api/{tenant_name}/{track_name}/!oidcdownparty?name=some_oidc_app auf (ersetzen Sie die Variablen mit Ihrem Tenant Namen und technischen Umgebungsnamen).

Sie können Control API entweder als Service Daemon mit einem OAuth 2.0 Client (Client Credentials) oder im Kontext eines Benutzers über einen OpenID Connect Client aufrufen.

Die folgenden Schritte erstellen einen OAuth 2.0 Client und gewähren ihm Admin Level Access Rights über Scopes und Rollen.

OAuth 2.0 Client im FoxIDs Control Client erstellen:

  1. master Umgebung auswählen (im Header).
  2. Tab Applications auswählen.
  3. New Application klicken.
  4. Backend Application klicken.
    1. Name hinzufügen z. B. My API Client.
    2. Register klicken.
    3. Client ID und Client secret kopieren.
    4. Close klicken.
  5. Ihre Client Registrierung in der Liste anklicken, um sie zu öffnen.
  6. Im Abschnitt Resource and scopes - gewährt dem Client Zugriff auf Ihren Tenant:
    1. Add Resource and scope klicken und die Resource foxids_control_api hinzufügen.
    2. Add Scope klicken und das Scope foxids:tenant hinzufügen.
  7. Show advanced auswählen.
  8. Im Abschnitt Issue claims - gewährt dem Client die Tenant Administrator Rolle:
    1. Add Claim klicken und Claim role hinzufügen.
    2. Add Value klicken und Claim Wert foxids:tenant.admin hinzufügen.
  9. Update klicken.

Führen Sie anschließend eine OAuth 2.0 Client Credentials Grant Anfrage durch, um ein Access Token für Control API zu erhalten.

Ersetzen Sie {tenant_name}, {track_name}, {client_id} und {client_secret}. Ändern Sie die Domain, wenn Sie self hosten.

Postman sample Diese Postman Collection authentifiziert sich mit dem OAuth 2.0 Client My API Client und gibt die Benutzer für die konfigurierte Umgebung (track) zurück.

Erstellen Sie eine Postman Collection JSON Datei, z. B. foxids_control_api.postman_collection.json, mit dem folgenden Inhalt. Ersetzen Sie {tenant_name}, {track_name}, {client_id} und {client_secret}. Ändern Sie die Domains (foxids.com und control.foxids.com), wenn Sie self hosten.

{
  "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 Dieses HTTP Sample authentifiziert sich als OAuth 2.0 Client My API Client mit dem 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
}

Das access_token wird verwendet, um Control API aufzurufen.

C# code sample Dieses C# Sample authentifiziert sich als OAuth 2.0 Client My API Client mit dem 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);

Rufen Sie anschließend Control API mit dem Access Token als Authorization Bearer Header auf, wie in OAuth 2.0 Bearer Token (RFC 6750) definiert.

C# code sample Dieses C# Sample zeigt, wie das Access Token zum HttpClient hinzugefügt wird und die OpenID Connect Anwendungsregistrierung some_oidc_app (technischer Name) gelesen wird.

// 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

Dies zeigt die Control API Konfiguration in einer Tenant Master Umgebung mit dem default Satz an Scopes, die Zugriff auf Tenant Daten gewähren.

Configure foxids_control_api

Sie können weitere Scopes hinzufügen, um Control API Zugriffsrechte pro Umgebung zu erweitern und Least Privilege Konfigurationen zu erreichen.

Der Zugriff auf Control API ist durch Scopes und Rollen eingeschränkt. Es gibt zwei Scope Familien: foxids:master gewährt Zugriff auf Master Tenant Daten und foxids:tenant gewährt Zugriff auf Tenant Daten. Die Control API Resource foxids_control_api ist in jeder Tenant Master Umgebung definiert, und die konfigurierten Scopes gewähren Zugriff auf die Tenant Daten über Control API.

Der Zugriff eines Scopes kann durch Hinzufügen weiterer Elemente getrennt mit Semikolons und Punkten eingeschränkt werden. Punkt Notation begrenzt auf eine spezifische Sub Rolle und wird sowohl in Scopes als auch Rollen verwendet. Aufrufer müssen einen oder mehrere passende Scopes und Rollen präsentieren.

Jedes Zugriffsrecht ist sowohl als Scope als auch als Rolle definiert. Dadurch können Sie Zugriff auf Client und Benutzer Ebene gewähren oder einschränken. Zugriffsrechte sind hierarchisch, und Client und Benutzer benötigen keine passenden Scopes und Rollen.

Die Administrator Rolle foxids:tenant.admin gewährt Zugriff auf alle Daten in einem Tenant und die Master Tenant Daten; sie entspricht den Rollen foxids:tenant und foxids:master.

Ein Client fordert ein Scope an, indem er Resource und Scope durch ein Semikolon trennt. Zum Beispiel fordert der Client für das Scope foxids:tenant:track:party.create den Wert foxids_control_api:foxids:tenant:track:party.create an.

Wenn eine Anfrage wegen unzureichender Zugriffsrechte abgelehnt wird, wird ein Trace Item mit den möglichen autorisierenden Scopes und Rollen sowie den tatsächlichen Scopes und Rollen des Benutzers protokolliert.

Tenant access rights

Tenant Zugriffsrechte sind sowohl Scopes als auch Rollen.

Wenn das benötigte Scope auf der Control API foxids_control_api nicht definiert ist, können Sie es hinzufügen.

:track[xxxx] gibt eine Umgebung anhand des technischen Namens an. z. B. eine Test Umgebung mit dem technischen Namen hsgm7je5 ist :track[hsgm7je5] und eine Production Umgebung mit dem technischen Namen - ist :track[-].

Scope / role Access
Zugriff auf alles im Tenant, nicht die Master Tenant Daten.
foxids:tenant read, create, update, delete
foxids:tenant.read read
foxids:tenant.create create
foxids:tenant.update update
foxids:tenant.delete delete
Zugriff auf grundlegende Tenant Elemente:
  • Mein Profil, das im Control Client verwendet wird.
  • ReadCertificate API aufrufen, um ein JWT mit Zertifikatsinformationen aus einem X509 Zertifikat zu erhalten.
  • 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
    Zugriff auf alles in allen Umgebungen eines Tenants, nicht inklusive der Master Umgebung.
    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
    Zugriff auf alles in einer bestimmten Umgebung eines Tenants. `xxxx` ist der technische Umgebungsname.
    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 in allen Umgebungen eines Tenants, nicht inklusive der Master Umgebung. Nicht anwendbar im Master Tenant.
    foxids:tenant:track:usage read
    Usage Logs in einer bestimmten Umgebung eines Tenants. Nicht anwendbar im Master Tenant.
    foxids:tenant:track[xxxx]:usage read
    Alle Audit Logs in allen Umgebungen eines Tenants, nicht inklusive der Master Umgebung.
    foxids:tenant:track:audit read
    Audit Logs in einer bestimmten Umgebung eines Tenants.
    foxids:tenant:track[xxxx]:audit read
    Alle Logs in allen Umgebungen eines Tenants, nicht inklusive der Master Umgebung.
    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 in einer bestimmten Umgebung.
    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 Benutzer in allen Umgebungen eines Tenants, nicht inklusive der Master Umgebung.
    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 Benutzer in einer bestimmten Umgebung eines Tenants.
    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 Anwendungsregistrierungen und Authentifizierungsmethoden in allen Umgebungen eines Tenants, nicht inklusive der Master Umgebung.
    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 Anwendungsregistrierungen und Authentifizierungsmethoden in einer bestimmten Umgebung eines Tenants.
    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 Zugriffsrechte sind sowohl Scopes als auch Rollen.

    Scope / role Access
    Zugriff auf Master Tenant Daten
    Kann Tenants auflisten, erstellen und löschen, aber nicht in andere Tenants hineinsehen.
    foxids:master read, create, update, delete
    foxids:master.read read
    foxids:master.create create
    foxids:master.update update
    foxids:master.delete delete
    Audit Log im Master Tenant.
    foxids:master:audit read
    Usage Log im Master Tenant.
    foxids:master:usage read

    Ihre Privatsphäre

    Wir verwenden Cookies, um Ihre Erfahrung auf unseren Websites zu verbessern. Klicken Sie auf 'Alle Cookies akzeptieren', um der Verwendung von Cookies zuzustimmen. Um nicht notwendige Cookies abzulehnen, klicken Sie auf 'Nur notwendige Cookies'.

    Weitere Informationen finden Sie in unserer Datenschutzerklärung