Apache 身份验证隧道

Apache 身份验证隧道

Apache 正在监听端口 80 并将所有内容重定向到 https,这由 stunnel 处理。如果我输入身份验证,它会在进行身份验证之前重定向。有办法处理这个问题吗?

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 的 websockets,而 stunnel 可以。

答案1

仅当有人访问 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 就会容易得多......

相关内容