除localhost之外的Apache身份验证

时间:2012-01-13 17:47:02

标签: apache authentication

我需要在网站的公共使用中应用HTTP auth,但我不在我的localhost上应用它。这是我认为应该有效的.htaccess。但它不起作用 - 它仍然要求我输入用户/通行证 我究竟做错了什么?

SetEnvIf Remote_Addr ^127\.0\.0\.1$ develmode
<IfDefine !develmode>
    AuthType Basic
    AuthName "ADMIN"
    AuthUserFile /path/to/.htpasswd
    Require valid-user
</IfDefine>

mod_setenvif当然已启用。

2 个答案:

答案 0 :(得分:26)

您需要查看ordersatisfy个关键字。我网站上的工作示例如下。首先,我们告诉我们接受IP或USER。然后我们定义htpasswd文件路径,并接受该文件中的任何有效用户。最后,我们定义哪些客户端IP地址可以访问我们的网站而不使用auth(我们拒绝所有其他IP,因此他们必须通过htpasswd进行身份验证)。

# permit by USER || IP
Satisfy any
# USER
AuthUserFile /var/www/munin/.htpasswd
AuthGroupFile /dev/null
AuthName "Password Protected Area"
AuthType Basic
require valid-user
# IP
order deny,allow
deny from all
allow from 11.22.33.

答案 1 :(得分:18)

Apache 2.4 中,import java.util.ArrayList; import java.util.List; public class Test { public static void main(String[] args) { List<Integer> a = new ArrayList<Integer>(); List<Integer> b = new ArrayList<Integer>(); List<Integer> three= new ArrayList<Integer>(); a.add(3); a.add(5); a.add(1); a.add(-2); b.add(1); b.add(2); b.add(-4); b.add(3); } } allowdeny不再使用,现在也使用satisfy进行IP地址限制:

require

如果有任何&#34;要求&#34;如果满足指令,则允许该请求。如果您想要两者,请将它们分组到AuthUserFile /path/to/.htpasswd AuthName "Restricted Access" AuthType Basic Require ip 127.0.0.1 Require valid-user 块中。

对于本地访问限制,您可以使用特殊语法<RequireAll>代替Require local

了解详情: http://httpd.apache.org/docs/2.4/mod/mod_authz_core.html#require