Аутентификация пользователя может быть сделана необходимым условием для доступа к документу или каталогу. Как правило, эта возможность используется для предоставления доступа небольшой группе пользователей. Вот пример разграничения доступа для пользователей:
<Directory "/var/apache/htdocs/internal/accounting"> AuthName "Accounting" AuthType Basic AuthUserFile /etc/apache/http.passwords AuthGroupFile /etc/apache/http.groups Require hdqtrs rec bil l pay Order deny,allow Deny from al l Allow from Limit> </Directory>
Первые две инструкции в данном контейнере Directory называются AuthName и AuthType. AuthName определяет значение области идентификации (authentication realm), которое передается клиенту в заголовке WWW-Authenticate. Область - это группа ресурсов сервера с общими полномочиями доступа. К примеру, каталог /var/apache/htdocs/internal/accounting является единственным элементом области Accounting. Однако области Accounting могут принадлежать и другие документы и каталоги, защищенные паролем. В таком случае пользователь, прошедший аутентификацию в области Accounting, получает доступ ко всем ресурсам этой области.
Инструкция AuthType определяет тип аутентификации, основанной на паролях. Может принимать значение Basic или Digest. Basic предписывает выполнять аутентификацию на основе паролей, передаваемых открытым текстом. Digest предписывает использовать алгоритм Message Digest 5 (MD5). Digest используется редко, отчасти потому, что этот механизм не полностью реализован в некоторых броузерах, но больше потому, что данные, требующие серьезной защиты, лучше защищать при помощи механизма безопасности SSL (Secure Sockets Layer). SSL мы рассмотрим позже, в разделе «Шифрование».
В приведенном примере доступ разрешается, если пользователь принадлежит к указанной группе и предоставил верный пароль. Эти группы и пароли не имеют ничего общего с теми, что используются программой login, но определяются и существуют только в контексте веб-сервера. Файлы, созданные с целью хранения сведений и пользователях и группах, обозначаются при помощи строк AuthUserFile и AuthGroupFile. Добавление паролей в файл паролей веб-сервера выполняется посредством программы htpasswd, поставляемой в составе системы Apache; добавление групп в файл групп может выполняться при помощи любого редактора текстов. Запись файла групп состоит из имени группы, за которым следует двоеточие и список пользователей, входящих в группу. К примеру:
hdqtrs: amanda pat craig kathy
Инструкция Require требует от пользователя ввода веб-имени и веб-пароля. В данном примере доступ разрешается только пользователям, принадлежащим одной из групп hdqtrs, rec, bill или pay, причем пользователь должен ввести верный пароль. Ключевое слово valid-user в строке Require разрешает доступ всем пользователям с верными паролями, а файл групп при этом не используется.
Даже если вы не используете группы пользователей веб-сервера, создавайте строку AuthGroupFile, когда работаете с парольной аутентификацией. Чтобы не создавать пустой файл группы, просто укажите значение /dev/null. Инструкции Order, Deny и Allow в данном примере выполняют те же задачи, что и в предыдущем. Мы предписали выполнять парольную аутентификацию наряду с проверкой узлов. Последнее необязательно. Если удалить из примера инструкции Order, Deny и Allow, доступ к документам будет разрешен с любой системы сети Интернет, при условии, что пользователь указал верное имя и пароль.