2010-11-11 54 views
3

我已經建立了一個私人網站,只有少數人通過互聯網才能訪問。我想設置基本身份驗證和https的組合。如何將基本身份驗證和https結合使用?

到目前爲止,我所擁有的一切工作正常,如果我直接在https://blah.com/location1類型。然而我需要的是讓Apache重定向http://blah.com/location1https://blah.com/location1,然後做基本驗證即我不想基本身份驗證重定向之前完成。目前,這是我的apache配置。

WSGIScriptAlias /site /path/to/site/apache/site.wsgi 

<Directory /path/to/site/apache> 
    WSGIApplicationGroup %{GLOBAL} 
    Order deny,allow 
    Allow from all 
</Directory> 

<Location /site> 
    RewriteEngine On 
    RewriteCond %{HTTPS} off 
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 

    AuthType Basic 
    AuthName "Site login" 
    AuthUserFile /path/to/site/.htpasswd 
    Require valid-user 
</Location> 

注:我只需要/site認證。所以我應該能夠訪問http://blah.com/site1,http://blah.com/site2而不需要驗證。

+0

一個問題,你爲什麼要用https進行基本認證?通過基本認證,用戶憑證將以純文本形式發送。 – anil 2010-11-11 09:15:21

+2

這就是爲什麼我需要從'https'而不是'http'完成基本身份驗證。他們被送到加密 – domino 2010-11-11 09:18:35

+1

這樣,我覺得你應該只從http配置轉移'基本進行AuthType到..' HTTPS,這意味着兩個不同的配置 – ajreal 2010-11-11 10:00:05

回答

1

與重寫的問題規則「轉換」 HTTP請求到HTTPS請求是,他們不會阻止通過純HTTP來進行的第一個請求(當你重定向到HTTPS URL)。

你可以做的是分裂您的網站成兩個虛擬主機:一個用於HTTP,另一個用於HTTPS。

在HTTP虛擬主機上,如果需要,請執行重寫,但在所有情況下禁止訪問<Location /location1>(僅執行重寫)。

在HTTPS虛擬主機,配置<Location /location1>基本身份驗證。

+1

+1這是我使用的方法。使用一個虛擬主機並沒有簡單的方法。 – cdhowie 2010-11-11 18:43:18

+0

我從阿杰里爾的評論中推斷出了這一點。謝謝 – domino 2010-11-12 11:17:08

0

我說這裏Apache 2.2 redirect to SSL *then* do auth (with solution < but is it crap?),它使用SSLRequireSSL的解決方案,以及ErrorDocument 403返回一個包含一個JavaScript,將頁面加載到HTTPS ...我發現沒有分爲二的配置文件的最佳解決方案的HTML 403錯誤頁面,一個通過端口HTTP上的VirtualHost加載,另一個通過端口HTTPS加載。