2012-10-27 6 views
5

Ich möchte grundlegende Authentifizierung für eine Reverse-Proxy-Site von Apache unter Ubuntu-Server 12.04.1 hinzufügen.Apache grundlegende Authentifizierungsproblem mit Reverse-Proxy

Die Webanwendung ist Jenkins, die auf einem Java EE-Container ausgeführt wird.

Ich habe unter Konfigurationen in httpd.conf,

ProxyPass   /jenkins/ http://localhost:8080/jenkins/¬ 
ProxyPassReverse /jenkins/ http://localhost:8080/jenkins/¬ 
ProxyRequests  Off¬ 
ProxyPreserveHost On¬ 
¬ 
<Proxy http://localhost:8080/jenkins*>¬ 
    Order deny,allow¬ 
    Deny from all¬ 
▸ AllowOverride AuthConfig¬ 
▸ AuthType Basic¬ 
    AuthName "jenkins"¬ 
▸ AuthBasicProvider file¬ 
    AuthUserFile /etc/apache2/passfile¬ 
▸ Require valid-user¬ 
▸ Satisfy any¬ 
</Proxy> 

Wenn ich ein falsches Passwort verwendet oder nicht existieren Benutzernamen für die Authentifizierung, kann ich unter Nachrichten in error.log finden von Apache,

[Sa 27. Oktober 2012 17.51.59] [Fehler] [client 222.128.175.95] Benutzer kane: Authentifizierungsfehler für "/ jenkins /": Passwort Mismatch [Sa 27. Oktober 17.52.04 2012] [Fehler] [client 222.128.175.95] Benutzer Aladdin nicht gefunden: /jenkins/

Es gibt keine Nachricht protokolliert werden, wenn in passfile richtigen Benutzer und Passwort. Obwohl ich den richtigen Benutzer und das Passwort im Webbrowser eingegeben habe, wird der Authentifizierungsdialog erneut angezeigt. ich auch unter Ausgabe in access.log von Apache gefunden,

222.128.175.95 - kane [27/Okt/2012: 17: 39: 54 0.800] "GET/jenkins/HTTP/1.1" 401 794 "-" "Mozilla/5.0 (Macintosh, Intel Mac OS X 10_8_2) AppleWebKit/537,4 (KHTML, wie Gecko) Chrom/22.0.1229.94 Safari/537,4"

Leistet jemand weiß, wie man es funktioniert? Vielen Dank.

Antwort

4

Haben Sie Authentifizierung auf Jenkins als auch aktiviert? Siehe diesen Link: https://wiki.jenkins-ci.org/display/JENKINS/Apache+frontend+for+security für Anweisungen zum Einrichten.

Beachten Sie besonders die Zeile, die besagt, dass Sie die Sicherheit nicht gleichzeitig in Jenkins und Apache aktivieren können, da die beiden Konflikte verursachen, was zu der unendlichen Eingabeaufforderung führt, die Sie sehen. Leider musst du das eine oder das andere wählen.

Siehe auch diesen Link für eine allgemeinere Diskussion von Apache + Jenkins Setup: https://wiki.jenkins-ci.org/display/JENKINS/Running+Jenkins+behind+Apache

+0

Danke für die Freigabe des Links. Mein Jenkins verwendet tatsächlich OpenId für die Authentifizierung. Weil die Beschränkung von Jenkins CLI, die ich habe, etwas Arbeit machen kann, kann von anonymem Benutzer gelesen werden. Deshalb möchte ich die Basisauthentifizierung für meine Jenkins verwenden, die hinter dem Apache-Server liegt. Sieht so aus, als hätte jenkins einen Konflikt zwischen seiner Authentifizierung und der Apache-Standardauthentifizierung. Jedenfalls gibt es mir eine Erklärung. – Kane

+0

Ich weiß, dass dieser Beitrag 3 Jahre alt ist, aber ich fand es bei der Suche nach einer Lösung. Wenn Sie verhindern möchten, dass Jenkins grundlegende Authentifizierungsaufforderungen anzeigt, fügen Sie einfach 'RequestHeader unset Authorization' in Ihre Apache-Konfiguration ein. Siehe vollständige Lösung hier: http://jenkins-ci.361315.n4.nabble.com/SOLVED-Apache-SSL-Proxy-Jenkins-tp4700182p4700212.html – Alex

1

diese Konfiguration Versuchen

ProxyPass   /jenkins/ http://localhost:8080/jenkins/ 
ProxyPassReverse /jenkins/ http://localhost:8080/jenkins/ 
ProxyRequests  Off 
ProxyPreserveHost On 

<Proxy http://localhost:8080/jenkins*> 
    AllowOverride None 
    Order allow,deny 
    allow from all 
    AuthName   "jenkins" 
    AuthBasicProvider file 
    AuthType   basic 
    AuthUserFile  /etc/apache2/passfile 
    <Limit GET POST> 
     require valid-user  
    </Limit> 
    Satisfy all 
</Proxy> 
+0

Es gibt keine Authentifizierung mehr im Browser erforderlich. Ich denke, es ist durch 'Order allow, leugnen erlauben von allen 'verursacht, die alle Zugriff erlaubt. – Kane

+0

leugnen von allen: Es blockiert alle Zugriffe einschließlich der Authentifizierung, Sie können diesen Link http://httpd.apache.org/docs/2.0/mod/mod_access.html – developer

+0

Sie können IP-Adressbereich anstelle von "alle" zu setzen in der Lage sein, Authentifizierung zu machen, Beispiel: Zulassen von 10.1.0.0/16 – developer