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. Ух ты, прикольно. Даже не подозревал, что так можно замутить.

Some HTML is OK

(required)

(required, but never shared)

, или ответить через trackback.

Страница 1 из 11