我正在考虑运行一项外部服务,供客户在其办公室远程工作时在我的办公室使用。
假设:我的办公室 IP 和客户办公室 IP 都是静态的。
我希望允许我的客户访问某项服务,例如 HTTP Basic Auth 安全管理应用程序。
是否有办法在 Apache Basic Auth 或其他方式中创建基于 User @ IP 的限制?
我想:
- 我@我的办公室
- 我@my_home
- 客户1@他们的办公室1
- 客户2@他们的办公室2
为了测试,我尝试了以下代码:
<Location />
Satisfy All
AuthType Basic
AuthName "Authorisation"
AuthUserFile /etc/apache2/passwd
Order deny,allow
Deny from all
Allow from 10.0.0.1/32
Require user me
Order deny,allow
Deny from all
Allow from 10.0.0.2/32
Require user client1
</Location>
- 使用 [ 进行测试[电子邮件保护]]允许访问,成功。
- 使用 [ 进行测试[电子邮件保护]] 允许访问,失败。
- 使用 [ 进行测试[电子邮件保护]] 不允许访问,成功(client2 在 htpasswd 文件中,但未在需要用户中指定)。
是否有已知的方法可以使用 Apache Basic Auth 来执行此操作?
另外,当来自未知 IP 的用户/密码成功时,是否可以要求 Apache 再次请求用户详细信息,而不是收到“禁止”信息?
答案1
如果您使用的是 Apache httpd 2.4,则可以使用新的 , 语法来实现这一点。
<RequireAny>
<RequireAll>
Require IP 10.0.0.1/32
Require user me
</RequireAll>
<RequireAll>
Require IP 10.0.0.2/32
Require user client1
</RequireAll>
</RequireAny>
在 2.4 之前的版本中,如果没有自定义身份验证处理程序,这种事情会非常困难。