Externe Authentifizierungsanbieter

Mehrere externe Authentifizierungsanbieter können mithilfe von [provider.x]-Abschnitten definiert werden:

[provider.1]
type = oidc
                            # Provider type, currently only oidc is available
name = OIDC Example
                            # Display name
issuer = example
                            # issuer of the tokens. Can be "google", "microsoft"
                            # or an arbitrary string for custom identity
                            # providers
icon = url('data:image/svg+xml;base64,...')
                            # Optional display icon. Can be either a remote or
                            # a data URL. If omitted, a default icon is used
                            # based on type and provider.
metadata_url = https://example.com/auth/realms/<realm>
                            # URL to get OIDC metadata from. Can be obtained
                            # from the provider.
                            # It usually contains a realm or tenant id.
client_id = <client-id>
                            # OIDC client secret. Can be obtained from the
                            # provider. Some providers call this "app id".
client_secret = <client-secret->
                            # OIDC client secret. Can be obtained from the
                            # provider. Some providers call this "secret value".
hidden = false
                            # it is possible to hide an authentication provider
                            # on the SKOOR Auth start page. This can be useful
                            # if e.g. normal users authenticate against a public
                            # provider and support employees against an internal
                            # one.

Microsoft Azure AD OpenID Connect

SKOOR Auth Provider Entry

[provider.1]
type = oidc
name = Azure AD Example
issuer = microsoft
metadata_url = https://login.microsoftonline.com/<tenant-id>/v2.0
client_id = <app-id>
client_secret = <secret-value>

Das Symbol wird automatisch basierend auf dem Namen des Ausstellers festgelegt.

Erforderliche Einstellungen in Azure AD

Azure-Gruppen-ID, die mit der SKOOR-Remote-Gruppe übereinstimmt:

Damit sich Benutzer anmelden und die richtige Rolle zugewiesen bekommen können, müssen diese IDs konfiguriert werden.
Im folgenden Beispiel erhalten alle Benutzer in der Azure AD-Gruppe mit der ID c2b2***** nach der Anmeldung die Administratorrolle:

App-Registrierung

Registrieren Sie in Ihrem Azure Active Directory eine neue Anwendung und wählen Sie die unterstützten Kontotypen basierend auf Ihrer AD-Konfiguration (Single- oder Multi-Tenant) aus. Konfigurieren
Sie als Umleitungs-URI Folgendes, je nachdem, welche Dienste Ihr Server aktiviert hat. Dies kann auch später noch bearbeitet werden.

Skoor Engine / Skoor Dashboard

https://<FQDN>/skoor-auth/oidc/code

SKOOR Dashboard Viewer

https://FQDN/skoor-dashboard-viewer-auth/oidc/code

Mandanten-ID & Client-ID

Sobald die Anwendungsregistrierung gespeichert ist, öffnen Sie die Registerkarte „Übersicht” der erstellten Anwendung und notieren Sie sich die beiden IDs, die später für die Konfiguration benötigt werden. Diese heißen:

  • Anwendungs- (Client-)ID

  • Verzeichnis-ID (Mandanten-ID)

Zertifikate und Geheimnisse

Gehen Sie anschließend zu „Zertifikate & Geheimnisse“ und fügen Sie ein Client-Geheimnis hinzu. Legen Sie einen Namen für dieses Geheimnis fest und wählen Sie ein Ablaufdatum. Nach dem Speichern werden die Geheimnis-ID und der Geheimniswert angezeigt. Der Geheimniswert wird später für die Konfiguration des SKOOR Auth-Dienstes benötigt.

Token

Gehen Sie zur Token-Konfiguration und wählen Sie „Gruppenansprüche hinzufügen”. Wählen Sie in der Anspruchskonfiguration „Sicherheitsgruppen” und wählen Sie die Token-Eigenschaft „ID” zu „sAMAccountName”.

API-Berechtigung

Dieser Schritt ist optional. Um weitere Details zur Benutzerkonfiguration in Skoor zu aktivieren, z. B. das Profilbild, benötigt die Anwendung die Berechtigung, das vollständige Benutzerprofil zu lesen.
Dazu können Sie die folgenden Schritte auf der Registerkarte „API-Berechtigungen“ ausführen:

  • Berechtigung hinzufügen

  • Wählen Sie „Microsoft Graph“

  • Delegierte Berechtigungen

  • Suchen Sie nach „User.Read“ oder scrollen Sie zum Abschnitt „Benutzer“ und wählen Sie „User.Read“ aus. Klicken Sie anschließend auf „Berechtigung hinzufügen“.

  • Zurück in der Übersicht bestätigen Sie die Berechtigung, indem Sie „Admin-Zustimmung erteilen“ auswählen

Keycloak

SKOOR Auth Provider-Eintrag

