Apache HTTP Basic Auth - 提供用户名和密码后出现 401 错误
Posted
技术标签:
【中文标题】Apache HTTP Basic Auth - 提供用户名和密码后出现 401 错误【英文标题】:Apache HTTP Basic Auth - 401 error after supplying username and password 【发布时间】:2012-12-23 01:17:03 【问题描述】:我正在尝试使用 Apache Http 配置我的亚马逊服务器,以便在通过浏览器访问域时提示用户输入用户名/密码。
这是我的 app.conf 文件中的一个 sn-p(包含在 httpd.conf 中)
Alias / "/opt/bitnami/apache2/htdocs"
<Directory "/opt/bitnami/apache2/htdocs">
AuthType Basic
AuthName "No Trespassing"
AuthUserFile "/opt/bitnami/apache2/users"
Require valid-user
<IfVersion < 2.3 >
Order allow,deny
Allow from all
Satisfy all
</IfVersion>
<IfVersion >= 2.3>
Require all granted
</IfVersion>
ErrorDocument 403 "Authentication error"
</Directory>
登录后,我被重定向到 401“授权错误”页面。这里有什么理由吗?我在想也许我的其他 .conf 文件会引起一些冲突。
在 httpd.conf 我有以下内容:
WSGIScriptAlias / /opt/bitnami/apps/django/scripts/djangoApp.wsgi
<Directory '/opt/bitnami/apps/django/django_projects/djangoApp'>
Order allow,deny
Allow from all
Satisfy all
</Directory>
每个 sn-ps 的第一行是否会在此处引起冲突,从而阻止我登录?我不确定,但他们看起来都在创建类似的别名。
如果我需要提供更多详细信息,请告诉我。
这是日志中的错误:
[Wed Jan 09 03:49:49 2013] [error] [client X.X.X.X] client denied by server configuration: /opt/bitnami/apache2/htdocsindex.html
[Wed Jan 09 03:49:49 2013] [error] [client X.X.X.X] client denied by server configuration: /opt/bitnami/apache2/htdocsfavicon.ico
[Wed Jan 09 03:50:28 2013] [error] [client X.X.X.X] client denied by server configuration: /opt/bitnami/apache2/htdocsindex.html
[Wed Jan 09 03:50:28 2013] [error] [client X.X.X.X] client denied by server configuration: /opt/bitnami/apache2/htdocsfavicon.ico
[Wed Jan 09 03:50:28 2013] [error] [client X.X.X.X] client denied by server configuration: /opt/bitnami/apache2/htdocsfavicon.ico
【问题讨论】:
请ls -l /opt/bitnami/apache2/users
; apache 守护进程的默认用户是 ubuntu 中的 www-data。 www-data 可以读取密码文件吗?
-rw-r--r-- 1 root root 49 Jan 9 02:50 users
组应该有r+w权限吗?
由于文件为root所有且www-data不在root组中,组权限无效。可以肯定的是,su - www-data -c "cat /opt/bitnami/apache2/users"
- 没有错误,你没事。
它要求输入密码,不确定要输入哪个密码...我试了一堆
【参考方案1】:
我会尝试一些改变。
首先,您的第一个 Alias / "/opt/bitnami/apache2/htdocs"
很容易被 DocumentRoot /opt/bitnami/apache2/htdocs
指令替换。
那么你有几个别名,都用于“/”。而不是像 Alias 和 AliasMap 这样的 url-filesystem 映射指令,我会简单地使用 Location 指令进行安全设置。
<Location />
(... Auth basic stuff)
<Location>
通过使用 Location,您可以处理 url 而不是文件系统映射。
【讨论】:
这里的问题是,在用户通过身份验证之前,我希望所有 url 都无法访问...... Location 指令是否使用 Location * 之类的东西来处理这个问题? 是的位置 / 表示 / 下的所有位置。请参阅httpd.apache.org/docs/2.2/fr/mod/core.html#location,位置在目录和文件之后处理,位置作为路径前缀应用。而/是所有路径的路径前缀。 使用位置身份验证后似乎工作得更好一些,但我仍然被带到一个错误页面(内部服务器错误页面)。【参考方案2】:我认为你的问题是两件事之一:
潜在解决方案#1
只是运行 Apache 的用户无权访问 /opt/bitnami/apache2/htdocs
目录。
有关处理“客户端被服务器配置错误拒绝”的更多详细信息,请参阅此页面:http://wiki.apache.org/httpd/ClientDeniedByServerConfiguration
查看/opt/bitnami
目录树上设置了哪些用户/组。确保它们对 Apache 用户友好。
潜在解决方案#2
此外,如果您查看错误消息,则路径在 htdocs 之后缺少“/”。查看路径:
/opt/bitnami/apache2/htdocsindex.html
/opt/bitnami/apache2/htdocsfavicon.ico
我认为您需要在 Alias
行中添加一个斜杠“/”,如下所示:
Alias / "/opt/bitnami/apache2/htdocs/"
【讨论】:
解决方案 #2 似乎有帮助,身份验证有效,但在登录完成后将我重定向到另一个页面。我想我会为此感谢你,因为它确实帮助我更接近我正在寻找的最终解决方案。以上是关于Apache HTTP Basic Auth - 提供用户名和密码后出现 401 错误的主要内容,如果未能解决你的问题,请参考以下文章
CentOS 7 Apache:启用Basic Auth+pam
关于java 应用 对于apache http srever 的Authorization Basic 认证问题
HTTP 基本认证(basic auth)和摘要认证(digest auth)区别