Skip to Content
DocsAuthorityKonfiguration

Konfiguration

Dieses Kapitel beschreibt die unterschiedlichen Konfigurationsoptionen der Authority. Pflichtfelder sind mit einem ❗️ gekennzeichnet. Die Konfiguration der Authority erfolgt über eine JSON Datei. Beispiel:

.processcube/authority/config.json
{ "issuerUrl": "http://authority:11560", "applicationPort": 11560, "accessTokenTTL": 3600, "idTokenTTL": 3600, "sessionTTL": 1209600, "development": { "builtInReactDevServer": false, "detailedErrors": true, "disableHttpsEnforcement": true, "enableLocalhostImplicit": true, "fixWrongHostnames": true }, "studio": true, "portals": [ { "clientId": "portal", "rootUrl": "http://localhost:8082" } ] }

IssuerUrl❗️

Die issuerUrl ist die URL unter der die Authority erreichbar ist und ist zwingend erforderlich. Alle Clients müssen die Authority unter dieser URL erreichen können.

Beispiel:

.processcube/authority/config.json
{ "issuerUrl": "http://authority:11560", "applicationPort": 11560 }

Application Port

Über den applicationPort wird festgelegt auf welchen Port der HTTP Server der Authority startet.

Beispiel:

.processcube/authority/config.json
{ "applicationPort": 11560 }

Soll SSL über einen Proxy realisiert werden, muss die Issuer URL und der Application Port auf folgende Werte gesetzt werden. Der SSL Proxy muss die Anfragen auf den Port 80 der Authority leiten.

.processcube/authority/config.json
{ "applicationPort": 80, "issuerUrl": "https://my-authority.prd" }

accessTokenTTL

Der accessTokenTTL ist der Zeitraum in Sekunden, in dem ein Access Token gültig ist. Nach Ablauf dieses Zeitraums muss ein neuer Access Token angefordert, oder erneuert werden. Der Standardwert ist 3600 Sekunden (1 Stunde). Dieser Parameter ist nicht zwingend erforderlich.

Beispiel:

.processcube/authority/config.json
{ "accessTokenTTL": 3600 }

idTokenTTL

Der idTokenTTL ist der Zeitraum in Sekunden, in dem ein ID Token gültig ist. Nach Ablauf dieses Zeitraums muss ein neuer ID Token angefordert, oder erneuert werden. Der Standardwert ist 3600 Sekunden (1 Stunde). Dieser Parameter ist nicht zwingend erforderlich.

Beispiel:

.processcube/authority/config.json
{ "idTokenTTL": 3600 }

sessionTTL

Der sessionTTL bezeichnet die Gültigkeitsdauer in Sekunden einer Session. Der Standardwert ist 1209600 Sekunden (14 Tage).

Beispiel:

.processcube/authority/config.json
{ "sessionTTL": 1209600 }

anonymousSessionTTL

Der anonymousSessionTTL bezeichnet die Gültigkeitsdauer in Sekunden einer Anonymen Session. Der Standardwert ist 3600 Sekunden (1 Stunde).

Beispiel:

.processcube/authority/config.json
{ "anonymousSessionTTL": 3600 }

Development

Mit diesen Einstellungen können einige Produktiveinstellungen überschrieben werden. Sie sind besonders praktisch für die Entwicklung und den lokalen Betrieb. Die Einstellung akzeptiert folgende Werte:

WertBeschreibung
leer und falseDie Authority wird in der Produktivumgebung gestartet.
trueDie Authority wird in der Entwicklungsumgebung gestartet.
ObjektDetailierte Einstellung von jedem Entwicklungsfeature.

Wird ein Objekt übergeben, muss dieses die folgenden Eigenschaften enthalten:

WertBeschreibung
builtInReactDevServerStartet einen internen React Dev Server, der die React Anwendung aus dem Authority Container ausliefert.
detailedErrorsZeigt detaillierte Fehlermeldungen an.
disableHttpsEnforcementDeaktiviert die HTTPS Vorraussetzung für Implicit Clients.
enableLocalhostImplicitErlaubt die Nutzung von localhost als Redirect-URL für Implicit Clients.
fixWrongHostnamesKorrigiert URLs bei Zugriff auf die Authority automatisch zur Issuer URL.
additionalCspDirectivesFügt Content-Security-Policy  Direktiven/Richtlinien  mit Werten hinzu.

Bespiele:

Keine Entwicklungsfunktionalitäten aktiviert:

.processcube/authority/config.json
{ "development": false }

Alle Entwicklungsfeatures aktiviert:

.processcube/authority/config.json
{ "development": true }

Einige Entwicklungsfeatures aktiviert:

