2012-10-27 28 views
5

Tôi muốn thêm xác thực cơ bản cho trang web proxy ngược của Apache đang chạy trên máy chủ Ubuntu 12.04.1.Vấn đề xác thực cơ bản của Apache với proxy ngược

Ứng dụng web là Jenkins đang chạy trên vùng chứa Java EE.

tôi thêm dưới đây cấu hình trong 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> 

Khi tôi sử dụng sai mật khẩu hoặc không tồn tại tên người dùng cho xác thực, tôi có thể tìm thấy bên dưới thông điệp trong error.log của apache,

[Sat 27 tháng 10 17:51:59 2012] [lỗi] [khách hàng 222.128.175.95] dùng kane: xác thực thất bại cho "/ Jenkins /": Mật khẩu không phù hợp [Sat 27 tháng 10 17:52:04 2012] [lỗi] [khách hàng 222.128.175.95] dùng Aladdin không tìm thấy: /Jenkins/

Không có thông báo sẽ được đăng nhập khi sử dụng người dùng phải và mật khẩu trong passfile. Mặc dù tôi nhập đúng người dùng và mật khẩu trong trình duyệt web, hộp thoại xác thực sẽ nhắc lại. Tôi cũng tìm thấy bên dưới đầu ra trong access.log của apache,

222.128.175.95 - kane [27/Oct/2012: 17: 39: 54 0800] "GET/Jenkins/HTTP/1.1" 401 794 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537,4 (KHTML, như Gecko) Chrome/22.0.1229.94 Safari/537,4"

Có ai biết làm thế nào để làm cho nó hoạt động? Cảm ơn.

Trả lời

4

Bạn đã xác thực được kích hoạt trên Jenkins cũng? Xem liên kết này: https://wiki.jenkins-ci.org/display/JENKINS/Apache+frontend+for+security để biết hướng dẫn về cách thiết lập này.

Đặc biệt lưu ý dòng ghi rằng bạn không thể có bảo mật được kích hoạt trong Jenkins và Apache đồng thời vì cả hai sẽ xung đột, gây ra dấu nhắc vô hạn mà bạn đang thấy. Thật không may, bạn phải chọn một hoặc khác.

Cũng xem liên kết này cho một cuộc thảo luận tổng quát hơn của thiết lập Apache + Jenkins: https://wiki.jenkins-ci.org/display/JENKINS/Running+Jenkins+behind+Apache

+0

Cảm ơn bạn đã chia sẻ liên kết. Jenkins của tôi thực sự sử dụng OpenId để xác thực là tốt. Bởi vì giới hạn của Jenkins CLI tôi phải thực hiện một số công việc có thể được đọc bởi người dùng ẩn danh. Đó là lý do tại sao tôi muốn sử dụng xác thực cơ bản cho jenkins của tôi phía sau máy chủ Apache. Có vẻ như jenkins có xung đột giữa xác thực của nó và xác thực cơ sở Apache. Dù sao nó mang lại cho tôi một lời giải thích. – Kane

+0

Tôi biết bài đăng này là 3 tuổi nhưng tôi đã tìm thấy nó trong khi tìm kiếm giải pháp. Nếu bạn muốn ngăn không cho Jenkins hiển thị các lời nhắc auth cơ bản vô hạn, chỉ cần thêm 'RequestHeader unset Authorization' vào cấu hình Apache của bạn. Xem giải pháp đầy đủ tại đây: http://jenkins-ci.361315.n4.nabble.com/SOLVED-Apache-SSL-Proxy-Jenkins-tp4700182p4700212.html – Alex

1

Hãy thử cấu hình này

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

Không có xác thực cần thiết nữa trong trình duyệt. Tôi nghĩ rằng nó gây ra bởi 'Lệnh cho phép, từ chối cho phép từ tất cả', cho phép tất cả quyền truy cập. – Kane

+0

từ chối tất cả: nó chặn tất cả quyền truy cập bao gồm xác thực, bạn có thể thấy liên kết này http://httpd.apache.org/docs/2.0/mod/mod_access.html – developer

+0

Bạn có thể đặt dải địa chỉ IP thay vì "tất cả" thành có thể thực hiện xác thực, ví dụ: Cho phép từ 10.1.0.0/16 – developer

Các vấn đề liên quan