Externe Authentifizierungsanbieter

Mehrere externe Authentifizierungsanbieter können mit [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 Eintrag

[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 gesetzt.

Erforderliche Einstellungen in Azure AD

Azure-Gruppen-ID muss mit der SKOOR-Remote-Gruppe übereinstimmen:

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

App-Registrierung

In Ihrem Azure Active Directory registrieren Sie eine neue Anwendung, wählen Sie unterstützte Kontotypen basierend auf Ihrem AD Setup (Single- oder Multi-Tenant).
Als Redirect URI konfigurieren Sie 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

Mieter-ID und Kunden-ID

Sobald die Anwendungsregistrierung gespeichert ist, öffnen Sie die Übersichtsregisterkarte der erstellten Anwendung und notieren Sie sich die beiden IDs, die später für die Konfiguration benötigt werden. Diese lauten:

  • Anwendungs- (Mandanten-) ID

  • Verzeichnis (Mandant) ID

Zertifikate & Geheimnisse

Gehen Sie nun 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 können Sie die Geheimnummer und den Wert des Geheimnisses sehen. Der Wert des Geheimnisses wird später für die Konfiguration des Skoor Auth-Dienstes benötigt.

Token

Gehe zur Token-Konfiguration und wähle "Gruppenanspruch hinzufügen". In der Claim-Konfiguration wähle "Sicherheitsgruppen" und wähle die Token-Eigenschaft Typ "ID" auf "sAMAccountName".

API-Erlaubnis

Dieser Schritt ist optional. Um weitere Details der Benutzerkonfiguration in Skoor zu aktivieren, z. B. das Profilbild, benötigt die Anwendung die Erlaubnis, das vollständige Benutzerprofil zu lesen.
Dazu kannst du die folgenden Schritte auf der Registerkarte "API-Berechtigungen" durchführen:

  • Berechtigung hinzufügen

  • Microsoft Graph auswählen

  • Delegierte Berechtigungen

  • Suchen Sie nach User.Read oder scrollen Sie im Abschnitt 'user' und wählen Sie 'User.Read' und klicken Sie auf 'add permission'

  • Zurück in der Übersicht bestätigen Sie die Berechtigung durch Auswahl von 'Grant admin consent'.

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 angeben, das neben dem Namen angezeigt wird. Wir können das Symbol mit einer Daten-URL bereitstellen.

Erforderliche Einstellungen in Keycloak

Das Folgende ist eine Mindestkonfiguration, um einen OIDC mit Keycloak zum Laufen zu bringen. Dies kann verwendet werden, wenn Sie noch keinen OIDC-kompatiblen Authentifizierungsanbieter haben und Ihre Benutzer gegen ein internes aktives Verzeichnis authentifizieren wollen.

Realm-Einstellungen

Wenn Sie noch keinen Realm konfiguriert haben, müssen Sie einen hinzufügen. Ein guter Name für den Realm könnte der Name Ihres Unternehmens sein. Dieser Name ist der Wert, den Sie als <realm> in Ihren Anbietereintrag einfügen müssen.

Es könnte eine gute Idee sein, die Option Remember Me auf der Registerkarte Login zu aktivieren.


Kunden

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

DieClient-ID muss als <client_id> in die Providerkonfiguration eingefügt werden.

DasClient-Protokoll muss openid-connect sein.

Access Type muss vertraulich sein

DerStandardfluss muss aktiviert sein.

Redirect 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 Client-Geheimnis, das für die <client_secret>-Anbieterkonfiguration benötigt wird, können Sie auf der Registerkarte Credentials abrufen.

Client-Bereiche

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

Benutzervereinigung

Um sich gegen ein aktives Verzeichnis authentifizieren 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