Apache-2.2

apache 身份驗證通道

  • September 27, 2012

Apache 正在偵聽埠 80 並將所有內容重定向到由 stunnel 處理的 https。如果我在其中進行身份驗證,它會在進行身份驗證之前重定向。有沒有辦法處理這個?

Listen 80
<VirtualHost *:80>
   RewriteEngine   On
   RewriteRule     ^(.*)   https://%{HTTP_HOST}$1

  <Directory /*>
     AuthType Basic
     AuthName "Stooges Web Site: Login with email address"
     AuthLDAPURL ldap://localhost:389/o=stooges?mail
     require valid-user
 </Directory>
</VirtualHost>

更新:我使用 stunnel 而不是 apache,因為 apache 無法使用 ssl 處理 websocket,而 stunnel 可以。

僅當有人訪問 HTTP 伺服器的起始頁時才會進行身份驗證,但是由於您已經開始將每個人從 HTTP 站點重定向到 HTTPS 站點,因此您將永遠無法到達該目錄。

最好的辦法是將身份驗證放在 HTTPS 站點的配置中,但如果你不能這樣做,我認為你應該能夠使用 RewriteCond 使其工作。我自己並沒有真正嘗試過,但這裡有一個例子可以幫助你:

Listen 80
<VirtualHost *:80>
   RewriteEngine   On
   RewriteCond     %{AUTH_TYPE} Basic
   RewriteRule     ^(.*)   https://%{HTTP_HOST}$1

  <Directory /*>
     AuthType Basic
     AuthName "Stooges Web Site: Login with email address"
     AuthLDAPURL ldap://localhost:389/o=stooges?mail
     require valid-user
 </Directory>
</VirtualHost>

可能只有一個包含重定向到 HTTPS 主機的 index.html 會容易得多……

引用自:https://serverfault.com/questions/432501