Generische OAuth-Authentifizierung
Sie können viele verschiedene OAuth2-Authentifizierungsdienste mit SmartCollect SC² konfigurieren, indem Sie die generische OAuth2-Funktion verwenden. Beispiele:
- Generische OAuth-Authentifizierung
- OAuth2 mit Auth0 einrichten
- OAuth2 mit Bitbucket einrichten
- OAuth2 mit Centrify einrichten](#set-up-oauth2-with-centrify)
- OAuth2 mit OneLogin einrichten
- JMESPath-Beispiele
Diese Callback-URL muss mit der vollständigen HTTP-Adresse übereinstimmen, die Sie in Ihrem Browser für den Zugriff auf SmartCollect SC² verwenden, jedoch mit dem Präfixpfad /login/generic_oauth.
Sie müssen eventuell die Option root_url von [server] setzen, damit die Callback-URL korrekt ist. Zum Beispiel für den Fall, dass Sie SmartCollect SC² hinter einem Proxy bereitstellen.
Beispiel-Konfiguration:
[auth.generic_oauth]
enabled = true
client_id = YOUR_APP_CLIENT_ID
client_secret = YOUR_APP_CLIENT_SECRET
scopes =
auth_url =
token_url =
api_url =
allowed_domains = mycompany.com mycompany.org
allow_sign_up = true
tls_skip_verify_insecure = false
tls_client_cert =
tls_client_key =
tls_client_ca =
Setzen Sie api_url auf die Ressource, die OpenID UserInfo kompatible Informationen zurückgibt.
Sie können auch die vom Client verwendete SSL/TLS-Konfiguration angeben.
- Setzen Sie
tls_client_certauf den Pfad des Zertifikats. - Setzen Sie
tls_client_keyauf den Pfad, der den Schlüssel enthält. - Setzen Sie
tls_client_caauf den Pfad, der eine Liste vertrauenswürdiger Zertifizierungsstellen enthält.
tls_skip_verify_insecure` steuert, ob ein Client die Zertifikatskette und den Hostnamen des Servers verifiziert. Wenn es wahr ist, dann akzeptiert SSL/TLS jedes vom Server vorgelegte Zertifikat und jeden Hostnamen in diesem Zertifikat. Sie sollten dies nur zum Testen verwenden, da dieser Modus SSL/TLS anfällig für Man-in-the-Middle-Angriffe macht.
SmartCollect SC² versucht, die E-Mail-Adresse des Benutzers zu ermitteln, indem es den OAuth-Anbieter wie unten beschrieben in der folgenden Reihenfolge abfragt, bis eine E-Mail-Adresse gefunden wird:
- Überprüfen Sie das Vorhandensein einer E-Mail-Adresse über das Feld “E-Mail”, das im OAuth-Parameter “id_token” codiert ist.
- Prüfen Sie auf das Vorhandensein einer E-Mail-Adresse über den JMESPath, der über die Konfigurationsoption
email_attribute_pathangegeben wurde. Das für die Pfadsuche verwendete JSON ist die HTTP-Antwort, die durch die Abfrage des UserInfo-Endpunkts erhalten wurde, der über die Konfigurationsoption “api_url” angegeben wurde. Hinweis: Nur verfügbar in SmartCollect SC² v6.4+. - Prüfen Sie auf das Vorhandensein einer E-Mail-Adresse in der Karte “Attribute”, die im OAuth-Parameter “id_token” kodiert ist. Standardmäßig führt SmartCollect SC² eine Suche in der Attribute-Map unter Verwendung des Schlüssels
email:primarydurch, dies ist jedoch konfigurierbar und kann durch Verwendung der Konfigurationsoptionemail_attribute_nameangepasst werden. - Abfrage des Endpunkts
/emailsder API des OAuth-Anbieters (konfiguriert mitapi_url) und Überprüfung auf das Vorhandensein einer E-Mail-Adresse, die als primäre Adresse markiert ist. - Wenn in den Schritten (1-4) keine E-Mail-Adresse gefunden wird, dann wird die E-Mail-Adresse des Benutzers auf die leere Zeichenfolge gesetzt.
SmartCollect SC² wird auch versuchen, die Rollenzuordnung über OAuth wie unten beschrieben durchzuführen.
Nur verfügbar in SmartCollect SC² v6.5+.
Überprüfen Sie das Vorhandensein einer Rolle anhand des JMESPath, der über die Konfigurationsoption role_attribute_path angegeben wurde. Das JSON, das für die Pfadsuche verwendet wird, ist die HTTP-Antwort, die durch die Abfrage des UserInfo-Endpunkts erhalten wurde, der über die Konfigurationsoption api_url angegeben wurde. Das Ergebnis nach der Auswertung des JMESPath-Ausdrucks role_attribute_path muss eine gültige SmartCollect SC²-Rolle sein, d. h. Viewer, Editor oder Admin.
Siehe JMESPath-Beispiele für weitere Informationen.
Nur verfügbar in SmartCollect SC² v7.2+.
Passen Sie die Benutzeranmeldung mit der Konfigurationsoption login_attribute_path an. Die Reihenfolge der Operationen ist wie folgt:
- SmartCollect SC² wertet den
login_attribute_pathJMESPath-Ausdruck gegen das ID-Token aus. - Wenn SmartCollect SC² keinen Wert findet, dann wertet SmartCollect SC² den Ausdruck gegen die vom UserInfo-Endpunkt erhaltenen JSON-Daten aus. Die URL des UserInfo-Endpunkts wird in der Konfigurationsoption
api_urlangegeben.
Sie können den Attributnamen, der zum Extrahieren des ID-Tokens aus dem zurückgegebenen OAuth-Token verwendet wird, mit der Option id_token_attribute_name anpassen.
-
Erstellen Sie einen neuen Client in Auth0
- Name: SmartCollect SC²
- Typ: Reguläre Webanwendung
-
Gehen Sie zur Registerkarte “Einstellungen” und stellen Sie ein:
- Erlaubte Callback-URLs:
https://<smartcollect domain>/login/generic_oauth
- Erlaubte Callback-URLs:
-
Klicken Sie auf Save Changes (Änderungen speichern) und verwenden Sie dann die Werte oben auf der Seite, um SmartCollect SC² zu konfigurieren:
[auth.generic_oauth] enabled = true allow_sign_up = true team_ids = allowed_organizations = name = Auth0 client_id = <client id> client_secret = <client secret> scopes = openid profile email auth_url = https://<domain>/authorize token_url = https://<domain>/oauth/token api_url = https://<domain>/userinfo
[auth.generic_oauth]
name = BitBucket
enabled = true
allow_sign_up = true
client_id = <client id>
client_secret = <client secret>
scopes = account email
auth_url = https://bitbucket.org/site/oauth2/authorize
token_url = https://bitbucket.org/site/oauth2/access_token
api_url = https://api.bitbucket.org/2.0/user
team_ids =
allowed_organizations =
-
Erstellen Sie eine neue benutzerdefinierte OpenID Connect-Anwendungskonfiguration im Centrify-Dashboard.
-
Erstellen Sie eine einprägsame, eindeutige Anwendungs-ID, z. B. “smartcollect”, “smartcollect_aws”, usw.
-
Geben Sie weitere grundlegende Konfigurationen ein (Name, Beschreibung, Logo, Kategorie)
-
Generieren Sie auf der Registerkarte “Trust” ein langes Passwort und geben Sie es in das Feld “OpenID Connect Client Secret” ein.
-
Geben Sie die URL zur Startseite Ihrer SmartCollect SC²-Instanz in das Feld “Resource Application URL” ein.
-
Fügen Sie eine autorisierte Redirect-URI wie https://your-smartcollect-server/login/generic_oauth hinzu.
-
Richten Sie Berechtigungen, Richtlinien usw. wie bei jeder anderen Centrify-App ein
-
Konfigurieren Sie SmartCollect SC² wie folgt:
[auth.generic_oauth] name = Centrify enabled = true allow_sign_up = true client_id = <OpenID Connect Client ID from Centrify> client_secret = <your generated OpenID Connect Client Secret" scopes = openid profile email auth_url = https://<your domain>.my.centrify.com/OAuth2/Authorize/<Application ID> token_url = https://<your domain>.my.centrify.com/OAuth2/Token/<Application ID> api_url = https://<your domain>.my.centrify.com/OAuth2/UserInfo/<Application ID>
-
Erstellen Sie einen neuen benutzerdefinierten Anschluss mit den folgenden Einstellungen:
- Name: SmartCollect SC²
- Anmeldemethode: OpenID Connect
- URI umleiten:
https://<smartcollect domain>/login/generic_oauth - Signier-Algorithmus: RS256
- Login-URL:
https://<smartcollect domain>/login/generic_oauth
dann:
-
Fügen Sie eine App zum SmartCollect SC² Connector hinzu:
- Name anzeigen: SmartCollect SC²
dann:
-
Unter der Registerkarte SSO auf der SmartCollect SC² App-Detailseite finden Sie die Client-ID und das Client-Geheimnis.
-
Ihre OneLogin-Domäne wird mit der URL übereinstimmen, die Sie für den Zugriff auf OneLogin verwenden.
Konfigurieren Sie SmartCollect SC² wie folgt:
[auth.generic_oauth] name = OneLogin enabled = true allow_sign_up = true client_id = <client id> client_secret = <client secret> scopes = openid email name auth_url = https://<onelogin domain>.onelogin.com/oidc/2/auth token_url = https://<onelogin domain>.onelogin.com/oidc/2/token api_url = https://<onelogin domain>.onelogin.com/oidc/2/me team_ids = allowed_organizations =
Um die Konfiguration eines geeigneten JMESPath-Ausdrucks zu erleichtern, können Sie Ausdrücke mit benutzerdefinierten Nutzdaten unter http://jmespath.org/ testen/auswerten.
Basic Beispiel:
Im folgenden Beispiel erhält der Benutzer bei der Authentifizierung Editor als Rolle. Der Wert der Eigenschaft Rolle ist die resultierende Rolle, wenn die Rolle eine richtige SmartCollect SC²-Rolle ist, d.h. Betrachter, Editor oder Admin.
Payload:
{
...
"role": "Editor",
...
}
Config:
role_attribute_path = role
Erweitertes Beispiel:
Im folgenden Beispiel erhält der Benutzer bei der Authentifizierung Admin als Rolle, da er eine Gruppe Admin hat. Wenn ein Benutzer eine Gruppe Editor hat, erhält er Editor als Rolle, sonst Viewer.
Payload:
{
...
"info": {
...
"groups": [
"engineer",
"admin",
],
...
},
...
}
Config:
role_attribute_path = contains(info.groups[*], 'admin') && 'Admin' || contains(info.groups[*], 'editor') && 'Editor' || 'Viewer'