.processcube/authority/config.json
{ "development": { "builtInReactDevServer": false, "detailedErrors": true, "disableHttpsEnforcement": true, "enableLocalhostImplicit": true, "fixWrongHostnames": true, "additionalCspDirectives": { "formAction": ["https://localhost"], "connectSrc": ["https://localhost", "http://localhost"] } } }

Studio

Konfiguriert wie das Studio zusammen mit der Authority verwendet werden kann. Die Einstellung akzeptiert folgende Werte:

WertBeschreibung
leer und falseKeine Konfiguration für das 5Minds Studio wird vorgenommen.
trueDie Standard Konfiguration für das 5Minds Studio wird vorgenommen.
ObjektErweiterte Konfiguration für die Verwendung des 5Minds Studios.

Für die erweitere Konfiguration muss ein Objekt übergeben werden, das die folgenden Eigenschaften enthalten:

WertBeschreibung
enabledGibt an, ob das 5Mind Studio verwendet werden soll.
additionalOidcClientSettingsGibt zusätzliche OIDC Client Einstellungen an. Hierbei können beliebige Einstellungen überschrieben werden. Mögliche Einstellungen sind im node-oidc-provider  unter Clients dokumentiert.
scopeGibt an, welche Scopes für das Studio verwendet werden sollen. Die Standard Scopes openid profile email engine_read engine_observer engine_write werden überschrieben.
accessTokenTTLGültigkeitsdauer des Access Tokens in Sekunden, optional.

Beispiele:

Keine Verwendung des Studios:

.processcube/authority/config.json
{ "studio": false }

Verwendung des Studios mit Standardkonfiguration:

.processcube/authority/config.json
{ "studio": true }

Verwendung des Studios mit erweiterter Konfiguration:

.processcube/authority/config.json
{ "studio": { "enabled": true, "scope": "openid profile email engine_read engine_observer engine_write custom_scope1 custom_scope2", "accessTokenTTL": 600 } }

Portals

Konfiguriert die Instanzen von 5Minds Portalen, welche mit der Authority verwendet werden können. Für diese Einstellungen wird eine Liste übergeben. Die Werte in der Liste müssen folgende Eigenschaften enthalten:

WertBeschreibung
clientIdDer Client ID des Portals. Dieser muss mit der clientId Konfiguration des Portals übereinstimmen.
rootUrlDie URL des Portals. Diese muss mit der applicationBaseUrl des Portals übereinstimmen.
additionalOidcClientSettingsGibt zusätzliche OIDC Client Einstellungen an. Hierbei können beliebige Einstellungen überschrieben werden. Mögliche Einstellungen sind im node-oidc-provider  unter Clients dokumentiert.
scopeGibt an, welche Scopes für das Studio verwendet werden sollen. Die Standard Scopes openid profile email engine_read engine_observer engine_write werden überschrieben.
accessTokenTTLGültigkeitsdauer des Access Tokens in Sekunden, optional.

Beispiele:

Keine Portale konfiguriert:

.processcube/authority/config.json
{ "portals": [] }

Ein Portal konfiguriert:

.processcube/authority/config.json
{ "portals": [ { "clientId": "portal", "rootUrl": "http://localhost:8082" } ] }

Zwei Portale konfiguriert:

.processcube/authority/config.json
{ "portals": [ { "clientId": "portal", "rootUrl": "http://localhost:8082" }, { "clientId": "portal2", "rootUrl": "http://localhost:8083" } ] }

Portal mit erweiterter Konfiguration:

.processcube/authority/config.json
{ "portals": [ { "clientId": "portal", "rootUrl": "http://localhost:8082", "scope": "openid profile email engine_read engine_observer engine_write custom_scope1 custom_scope2", "accessTokenTTL": 600 } ] }

External Task Workers

Konfiguriert die Instanzen von External Task Workers, welche mit der Authority verwendet werden können. Für diese Einstellungen wird eine Liste übergeben. Die Werte in der Liste müssen folgende Eigenschaften enthalten:

WertBeschreibung
clientIdDer Client ID des External Task Workers.
clientSecretDas Client Secret des External Task Workers.
scopeGibt an, welche Scopes für den External Task Worker verwendet werden sollen. Die Standard Scopes engine_etw werden überschrieben.
accessTokenTTLGültigkeitsdauer des Access Tokens in Sekunden, optional.
additionalOidcClientSettingsGibt zusätzliche OIDC Client Einstellungen an. Hierbei können beliebige Einstellungen überschrieben werden. Mögliche Einstellungen sind im node-oidc-provider  unter Clients dokumentiert.

Beispiele:

Keine External Task Workers konfiguriert:

.processcube/authority/config.json
{ "externalTaskWorkers": [] }

Ein External Task Worker konfiguriert:

.processcube/authority/config.json
{ "externalTaskWorkers": [ { "clientId": "test_etw", "clientSecret": "abc" } ] }

