我该如何设置 Joomla 来要求或绕过基于访问者 IP 地址的身份验证?
我想建立一个 Joomla 网站,要求访问者登录,除非他们从特定的 IP 地址或子网访问。
另外,我希望登录基于 LDAP。
我将在我的本地网络上托管 Joomla 网站,并通过带有端口转发功能的路由器公开它。
答案1
我想建立一个 Joomla 网站,要求访问者登录,除非他们从特定的 IP 地址或子网访问。
为 Joomla 创建虚拟主机,如下所示:
<VirtualHost *:80>
ServerName joomla.yourdomain.com
ServerAdmin ...
DocumentRoot /var/www/html/joomla
ErrorLog logs/joomla.error_log
<Directory "/var/www/html/joomla">
Options ...
Order allow,deny
Allow from 192.168.1.0/24
Satisfy Any
</Directory>
</VirtualHost>
另外,我希望登录基于 LDAP。
您可以使用修改 ldap 配置文件,类似这样:
LoadModule authz_ldap_module modules/mod_authz_ldap.so
<IfModule mod_authz_ldap.c>
<Location /var/www/html/joomla>
AuthBasicProvider ldap
AuthzLDAPAuthoritative Off
AuthLDAPURL ldap://IP:3268/dc=domain,dc=com?sAMAccountName
AuthLDAPBindDN cn=binduser,dc=domain,dc=com
AuthLDAPBindPassword secret
AuthType Basic
AuthName "Authorization required"
require valid-user
AuthzLDAPLogLevel debug
</Location>
</IfModule>
使用 LDAP(MS-AD)进行 HTTPS 身份验证是一种选择吗?
是的。
答案2
我不确定这是否是你想要的但是......
另一个选择是更改 .htaccess 文件以允许通过 IP 访问
<Limit GET>
Order Deny,Allow
Deny from all
Allow from 100.100.100.100
</Limit>
可选:您可以添加多个地址,用逗号分隔。
100.100.100.101, 100.100.100.102
答案3
需要查看的 Apache 文档是访问控制(“按主办方”部分), 身份验证、授权和访问控制(‘满足’指令),mod_auth_basic, 和修改 LDAP 服务器。执行所需操作的示例配置是
AuthType Basic
AuthBasicProvider ldap
AuthName "Joomla"
# change the ldap attributes to what matches your environment
AuthLDAPBindDN "uid=example,ou=example,dc=example,dc=com"
AuthLDAPBindPassword example
AuthLDAPURL "ldap://example.com:port/basedn?attribute?scope?filter"
Order allow,deny
# change the ip to match your network that should not have to authenticate
Allow from 10.0.0.0/24
Satisfy any
答案4
您应该将 nginx 设置为代理前端。Nginx 可以使用以下配置指令执行此操作:
auth_basic "Restricted";
auth_basic_user_file htpasswd;
satisfy any;
allow 10.0.0.0/24;
allow 10.1.0.0/24;
allow 10.2.1.1;
deny all;
这样,您可以绕过明确列出的 IP 的身份验证allow
,并让所有其他 IP 的身份验证弹出对话框。