0

Is there any way to dynamically determine which htpasswd file to use at runtime? For example, the following (which does not work, just an example) inside a VirtualHost context:

RewriteEngine on
RewriteMap htpasswdfiles txt:/srv/htpasswdfiles/htpasswdfiles.map
RewriteCond %{HTTP_HOST} ^(.*)$
RewriteRule .* - [E=PASSWD_FILE:${htpasswdfiles:%1},L]

<Directory /some/path>
    AuthType Basic
    AuthName "Restricted Access"
    AuthUserFile $PASSWD_FILE
    Require valid-user
</Directory>

I know the above example doesn't work, but i'm not sure if there's a different way to use environment variables like this... If not, i don't know if there would be any other method to choose the htpasswd file dynamically at runtime. htpasswdfiles.map would be a map containing domains on the left and the appropriate htpasswd file paths on the right.

John Gardeniers
  • 27,458
  • 12
  • 55
  • 109
roirodriguez
  • 163
  • 1
  • 7

3 Answers3

1

I used to setup dynamic basic auth using mod_perl with no htpasswd files at all, there was a handler declared in Apache configs and Perl handled the rest. But this is probably not what you want (mod_perl is not commonly used these days).

Alex
  • 7,939
  • 6
  • 38
  • 52
1

Solution 1

Just point your Apache-configuration to a flat file and have a script outside Apache control the content.

Solution 2

Use LDAP for authentication instead of looking up entries in a flat file.

pkhamre
  • 6,120
  • 3
  • 17
  • 27
  • If somebody can tell appart from the solutions (part 2 of the question) if i can or cannot use environment variables into httpd.conf (part 1 of the question, some references if possible) i'll mark that one as the correct answer... Thanks you all! – roirodriguez Aug 24 '12 at 10:01
0

Since rewriting and authentication have absolutely nothing in common, this does not work.

WHY do you need to "choose the htpasswd file dynamically"?

adaptr
  • 16,576
  • 23
  • 34
  • Because i'm lazy and i don't want to add a VirtualHost each time a user/domain gets added to the server :) I've found mod_perl so i know i can dynamically generate my configuration, which would solve my issue, but i didn't found a real answer to what i'm asking in apache docs, so i'm just asking... – roirodriguez Aug 24 '12 at 09:19
  • I know this doesn't work, just asking if any other method and if not why. Thanks for your answer! – roirodriguez Aug 24 '12 at 09:21
  • mod_perl offers no support whatsoever for "dynamically generating your configuration"; there is such a thing, called mod_macro, but it is not officially supported. – adaptr Aug 24 '12 at 10:14
  • http://ubuntuforums.org/archive/index.php/t-1662752.html, for example... Haven't tried, but found a lot of links with that usage. – roirodriguez Aug 24 '12 at 10:16
  • ..yeah, that is by definition not dynamic, as it requires a reload to take effect. – adaptr Aug 24 '12 at 10:34