2013-04-15 8 views
7

Ich habe GitLab erfolgreich für die Verwaltung von privaten Repositories installiert (es ist ziemlich toll!).Verwenden von GitLab hinter nginx enabled basic_auth?

Das Problem, das ich habe, ist standardmäßig, Gitlab Login wird angezeigt, wenn jemand meine Subdomain trifft. Ich möchte den gesamten Bereich mit einer basic_auth-Ebene schützen, bevor der Benutzer den GitLab-Anmeldebildschirm erhält. Leider kann ich dadurch nicht mehr auf GitLab zugreifen, wenn es aktiviert ist.

meine nginx Config Basic_Auth aktivieren:

auth_basic   "Restricted"; 
    auth_basic_user_file htpasswd; 

Irgendwelche Ideen auf, wie ich Basic_Auth, ohne zu brechen git/Gitlab Funktionalität aktivieren kann?

+0

Für den Kerl Sucher laufen: Wenn Sie Ihre Repositories nur über SSH Zugriff auf und schützen wollen Gitlab mit HTTP Basic Auth Die Antwort von Nicolas BADIA ist, was Sie suchen. – lutuh

Antwort

2

Art von einem Hack im Moment, aber das ist ein Schuss.

Bearbeiten Sie Ihre nginx-Site-Konfiguration hinzufügen/ändern Sie die folgenden Standorte

location ^~ /api/v3/internal/allowed { 
    proxy_read_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694 
    proxy_connect_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694 
    proxy_redirect  off; 

    proxy_set_header X-Forwarded-Proto $scheme; 
    proxy_set_header Host    $http_host; 
    proxy_set_header X-Real-IP   $remote_addr; 

    proxy_pass http://gitlab;} 

location/{ 
    auth_basic "Gitlab Restricted Access"; 
    auth_basic_user_file /home/git/gitlab/htpasswd.users; 
    # serve static files from defined root folder;. 
    # @gitlab is a named location for the upstream fallback, see below 
    try_files $uri $uri/index.html $uri.html @gitlab; 
} 

Ihr @gitlab Standort Block verlassen, wie ist.

Der Trick ist, lassen Sie/api/v3/internal/allowd umgehen die Authentifizierung. Wenn Sie die Protokolle betrachten, wenn Sie einen git pull/push ausführen, wird eine Anfrage an den Server gestellt, ob er es erlauben soll oder nicht. Und auf der Standard-nginx-Konfiguration mit htpasswd würde diese Anfrage blockiert werden, da der Server keine Ahnung von der erforderlichen Authentifizierung hat.

Auf jeden Fall nicht sicher, ob es eine bessere Alternative (konnte nicht finden), aber das scheint für mich zu arbeiten.

0

Ihr Problem ist, dass Sie eine Passwortbeschränkung für den öffentlichen Zugriff auf GitLab festlegen möchten, aber Gitlab-Shell uneingeschränkt auf die lokale GitLab-Instanz zugreifen darf.

Je nach IP-Schnittstelle können 2 Nginx-Konfigurationen verwendet werden. Ändern Sie die Zeile listen 0.0.0.0:80 default_server zu listen 127.0.0.1:80 default_server.

https://github.com/gitlabhq/gitlabhq/blob/v7.7.2/lib/support/nginx/gitlab#L37-38

6

Fügen Sie diese auf /etc/gitlab/gitlab.rb:

nginx['custom_gitlab_server_config'] = "auth_basic 'Restricted';\n auth_basic_user_file htpasswd;\n" 

Und gitlab-ctl reconfigure

Verwandte Themen