GitLab OAuth2-Authentifizierung
Um GitLab OAuth2 zu aktivieren, müssen Sie die Anwendung in GitLab registrieren. GitLab generiert eine Client-ID und einen geheimen Schlüssel, die Sie verwenden können.
Sie müssen [eine GitLab OAuth-Anwendung erstellen] (https://docs.gitlab.com/ce/integration/oauth_provider.html). Wählen Sie einen aussagekräftigen Name und verwenden Sie den folgenden Redirect URI:
https://smartcollect.example.com/login/gitlab
wobei https://smartcollect.example.com die URL ist, die Sie zur Verbindung mit SmartCollect SC² verwenden.
Passen Sie diese nach Bedarf an, wenn Sie kein HTTPS verwenden oder einen anderen Port benutzen; zum Beispiel
wenn Sie beispielsweise auf SmartCollect SC² unter http://203.0.113.31:3000 zugreifen, sollten Sie
http://203.0.113.31:3000/login/gitlab
Wählen Sie schließlich read_api als Scope und senden Sie das Formular ab. Beachten Sie, dass Sie, wenn Sie keine GitLab-Gruppen für die Autorisierung verwenden (d. h. Sie setzen nicht (d. h. keine Einstellung von “allowed_groups”, siehe unten), können Sie read_user statt read_api als den Scope wählen und so einen eingeschränkteren Zugriff auf Ihre GitLab-API erhalten.
Im Gegenzug erhalten Sie eine Application Id und ein Secret; wir nennen sie GITLAB_APPLICATION_ID" und “GITLAB_SECRET” für den Rest dieses Abschnittes.
Fügen Sie Folgendes zu Ihrer SmartCollect SC²-Konfigurationsdatei hinzu, um GitLab-Authentifizierung zu aktivieren:
[auth.gitlab]
enabled = true
allow_sign_up = false
client_id = GITLAB_APPLICATION_ID
client_secret = GITLAB_SECRET
scopes = read_api
auth_url = https://gitlab.com/oauth/authorize
token_url = https://gitlab.com/oauth/token
api_url = https://gitlab.com/api/v4
allowed_groups =
Möglicherweise müssen Sie 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 bedienen.
Starten Sie das SmartCollect SC²-Backend neu, damit Ihre Änderungen wirksam werden.
Wenn Sie Ihre eigene Instanz von GitLab anstelle von gitlab.com verwenden, passen Sie auth_url, token_url und api_url entsprechend an, indem Sie den gitlab.com
durch Ihren eigenen Hostnamen ersetzen.
Wenn allow_sign_up auf false gesetzt ist, können sich nur bestehende Benutzer mit ihrem GitLab-Konto anmelden, aber wenn allow_sign_up auf true eingestellt ist, kann jeder Benutzer der sich bei GitLab authentifizieren kann, bei Ihrer SmartCollect SC²-Instanz anmelden können;
wenn Sie das öffentliche gitlab.com verwenden, bedeutet dies, dass jeder auf der Welt in der Lage wäre sich bei Ihrer SmartCollect SC²-Instanz anmelden kann.
Sie können den Zugriff auf nur Mitglieder einer bestimmten Gruppe oder einer Liste von Gruppen beschränken, indem Sie die Option allowed_groups setzen.
Um den Zugriff auf authentifizierte Benutzer zu beschränken, die Mitglieder einer oder mehrerer [GitLab Gruppen] (https://docs.gitlab.com/ce/user/group/index.html) sind, setzen Sie allowed_groups auf eine durch Komma oder Leerzeichen getrennte Liste von Gruppen. Wenn Sie zum Beispiel
nur Mitgliedern der Gruppe “example” Zugriff gewähren möchten, setzen Sie
allowed_groups = example
Wenn Sie auch den Mitgliedern der Untergruppe bar, die sich in der Gruppe foo befindet, Zugriff geben wollen
der Gruppe “foo” ist, setzen Sie
allowed_groups = example, foo/bar
Beachten Sie, dass in GitLab der Gruppen- oder Untergruppenname nicht immer mit dem Anzeigenamen übereinstimmt, insbesondere wenn der Anzeigename Leerzeichen oder Sonderzeichen enthält. Stellen Sie sicher, dass Sie immer den Gruppen- oder Untergruppennamen so verwenden, wie dieser in der URL der Gruppe oder Untergruppe erscheint.
Hier ist ein vollständiges Beispiel mit aktiviertem “allow_sign_up” und eingeschränktem Zugriff auf
die Gruppen example und foo/bar:
[auth.gitlab]
enabled = true
allow_sign_up = true
client_id = GITLAB_APPLICATION_ID
client_secret = GITLAB_SECRET
scopes = api
auth_url = https://gitlab.com/oauth/authorize
token_url = https://gitlab.com/oauth/token
api_url = https://gitlab.com/api/v4
allowed_groups = example, foo/bar