Gerrit uwierzytelnianie HTTP/LDAP

Opublikowany Autor Piotr CudnikDodaj komentarz

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.