Skip to content


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

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

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


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

  1. <Location /database/>
  2.   AuthType Basic
  3.   AuthName "Protected area"
  4.   AuthUserFile /etc/hosting/htpasswd1.conf
  5.   AuthUserFile /etc/hosting/htpasswd2.conf
  6.   Require valid-user
  7.   </Location>

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

  1. <AuthnProviderAlias file userlist1>
  2.   AuthUserFile /etc/hosting/htpasswd1.conf
  3. </AuthnProviderAlias>
  4.  
  5. <AuthnProviderAlias file userlist2>
  6.   AuthUserFile /etc/hosting/htpasswd2.conf
  7. </AuthnProviderAlias>
  8.  
  9. <VirtualHost 10.10.10.10:80>
  10.   ....
  11.   <Location /database/>
  12.     AuthBasicProvider userlist1 userlist2
  13.     AuthType Basic
  14.     AuthName "Protected area"
  15.     Require valid-user
  16.   </Location>
  17. </VirtualHost>

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

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

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

Размещено в категории *nix, Howto, Веб-приложения. Теги: .

Комментариев: 1

Чтобы быть всегда в курсе здесь происходящего, Вы можете подписаться на RSS feed для комментариев на эту заметку.

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

Вы должны войти в аккаунт чтобы иметь возможность оставлять комментарии.