Ein External Task Worker mit erweiterter Konfiguration:

.processcube/authority/config.json
{ "externalTaskWorkers": [ { "clientId": "test_etw", "clientSecret": "abc", "scope": "engine_etw custom_scope1 custom_scope2", "accessTokenTTL": 600 } ] }

Andere Clients

In den Einstellungen für otherClients können weitere Clients erstellt und konfiguriert werden, die nicht aus dem ProcessCube kommen. Diese können verschiedene Grant Types benutzen und haben ihre eigenen IDs, Secrets und Scopes.

WertBeschreibung
clientIdDie ID des Clients
scopesDie Scopes welche dieser Client anfragen kann
grant_typesDie unterstützten Grand-Types des Clients
response_typesFormat der Antworten der Authority auf Anfragen des Clients. Standardmäßig ["id_token token"]
redirect_urisArray von URIs auf welche der Client nach erfolgreichem Login weitergeleitet werden kann
client_secretClient Secret für Authentifizierung, nur bei “Client Credentials” Grant-Type
corsOriginsArray von URIs welche die Authority als Origin Header bei Anfragen für diesen Client akzeptiert, optional
accessTokenTTLGültigkeitsdauer des Access Tokens in Sekunden, optional

Hier ist ein Beispiel eines Clients mit dem Grant Type “Implicit”:

.processcube/authority/config.json
"otherClients": [ { "clientId": "another_client", "scope": "openid profile email", "grant_types": ["implicit"], "response_types": ["id_token token"], "redirect_uris": ["http://authority:11560/acr/username_password/admin"] } ],

Ein anderes Beispiel für einen Clients mit dem Grant Type “Client Credentials”:

.processcube/authority/config.json
"otherClients": [ { "clientId": "Terminalportal", "clientSecret": "973apMILx97C9u7GmSl5dbwdXXIPxvik", "scope": "openid profile email engine_read engine_observer engine_write schauf_lagerverwaltung anon_portal", "grant_types": [ "client_credentials", "authorization_code" ], "redirect_uris": ["http://localhost:8083/signin-oidc"], "accessTokenTTL": 600 } ],

Scopes

Mit der scopes Einstellungen können die Claims und Scopes der Authority konfiguriert werden. Die Einstellung ist ein optionales Objekt mit folgenden Werten:

WertBeschreibung
skipOidcScopestrue um die Standard OpenID Scopes und Claims nicht zu aktivieren.
skipProcessCubeScopestrue um die Standard ProcessCube Scopes und Claims nicht zu aktivieren.
additionalScopesGibt zusätzliche Scopes und Claims an. Siehe Tabelle unten.

Das Deaktivieren von OpenID und ProcessCube Scopes kann zu fehlerhaften Verhalten führen.

Keine ProcessCube Scopes und Claims:

.processcube/authority/config.json
{ "scopes": { "skipProcessCubeScopes": true } }

Keine OpenID Scopes und Claims:

.processcube/authority/config.json
{ "scopes": { "skipOidcScopes": true } }

Additional Scopes:

Im additionalScopes Objekt können neue Scopes und die dazugehörigen Claims konfiguriert werden. Jeder Schlüssel stellt dabei den Scopenamen dar. Der Wert des Schlüssels ist ein Objekt mit den Feldern:

  • claims: Liste von Claims, welche zu diesem Scope zugehörig sein sollen.
  • description: Eine Beschreibung des Scopes.

Beispiele:

Eigene Scopes und dazugehörige Claims hinzufügen:

.processcube/authority/config.json
{ "scopes": { "additionalScopes": { "interesting_data_scope": { "description": "This scope requests claim data that I find interesting!", "claims": ["birthdate", "gender", "address", "picture"] }, "boring_data_scope_2": { "description": "This scope requests claim data that I find boring!", "claims": ["family_name", "email_verified", "website"] } } } }
description ist optional. claims kann ein leeres Array [] sein.

Zusätzliche Claims

Neben neuen Scopes und ihren dazugehörigen, bereits existierenden Claims, können auch neue Claims erstellt und der Authority hinzugefügt werden:

.processcube/authority/config.json
{ "claims": { "has_superpowers": { "type": "boolean", "description": "Indicates whether the user has superpowers." }, "favorite_beverage": { "type": "string", "description": "The user's favorite drink." } } }
Claims können die Typen string, boolean, int oder object haben.
description ist optional.

Database

Damit die Authority ihre Daten speichern kann, muss eine Datenbank konfiguriert werden.

Die Authority verwendet Sequelize . Das Konfigurationsobjekt wird an Sequelize übergeben. Die Einstellungen sind in der Dokumentation von Sequelize  zu finden.

Beispiele:

Verwendung von SQLite als Datenbank:

