Zum Inhalt springen

OpenID-Provider

Der invoiceR kann die Anmeldung an einen OpenID-Connect-Provider abgeben, zum Beispiel an Microsoft Entra ID. Die Benutzer melden sich dann mit ihrem Firmenkonto an (siehe Anmelden und abmelden).

Es lassen sich auch mehrere Provider gleichzeitig einrichten, etwa wenn mehrere Organisationen mit eigenem Verzeichnis denselben invoiceR nutzen.

  • Ein Provider ist eindeutig: Der invoiceR leitet den Benutzer direkt zur Anmeldung beim Provider weiter.
  • Mehrere Provider kommen in Frage: Der Benutzer bleibt auf der Anmeldeseite. Er sieht neben der Anmeldung mit Benutzername und Passwort eine Schaltfläche pro Provider und wählt selbst.
Anmeldeseite des invoiceR mit dem Formular für Benutzername und Passwort und darunter zwei Schaltflächen „Anmelden mit A“ und „Anmelden mit B“

Eindeutig ist ein Provider, wenn sein TenantName

  • mit dem Namen des Mandanten übereinstimmt, den der invoiceR aus der Adresse erkennt (ein Mandant pro Subdomain), oder
  • in der Adresse der Anmeldeseite im Parameter oid steht, zum Beispiel https://<server>/account/login?oid=providerA.

Den Parameter oid kannst du verwenden, um jeder Organisation einen eigenen Link zur Anmeldung zu geben.

Die Provider werden in der Konfigurationsdatei des Backends (appsettings.json bzw. der umgebungsspezifischen Datei) im Abschnitt Authentication:OpenId eingetragen. Der erste Provider steht direkt in OpenId, alle weiteren im Array AdditionalTenants. Jeder weitere Provider hat dieselben Einstellungen wie der erste.

"Authentication": {
"OpenId": {
"IsEnabled": "true",
"ClientId": "<client-id-a>",
"ClientSecret": "<client-secret-a>",
"Authority": "<authority-a>",
"LoginUrl": "<login-url-a>",
"ValidateIssuer": "false",
"ResponseType": "id_token",
"DisplayName": "Anmelden mit A",
"TenantName": "providerA",
"ClaimsMapping": [
{ "claim": "unique_name", "key": "preferred_username" }
],
"AdditionalTenants": [
{
"ClientId": "<client-id-b>",
"ClientSecret": "<client-secret-b>",
"Authority": "<authority-b>",
"LoginUrl": "<login-url-b>",
"ValidateIssuer": "false",
"ResponseType": "id_token",
"DisplayName": "Anmelden mit B",
"TenantName": "providerB",
"ClaimsMapping": [
{ "claim": "unique_name", "key": "preferred_username" }
]
}
]
}
}
EinstellungBedeutung
IsEnabledSchaltet die Anmeldung über OpenID ein. Gilt für alle Provider.
ClientId, ClientSecretKennung und Geheimnis der App-Registrierung beim Provider.
Authority, LoginUrlAdressen des Providers (Aussteller und Anmeldeseite), wie sie der Provider für die App-Registrierung angibt.
ValidateIssuerOb der Aussteller des Tokens geprüft wird ("true" oder "false"). Bei weiteren Providern Pflicht.
ResponseTypeArt der Antwort des Providers, in der Regel id_token.
DisplayNameBeschriftung der Schaltfläche auf der Anmeldeseite. Ohne Angabe steht dort „OpenIdConnect“.
TenantNameKennung des Providers. Muss dem Namen des Mandanten oder dem Wert im Parameter oid entsprechen.
ClaimsMappingWelche Angaben aus dem Token des Providers der invoiceR für den Benutzer übernimmt.

Nach einer Änderung an der Konfiguration muss das Backend neu gestartet werden.