Proces uwierzytelnienia jest ważnym elementem dostępu do naszego repozytorium. Nie zawsze chcemy, by było ono otwarte dla wszystkich. Chcemy mieć kontrole, nad tym kto korzysta z naszego repozytorium. Gerrit sam w sobie nie ma mechanizmów uwierzytelniania, korzysta z zewnętrznych usług, między innymi z uwierzytelniania serwera web’owego lub protokołu LDAP(Lightweight Directory Access Protocol).
Logowanie przez HTTP
Sprawdzamy wersje apache2
apache2 –v
Jeżeli nie ma zainstalowanej usługi apache2 to instalujemy
sudo apt-get update sudo apt-get install apache2 apache2-utils
Ustawiamy port usługi apacha2 na 8081
sudo nano /etc/apache2/ports.conf
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf
Listen 8081
Listen 443
Listen 443
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Przechodzimy do katalogu appache2
cd /etc/apache2/ sites-available/
Tworzymy plik gerrit.conf
sudo touch gerrit.conf
Otwieramy plik
sudo nano gerrit.conf
Wpisujemy
ServerName ubuntu
ProxyRequests Off
ProxyVia Off
ProxyPreserveHost On
Order deny,allow
Allow from all
AuthType Basic
AuthName "Gerrit Code Review"
Require valid-user
AuthUserFile /etc/apache2/gerrit.passwd
AllowEncodedSlashes On
ProxyPass /r/ http://127.0.0.1:8080/r/ nocanon
ProxyPassReverse /r/ http://127.0.0.1:8080/r/ nocanon
Uruchamiamy proxy_http
sudo a2enmod proxy_http
Wyłączamy domyślny plik wirtualnego hosta
sudo a2dissite 000-default
Restartujemy usługę apache2
sudo service apache2 reload
Sprawdzamy czy powstał nasz wirtualny host gerrita
apachectl -S
Tworzymy użytkownika do logowania w gerrit’cie, w moim przypadku jest to admin z hasłem admin
sudo htpasswd -c /etc/apache2/gerrit.passwd admin
Wprowadzamy zmiany w pliku konfiguracyjnym gerrit’a
sudo nano ~/gerrit-2.13.6/etc/gerrit.config
[gerrit]
basePath = git
serverId = 0cfd11ad-9872-48fc-89d0-1e4493845e1f
canonicalWebUrl = http://ubuntu:8081/r/
[database]
type = h2
database = /home/ubuntu/gerrit-2.13.6/db/ReviewDB
[auth]
type = HTTP
[receive]
enableSignedPush = false
[sendemail]
smtpServer = localhost
[container]
user = ubuntu
javaHome = /usr/lib/jvm/java-8-openjdk-i386/jre
[sshd]
listenAddress = *:29418
[httpd]
listenUrl = proxy-http://*:8080/r/
[cache]
directory = cache
Restartujemy gerrita’a
sudo ~/gerrit-2.13.6/bin/gerrit.sh restart
W przeglądarce pod adresem http://ubuntu:8081/r/ logujemy się na użytkownika, którego wcześniej utworzyliśmy.
Pamiętajmy, że z pierwszym logowaniem gerrit tworzy konto z uprawnieniami administratora!
Logowanie przez LDAP
Musimy mieć postawiony serwer LDAP, możemy wykorzystać rozwiązania Microsoftu lub skorzystać z OpenLDAP. Sądzę, że proces instalacji i konfiguracji serwera LDAP nie jest skomplikowane. Przejdźmy do konfiguracji gerrit’a.
W pliku konfiguracyjnym gerrit’a wprowadzamy poniższe zmiany
sudo nano ~/gerrit-2.13.6/etc/gerrit.config
[gerrit]
basePath = git
serverId = 0cfd11ad-9872-48fc-89d0-1e4493845e1f
canonicalWebUrl = http://ubuntu:8080/
[database]
type = h2
database = /home/ubuntu/gerrit-2.13.6/db/ReviewDB
[auth]
type = LDAP
[receive]
enableSignedPush = false
[sendemail]
smtpServer = localhost
[container]
user = ubuntu
javaHome = /usr/lib/jvm/java-8-openjdk-i386/jre
[sshd]
listenAddress = *:29418
[httpd]
listenUrl = http://*:8080/
[cache]
directory = cache
[ldap]
server = ldap://[adres naszego server LDAP]
username = [nazwa uzytkownika LDAP]
password = [hasło LDAP]
accountBase = ou=[nazwa grupy],dc=[domena cz.1],dc=[domena cz.2]
groupBase = ou=[nazwa grupy],dc=[domena cz.1],dc=[domena cz.2]
accountPattern = (&(sAMAccountName=${username}))
accountFullName = displayName
accountEmailAddress = mail
sudo ~/gerrit-2.13.6/bin/gerrit.sh restart
W przeglądarce pod adresem http://ubuntu:8080/ logujemy się na użytkownika znajdującego się na serwerze LDAP.