【问题标题】:How do I combine basic authentication and https?如何结合基本身份验证和 https?
【发布时间】:2010-11-11 08:57:38
【问题描述】:

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

【问题讨论】:

  • 一个问题,为什么要使用 https 进行基本身份验证?使用基本身份验证,用户凭据将以纯文本形式发送。
  • 这就是为什么我需要从https 而不是http 进行基本身份验证。这样它们就会被加密发送
  • 我认为你应该将 AuthType Basic .. 从 http 配置转移到 https,这意味着两个单独的配置

标签: apache https basic-authentication


【解决方案1】:

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

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

在 HTTP 虚拟主机上,根据需要实现重写,但在所有情况下都禁止访问 &lt;Location /location1&gt;(仅进行重写)。

在 HTTPS 虚拟主机上,使用基本身份验证配置 &lt;Location /location1&gt;

【讨论】:

  • +1 这是我使用的方法。使用一个虚拟主机确实没有简单的方法。
  • 我从 ajreal 的评论中推断出这一点。谢谢
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-17
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 2013-03-17
    相关资源
    最近更新 更多