Skip to content

Authentication

Beschreibung

In Sektion Authentication wird die Anbindung an einen OIDC-fähigen IDP (z.B. elego IDP oder UserManagement, Azure EntryId, etc.) parametriert. Es werden folgende Settings unterstützt:

Setting Beschreibung
UseAuth Definiert, ob die Authentifizierung aktiv ist. Alle folgenden Konfigurationen werden nur berücksichtigt, wenn der Wert auf true gesetzt ist. Gültige Werte: [true/false]

Wichtig: In produktiven Umgebungen muss UseAuth auf true gesetzt sein!
ShowPII Definiert, ob detaillierte Fehlermeldungen über den Authentifizierungsprozess ausgegeben werden. Gültige Werte: [true/false]

Wichtig: Diese Einstellung ist für die Fehleranalyse vorgesehen und sollte auf produktiven Systemen nicht eingesetzt werden, da auch Geheimnisse wie z.B. Tokens etc. geloggt werden.
ClientId Eindeutige Kennung des Clients. Die ClientId wird durch den IDP bestimmt. Sie muss für jeden angebundenen Client eindeutig sein.
ClientSecret Geheimnis, mit dem sich die Anwendung (als Client) gegenüber dem IDP beim Request eines Token authentifiziert. Es muss zwingend ein Secret definiert sein, sonst startet die Anwendung nicht.
Scopes Folgende Scopes sind erforderlich: openid, profile, offline_access und ein Api-Scope wie z.B. elego-frontend
Authority Url des angebundenen IDP's. (mit Schema wie z.B. HTTPS)
DefaultSignoutUrl URL, auf die nach einem Logout gesprungen wird. Normalerweise ist das die URL der elego Frontend-Anwendung
AdminUi URL, die beim Aufruf des User-Profils aufgerufen wird. z.B. URL des Admin-UI’s des IDPs
CookieExpirationTimeMinutes Definiert, wie lange das Session-Cookie gültig ist. Nach Ablauf der Gültigkeit ist der Benutzer abgemeldet und muss sich erneut anmelden. Mit jedem Zugriff nach Ablauf der halben Sessionzeit wird die Session erneuert. (Sliding Expiration) Gültige Werte: > 1 und < 1440 (24 h)
SessionStore Definiert, wie die Session gespeichert wird. Gültige Werte:
Cookie: Session wird in einem Session-Cookie gespeichert (Default)
Memory: Session wird in Memory auf dem Server gehalten.

Scopes

Die beiden Scopes openid und profile werden von unserem eingesetzten Library immer automatisch angefordert und müssten nicht explizit definiert werden. Zur Dokumentation und Verständlichkeit ist die Angabe dieser Scopes hilfreich.

Flows

Die OIDC-Flows zwischen IDP und der Frontend-Anwendung sind unter OIDC-Flows beschrieben.

Beispiele

Authentication in appsettings.json

# Beispiel Sektion Authentication in appsettings.json
# [mySecret] muss durch das korrekte Secret ersetzt werden.

"Authentication": {
    "UseAuth": true,
    "ShowPII": false,
    "ClientId": "elego-dev-local",
    "ClientSecret": "[mySecret]",
    "Scopes": "profile openid offline_access elego-frontend",
    "Authority": "https://devidp-eis.egeli-apps.dev/",
    "DefaultSignoutUrl": "https://localhost:7144",
    "AdminUi": "https://admin-devidp-eis.egeli-apps.dev"
},

Einstellungen im UserManagement

Für die Anbindung an das elego UserManagement sind für den referenzierten Client (ClientId) Einstellungen empfohlen:

Basics

Setting Wert Beschreibung
Require Client Secret true Die Einstellung definiert, ob für den Zugriff auf den Token-Enpunkt ein Client-Secret erforderlich ist. Die elego-Frontendanwendung validiert, ob im appsettings.json unter Authentication.ClientSecret ein ClientSecret gesetzt ist. Das Secret muss einem im IDP definierten Secret entsprechen.
Require Pkce true Wenn aktiviert, muss der Client eine gültige code_challenge und eine code_challenge_Method mitschicken. Sonst wird ein code_verifier erwartet. elego setzt einen PKCE-Flow ein. Die Einstellung soll daher true sein.
Allow Accesstoken Via Browser false Die Einstellung erlaubt die Ausgabe eines Access-Token direkt an den Browser. Sie soll nur in Leagacy-Anwendungen, die keinen Authorization Code Flow unterstützen aktiviert werden.
Allow Offline Access true Soll die Verwendung von Refresh-Tokens erlaubt sein? Wenn ja, muss im appsetting.json der Anwendung unter Authentication.Scopes zwingend der Scope offline_access eingetragen sein.
Allow Plaintext PKCE false Die aktivierte Einstellung erlaubt einen weniger sicheren PKCE-Flow zu.
Redirect Uris [Anwendung]/signin-oidc
Allowed Scopes openid, profile, offline_access elego-frontend elego-frontend kann durch einen definierten API-Scope ersetzt werden
Allowed Grant Types authorization_code Definiert den OIDC-Flow, um ein Zugriffstoken zu lösen: authorization_code: für Webanwendungen mit Login client_credentials: für Machine-to-Machine
Default Client URL [Anwendung] URL der Anwendung, die im User als Default-URL ausgewählt werden kann

Authentifizierung/Login

In dieser Sektion sind keine Einstellungen notwendig.

Tokens

Setting Wert Beschreibung
Identity Token-Lifetime 600
Access Token Lifetime 600
Access Token Type Jwt
Authorization Code Lifetime 300
Sliding Refresh Token Lifetime 1296000
Refresh-Token Usage ReUse Da Ext.Direct teils parallele Requests schickt, muss ein Token mehrfach verwendet werden können. Sonst führt das zu nicht authentifizierten Requests.
Refresh Token Expiration Absolute
Client-Claims Prefix _client
Update Access Tokenclaims On Refresh true
Include JWT Id true
Always Send Client Claims true Client Claims werden in Access- und Id Token übernommen.
Always Include User Claims in Id Token false Wird nicht benötigt, da Infos aus Access-Tokens übernommen werden.
Erlaubte CORS Origins https://localhost:7144 [URL der Frontendanwendung]. Wichtig: Nur Schema, Host und Port.