[provider.2]
type = oidc
name = SKOOR Keycloak
issuer = skoor
icon = url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAwIDI1LjAwMDAwMSAyNSIKICAgaGVpZ2h0PSIyNSIKICAgd2lkdGg9IjI1IgogICB4bWw6c3BhY2U9InByZXNlcnZlIgogICBpZD0ic3ZnMiIKICAgdmVyc2lvbj0iMS4xIgogICBzb2RpcG9kaTpkb2NuYW1lPSJza29vci1jaXJjbGUuc3ZnIgogICBpbmtzY2FwZTp2ZXJzaW9uPSIwLjkyLjUgKDIwNjBlYzFmOWYsIDIwMjAtMDQtMDgpIj48c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjE5MjAiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMTAxNiIKICAgICBpZD0ibmFtZWR2aWV3MTMiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjIyLjIyNjk2NyIKICAgICBpbmtzY2FwZTpjeD0iOC4yODU2MDM4IgogICAgIGlua3NjYXBlOmN5PSIxMy42MjkyMjYiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjI3IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ic3ZnMiIKICAgICBmaXQtbWFyZ2luLXRvcD0iMCIKICAgICBmaXQtbWFyZ2luLWxlZnQ9IjAiCiAgICAgZml0LW1hcmdpbi1yaWdodD0iMCIKICAgICBmaXQtbWFyZ2luLWJvdHRvbT0iMCIgLz48bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGE4Ij48cmRmOlJERj48Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+PGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+PGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPjxkYzp0aXRsZT48L2RjOnRpdGxlPjwvY2M6V29yaz48L3JkZjpSREY+PC9tZXRhZGF0YT48ZGVmcwogICAgIGlkPSJkZWZzNiIgLz48cGF0aAogICAgIGlkPSJwYXRoMjQiCiAgICAgc3R5bGU9ImZpbGw6I2UyMDA3YTtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MC4wMjg2ODc3NSIKICAgICBkPSJtIDYuMDkzODUyMiwxMi4xNzc1MjUgYyAwLDMuODgzNDYgMi44Njc5MTM1LDYuNzIwOTY2IDYuMzYyMzY2OCw2LjcyMDk2NiAzLjQ5NTAyOSwwIDYuMzYyOTQ1LC0yLjgzNzUwNiA2LjM2Mjk0NSwtNi43MjA5NjYgMCwtMy4xMDYyOTU2IC0yLjg2NzkxNiwtNS45NDM4MDA1IC02LjM2Mjk0NSwtNS45NDM4MDA1IC0zLjQ5NDQ1MzMsMCAtNi4zNjIzNjY4LDIuODM3NTA0OSAtNi4zNjIzNjY4LDUuOTQzODAwNSB6IE0gMjQuOTEyNDQxLDEyLjE0Nzk4IGMgMCw3LjI4ODY5NiAtNS4yMjcxOTUsMTIuNDI2NjcyIC0xMi40NTYyMjIsMTIuNDI2NjcyIEMgNS4yMjc0ODE1LDI0LjU3NDY0OSAwLDE5LjQzNjY3MiAwLDEyLjE0Nzk3NyAwLDUuMzM3NTE5MyA1Ljk3NDIyNDMsMC41NTc4NTM0NSAxMi40NTYyMTksMC41NTc4NTM0NSBjIDYuNDgyMjg0LDAgMTIuNDU2MjIyLDQuNzc5NjY1ODUgMTIuNDU2MjIyLDExLjU5MDEyMzU1IgogICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+PC9zdmc+')
metadata_url = https://<keycloak-server-address>/auth/realms/<realm>
client_id = <client-id>
client_secret = <client-secret>

Da wir einen benutzerdefinierten Aussteller haben, müssen wir ein Symbol bereitstellen, das neben dem Namen angezeigt wird. Wir können das Symbol über eine Daten-URL bereitstellen.

Erforderliche Einstellungen in Keycloak

Im Folgenden finden Sie die Mindestkonfiguration, damit OIDC mit Keycloak funktioniert. Diese kann verwendet werden, wenn Sie noch keinen OIDC-kompatiblen Authentifizierungsanbieter haben und Ihre Benutzer anhand eines internen Active Directory authentifizieren möchten.

Realm-Einstellungen

Wenn Sie noch kein Realm konfiguriert haben, müssen Sie eines hinzufügen. Ein guter Realm-Name könnte Ihr Firmenname sein. Dieser Name ist der Wert, den Sie als <realm> in Ihren Provider-Eintrag einfügen müssen.

Es kann sinnvoll sein, die Option „Remember Me“ (Angemeldet bleiben) auf der Registerkarte „Login“ zu aktivieren.


Clients

Sie müssen eine Client-Konfiguration für SKOOR hinzufügen.

Die Client-ID muss als <client_id> in Ihre Provider-Konfiguration eingegeben werden.

Das Client-Protokoll muss „openid-connect“ lauten.

Der Zugriffstyp muss „vertraulich“ sein.

Der Standardablauf muss aktiviert sein.

Die Weiterleitungs-URLs sollten auf die folgenden Werte gesetzt werden:

Skoor Engine / Skoor Dashboards

https://<FQDN>/skoor-auth/oidc/code

SKOOR Dashboard Viewer

https://FQDN/skoor-dashboard-viewer-auth/oidc/code

Das für die <client_secret>-Anbieterkonfiguration erforderliche Client-Geheimnis finden Sie auf der Registerkarte „Anmeldedaten“.

Client-Bereiche

Um Gruppeninformationen für einen Benutzer zu erhalten, muss dem Profilbereich ein zusätzlicher Mapper namens „groups“ hinzugefügt werden.

Benutzerföderation

Um die Authentifizierung gegenüber einem Active Directory durchführen zu können, muss ein LDAP-Anbieter hinzugefügt werden.

Diese Einstellungen hängen stark von Ihrer AD-Konfiguration ab.

Ein sehr wichtiger Schritt ist das Hinzufügen eines Mappers vom Typ „group-ldap-mapper“.

Kerberos

Wenn Kerberos SSO benötigt wird, kann dies im Menü „Authentifizierung” aktiviert werden.