代码之家  ›  专栏  ›  技术社区  ›  domino

如何将基本身份验证和https结合起来?

  •  3
  • domino  · 技术社区  · 14 年前

    我已经建立了一个私人网站,只需要几个人通过互联网访问。我想设置基本身份验证和https的组合。

    到目前为止,如果我直接输入 https://blah.com/location1 . 然而 我需要的 是让apache重定向 http://blah.com/location1 https://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 不需要认证。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Bruno    14 年前

    将HTTP请求“转换”为HTTPS请求的重写规则的问题是,它们不阻止通过普通HTTP发出第一个请求(当您获得到HTTPS URL的重定向时)。

    你能做的就是把你的站点分成两个虚拟主机:一个用于HTTP,一个用于HTTPS。

    在HTTP虚拟主机上,根据需要实现重写,但禁止访问 <Location /location1> 在所有情况下(只重写)。

    在HTTPS虚拟主机上,配置 <位置1> 使用基本身份验证。

        2
  •  0
  •   Community paulsm4    7 年前

    我在这里回答 Apache 2.2 redirect to SSL *then* do auth (with solution < but is it crap?) ,一种使用 SSLRequireSSL ,和 ErrorDocument 403 返回包含JavaScript的html 403错误页,该JavaScript将页重新加载到HTTPS。。。我找到的最好的解决方案是不将配置文件一分为二,一个由 VirtualHost 在端口HTTP上,在另一个端口HTTPS上。