.processcube/authority/config.json
{ "database": { "dialect": "sqlite", "storage": "storage/database.sqlite" } }

Verwendung von PostgreSQL als Datenbank:

.processcube/authority/config.json
{ "database": { "dialect": "postgres", "host": "localhost", "port": 5432, "username": "postgres", "password": "postgres", "database": "authority" } }

Verwendung von MSSQL als Datenbank:

.processcube/authority/config.json
{ "database": { "dialect": "mssql", "host": "localhost", "port": 1433, "username": "SA", "password": "mssql", "database": "authority" } }

Username & Password Extension (UPE)

Die interne Username Password Extension kann im Bereich username_password konfiguriert werden.

Beispiel:

.processcube/authority/config.json
{ "extensions": { "configs": { "username_password": { "skipConsentPageForClientIds": ["upe_client", "portal", "atlas_studio"], "customization": { "title": "5Minds Authority", "logoPath": "../../configs/assets/logo.png" }, "passwordPolicy": { "regex": ".{8,}", "mismatchMessage": "Password must contain at least 8 characters." } } } } }

Password Policy

Es kann eine eigene Richtlinie konfiguriert werden, die Anforderungen an neue Passwörter festlegt. Beim Anlegen neuer Accounts und Ändern von Passwörtern werden diese stets mit der Richtlinie abgeglichen. Diese Richtlinie wird über einen regulären Ausdruck definiert. Außerdem kann eine Nachricht konfiguriert werden, die bei Verletzung der Richtlinien angezeigt wird. Zur Konfiguration wird das Feld passwordPolicy verwendet. Dieses erwartet ein Objekt mit den zwei optionalen Feldern regex und mismatchMessage.

Extensions

Mit der extensions Einstellung können die Extensions der Authority konfiguriert werden. In dieser Einstellung sind folgende Werte möglich:

WertBeschreibung
pathPfad zu den Ordner mit Erweiterungen. Standardmäßig wird ./extensions verwendet.
configsKonfigurationsoptionen für Erweiterungen.

Jede Extension erhält automatisch ihren Abschnitt aus dem configs Wert. Die Abschnitte verwenden den Namen der Erweiterung als Schlüssel, die Erweiterung legt die Struktur des Wertes fest.

Beispiele:

Konfiguration der Erweiterung mit den Namen test_erweiterung:

.processcube/authority/config.json
{ "extensions": { "configs": { "test_erweiterung": { "foo": "value1", "bar": "value2" } } } }

Festlegen des Pfades zu den Erweiterungen:

.processcube/authority/config.json
{ "extensions": { "path": "./extensions2" } }

Festlegen des Pfades zu den Erweiterungen und Konfiguration der Erweiterung mit dem Namen test_erweiterung:

.processcube/authority/config.json
{ "extensions": { "path": "./extensions2", "configs": { "test_erweiterung": { "foo": "value1", "bar": "value2" } } } }

Informationen zu den einzelnen Erweiterungen finden sich im Abschnitt Externe Identitätsprovider.

Konifguration über Environment-Variablen

In manchen Anwendungsfällen ist es nicht möglich oder nicht wünschenswert, eine Konfigurationsdatei zu hinterlegen. In diesen Fällen kann die Authority über Environment-Variablen konfiguriert werden.

Konfigurationsdateien und Environment-Variablen sind beliebig kombinierbar. Hierbei überschreiben Werte aus Environment-Variablen die Werte aus der Konfigurationsdatei.

Um eine beliebige Option mit einer ENviornment-Variable zu konfigurieren, kann einfach eine Environment-Variable definiert werden, deren Namen den gleichen Namen wie die zu konfigurierende Option hat. Der Wert der Environment-Variable bestimmt dann den Wert der Konfigurationsoption. Hierbei muss der Wert immer als String (in einfachen Anführungszeichen) angegeben werden. Um den Port zu konfigurieren, wird zum Beispiel die Environment-Variable port='11560' angelegt.

Bei genesteten Optionen wird der Pfad durch doppelte Unterstriche (__) deklariert. Die Option dialect im Bereich database wird zum Beispiel mit database__dialect='sqlite' konfiguriert.

Auch Arrays von Strings oder anderen primitiven Typen können als Environement-Variable angegeben werden. Hierbei ist zu beachten, dass dass Array an sich als String in einfachen Anführungszeichen angegeben wird

Empfehlung für das Layout von Ordnern und Dateien

Unsere Empfehlung ist, die Konfigurationen der Produkte im Wurzelverzeichnis des Projektes in einem Ordner namens .processcube zu lagern, und die Konfiguration des jeweiligen Produkts in einen separaten Unterordner zu legen.

So ergibt sich die Struktur:

      • config.json
      • config.json
  • docker-compose.yml