Skip to content


Аутентификация в Apache на основе нескольких файлов со списками пользователей

Настройка аутентификации в apache

Настройка аутентификации в apache


Однажды в студёную зимнюю пору возникла у меня необходимость пускать в определенный раздел сайта только тех пользователей, кто успешно прошёл аутентификацию (правильно указал логин и пароль для доступа). Причём списков пользователей было несколько в разных файлах (принципиально важно было заставить апач работать именно с несколькими файлами, так как один из них поддерживался одним товарищем, а другой --- совсем другим и у файлов были разные права доступа). Сначала я попробовал следующее решение "в лоб":

<Location /database/>
  AuthType Basic
  AuthName "Protected area"
  AuthUserFile /etc/hosting/htpasswd1.conf
  AuthUserFile /etc/hosting/htpasswd2.conf
  Require valid-user
</Location>

Но, к моему разочарованию, это не сработало – apache обрабатывал только второй файл (указанный в конфиге последним). А юзеров из первого молча игнорировал. Тогда пришлось искать другое решение и оно таки нашлось:

<AuthnProviderAlias file userlist1>
  AuthUserFile /etc/hosting/htpasswd1.conf
</AuthnProviderAlias>
 
<AuthnProviderAlias file userlist2>
  AuthUserFile /etc/hosting/htpasswd2.conf
</AuthnProviderAlias>
 
<VirtualHost 10.10.10.10:80>
  ....
  <Location /database/>
    AuthBasicProvider userlist1 userlist2
    AuthType Basic
    AuthName "Protected area"
    Require valid-user
  </Location>
</VirtualHost>

Обратите внимание, что директива AuthnProviderAlias находится на самом верхнем уровне вложенности конфига. Т.е. её нельзя использовать внутри секции <VirtualHost> и прочих аналогичных. Такая конфигурация позволит предоставить доступ к URI /database/ для всех пользователей, которые есть ИЛИ в файле /etc/hosting/htpasswd1.conf ИЛИ в файле /etc/hosting/htpasswd2.conf и которые правильно указали свой пароль. На всякий случай напомню, что пользователи и их пароли задаются с помощью утилиты htpasswd, вот так:

$ htpasswd /etc/hosting/htpasswd1.conf avz1
New password: 
Re-type new password: 
Adding password for user avz1

Таким образом мы добавили в файл /etc/hosting/htpasswd1.conf нового пользователя с логином avz1 и паролем, который дважды ввели с клавиатуры при выполнении этой команды. Если требуется автоматизировать этот процесс, то весьма полезной может оказаться опция -b.

Posted in *nix, Howto, Веб-приложения.

Tagged with .


One Response

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. Петровский says

    Ух ты, прикольно. Даже не подозревал, что так можно замутить.

You must be logged in to post a comment.