Базовая Apache авторизация

Возникает такая ситуация, когда необходимо защитить директорию сайта, но не закрывать к ней доступ. Для этого можем воспользоваться базовой авторизацией на уровне Apache сервера. При таком выборе защиты директории вам придётся вводить логин и пароль, которые хранятся в файле .htpasswd строкой вида:

логин:хеш пароля

Что такое хеширование можете прочитать на Wikipedia. Для создания хеша пароля воспользуемся одним из сервисов, которых полно на просторах всемирной паутины. Для примера, зададим логин: user, а пароль: 123. С помощью онлайн-сервиса получим строку, которая и будет содержимым файла .htpasswd:

user:$apr1$vVjAFgpw$qhTwubmqi0TgiFhrRnlzS0

Теперь поместим его в ту директорию, доступ к которой будет осуществляться при корректном вводе указанного нами логина и пароля. Здесь стоит также отметить, что файлы, в имени которых первым символом указана точка являются скрытыми и не будут открываться на прямую при обращении к ним в адресной строке браузера. Чтобы базовая авторизация заработала добавьте в файл .htaccess расположенного в необходимой директории следующие строки:

AuthType Basic 
AuthName "Input username and password" 
AuthUserFile file-htpasswd-path 
Require valid-user

Разберём подробнее каждую строчку кода.

Директива AuthType

Определяет тип аутентификации. Принимает значения: Basic, Digest. Различаются надёжностью шифрования передаваемой информации.

Директива AuthName

Задаёт тип подсказки.

Директива Require

Определяет принцип аутентификации. Принимает значения:

  • valid-user — любой пользователь указанный в файле AuthUserFile может успешно пройти авторизацию при верно введённом пароле;
  • user — пользователи указанные через пробел при верно введённом пароле могут пройти авторизацию;
  • group — пользователи входящие в указанные группы при верно введённом пароле могут пройти авторизацию, при этом обязательно указание директивы AuthGroupFile, которая указывает путь к текстовому файлу с группами пользователей.

Пример содержимого файла .htgroup для указания пользователей принадлежащих группе:

group_name: user_1 user_2 user_n

Более подробную информацию о директивах вы можете найти в официальной документации.

Понравилась статья? Поделись: