Apache2 配置中的动态 AuthName

Apache2 配置中的动态 AuthName

我正在尝试配置 Apache v2.4.7,以在数据库中查找用户是否可以访问特定位置。我设法对一些特定位置执行此操作,但无法对动态位置执行此操作。

因此,这对于两个位置“mydomain.com/foo”和“mydomain.com/bar”有效

<Location /foo>
   AuthName "/foo"
   AuthType Digest    
   Require valid-user
   AuthBasicProvider dbd
   AuthDBDUserRealmQuery "SELECT password FROM Users WHERE login = '%s' AND realm = '%s'"
</Location>

<Location /bar>
   AuthName "/bar"
   AuthType Digest    
   Require valid-user
   AuthBasicProvider dbd
   AuthDBDUserRealmQuery "SELECT password FROM Users WHERE login = '%s' AND realm = '%s'"
 </Location>

如果我的数据库中有领域“/foo”或“/bar”的记录,那么一切都很好。

但是现在,假设我有一千个,并且有些可以随时创建。我尝试了以下解决方案:

<LocationMatch /.*>
   AuthName "%{DOCUMENT_URI}"
   AuthType Digest    
   Require valid-user
   AuthBasicProvider dbd
   AuthDBDUserRealmQuery "SELECT password FROM Users WHERE login = '%s' AND realm = '%s'"
</LocationMatch>

我读 (https://httpd.apache.org/docs/trunk/fr/mod/mod_authn_core.html#authname)AuthName可以动态设置,但是我在错误日志中不断收到以下消息,这意味着该变量没有被实际请求的位置动态替换。

user `firstname.lastname' in realm `%{DOCUMENT_URI}' not found:

我希望得到一些帮助来找出我做错了什么,或者找到另一种方法。

答案1

您期待的功能即将推出Apache 2.5,在 Apache 2.4 中尚不可用。在 Apache <=2.4 中,您只能使用纯字符串作为 AuthName。

相关内容