Google-Authentifizierung für Gerrit und Jenkins
Jenkins und Gerrit haben beide plugins für OpenID 2.0, aber diese API ist mittlerweile veraltet, die von Google 19. Mai 2014 (https://developers.google.com/accounts/docs/OpenID) macht es unmöglich für die neue installation zu nutzen und bestehende Anlagen müssen die Migration auf OAuth2.0(OpendID verbinden). Wenn Sie versuchen, zu verwenden OpenID 2.0 erhalten Sie die Fehlermeldung "error 400: OpenID-auth-Anforderung enthält eine nicht registrierte domain".
Den Gerrit-team ist das problem bekannt aber keine Lösung bisher:
https://code.google.com/p/gerrit/issues/detail?id=2677
Nicht sicher über Jenkins.
- Passen die Erwartungen von einem Q&Eine Seite, es sollte eine Frage hier. Vielleicht hätte mir geholfen zu verstehen, was Ihre Antwort enthielt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Update 2014/11/05: Für diejenigen, die hier den ersten Platz, Lesen Sie auf unten. Dank hans-zandbelt für das feedback. Es ist integriert in der aktuellen version. Das setup verwendet nun die Verbesserungen vorgeschlagen und verwendet nur mod_rewrite umleiten der gerrit logout-url an der richtigen Stelle. Beachten Sie auch, dass anstatt nur mit der non-domain-Teil der E-Mail die E-Mail ist unverändert zum Einsatz. Dies bedeutet, dass, wenn Sie geschehen, um eine bestehende Installation müssen Sie Benutzernamen ändern Zuordnungen.
Für Jenkins Folgendes tun:
Für Gerrit:
entweder an der Maschine selbst (ändern GERRIT_HOME, wo Sie es auf Ihrer Maschine):
öffnen Sie die sql-Datenbank mit einer der beiden folgenden Methoden:
[Empfohlen] Entweder durch die gerrit Befehl über ssh:
ODER auf der Maschine selbst (ändern GERRIT_HOME, wo Sie es auf Ihrer Maschine):
externen
den externen ids anzeigen Ihr Konto, um die verschiedenen Nutzernamen, E-Mails usw.
für einen bestimmten account_id, können Sie einfach fügen Sie neue Zuordnungen für die bestehenden Benutzer, die mit sql: z.B.
Lösung
Können Sie einen Apache als reverse-proxy-handling-Authentifizierung für Sie:
Gerrit
Vorausgesetzt, dass Sie bereits installiert haben Gerrit und überwacht-Adresse 10.10.10.10:8080.
Sie müssen zum konfigurieren gerrit, die Standardauthentifizierung zu verwenden, die [auth] Abschnitt in Ihrem
${gerrit_installation}/etc/gerrit.config sollte so Aussehen:
Wird der Benutzername in der Kopfzeile X-Forwarded-Benutzer. Das ist, wie Apache leiten den Benutzernamen
zu Gerrit.
Auf Apache verwenden wir mod_auth_openidc die Unterstützung für oauth2. Für weitere Informationen und
Beispiel docs finden https://github.com/pingidentity/mod_auth_openidc. Auf einer aktuellen Ubuntu-installation
sieht wie folgt aus:
Müssen Sie eine Konfigurationsdatei, z.B. gerrit.conf ähnlich dem unten (Sie werden wahrscheinlich möchten von TLS, die auch in /etc/apache2/sites-available an und aktivieren Sie ihn mit:
Die Datei /etc/apache2/sites-available/gerrit.conf sieht wie folgt aus:
In Auftrag, um die Parameter OIDCClientID und OIDCClientSecret gehen Sie auf die api-Konsole unter https://console.developers.google.com/project. Die Anmeldeinformationen werden im Rahmen eines Projekts, wenn Sie noch nicht ein Projekt erstellen zuerst. E. g. Beispiel-es-Authentifizierung
Auf dem Projekt gehen Sie zu APIs & auth:
Sollten Sie getan werden!
Jenkins
Vorausgesetzt, dass Sie bereits installiert haben Jenkins und es hört auf 10.10.10.11:8080.
Für Jenkins die Konfiguration ist fast identisch. Sie müssen Sie installieren und aktivieren Sie die Reverse-Proxy-Auth-Plugin http://wiki.jenkins-ci.org/display/JENKINS/Reverse+Proxy+Auth+Plugin. Unter Konfigurieren der Globalen Sicherheits-check der "HTTP-Header von reverse-proxy" - radio.
Die default-Werte entsprechen der Konfiguration unten. Sie müssen Anmeldeinformationen, die passend zu den jenkins hostname in der api-Konsole https://console.developers.google.com/project. Melden Sie Ihre Konfiguration vor (z.B. jenkins.conf). Das sollte alles sein.
Derzeit scheint es nicht zu sein, Unterstützung für Gruppen in mod_auth_openidc. Wenn Sie brauchen Gruppen, die Sie installieren können eine LDAP speichert Sie (aber dies ist wahrscheinlich nicht das, was Sie wollen, da Sie mit Google auth) oder warten, bis es unterstützt wird durch mod_auth_openidc.
Unrecognized option: -url
find ${GERRIT_HOME} -name "h2*.jar"
auf eigenen es sollte das h2*.jar. Vielleicht auf der installation-es Leben außerhalb von ${GERRIT_HOME}.Cannot assign user name [email protected] to account 73; name does not conform
. Die Lösung war, war dieOIDCRemoteUserClaim email ^(.*)@
im apache config. Der zweite Teil der Wert ist eine regex, die nur gibt den Namensteil der E-Mail. Danach musste ich zum erstellen neuer Einträge in dieaccount_external_ids
für bestehende Benutzer ohne Domäne.Google OpenID 2.0 wurde abgelöst durch OpenID Connect. Das Apache-Modul mod_auth_openidc implementiert OpenID Connect, so kann es verwendet werden, ein reverse-proxy, Fronten Gerrit/Jenkins, wie beschrieben, durch revau.lt.
Beachten Sie jedoch, dass sich auf dem non-domain-Teil einer e-mail-Adresse als eindeutige Kennung ist unsicher, es sei denn, Sie beschränken Anmeldungen an eine bestimmte Domäne mit den folgenden zwei Konfigurationseinstellungen:
überspringen Google-Konto-Auswahl-Bildschirm, und in der
<Location>
Abschnitt:beschränken Sie den Zugriff nur für Benutzer aus der
example.com
Google-domain. Wenn Ihre Anwendung ist offen für alle Google-Konto sollten Sie nicht verwenden die e-mail-Adresse als primären Bezeichner, weil man die Kollision die Gefahr, dass Benutzer in verschiedenen domains haben den gleichen Benutzer Präfix.Deshalb ist es besser, sich auf die vollständige e-mail-Adresse, z.B.
oder die (undurchsichtigen) primäre Kennung, die Google verwendet, in der
sub
Anspruch, z.B.:Außerdem, anstatt umschreiben Ansprüche im Header können Sie einfach:
Migration von OpenID 2.0 OpenID Connect (Beibehaltung der OpenID-2.0-Benutzer-IDS) möglich ist, wie beschrieben hier und hier, so dass Sie verwenden würden:
Für eine erschöpfende übersicht über die Konfiguration-primitive, siehe: https://github.com/pingidentity/mod_auth_openidc/blob/master/auth_openidc.conf
Als ich weiß, der Schnellste Weg zur Anmeldung an Gerrit mit dem Google-Konto ist:
java -jar gerrit-2.10.1-4-a83387b.war init -d gerrit_site_path
gerrit_site_path/bin/gerrit.sh restart
Zu Jenkins ist neue Google-login plug-in.