如何组合基本身份验证和https?

时间:2010-11-11 08:57:39

标签: apache https basic-authentication

我已经设置了一个私人网站,只有少数人可以通过互联网访问。我想设置一个基本身份验证和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/site1http://blah.com/site2而无需身份验证。

2 个答案:

答案 0 :(得分:1)

将HTTP请求“转换”为HTTPS请求的重写规则的问题在于它们不会阻止通过普通HTTP发出第一个请求(因为您重定向到HTTPS URL)。

您可以做的是将您的网站拆分为两个虚拟主机:一个用于HTTP,另一个用于HTTPS。

在HTTP虚拟主机上,如果需要,实施重写,但在所有情况下都禁止访问<Location /location1>(仅进行重写)。

在HTTPS虚拟主机上,使用基本身份验证配置<Location /location1>

答案 1 :(得分:0)

我在这里回复了Apache 2.2 redirect to SSL *then* do auth (with solution < but is it crap?),一个使用SSLRequireSSL的解决方案,以及一个ErrorDocument 403返回包含JavaScript的html 403错误页面,该页面会将页面重新加载到HTTPS ...最好的解决方案我发现没有将配置文件分成两部分,一部分由端口HTTP上的VirtualHost加载,另一部分端口HTTPS上。