Basic auth с помошью .htaccess
Иногда надо быстро временно закрыть доступ к сайту, а писать красивые вещи, перетаскивать проект в другой каталог — лень. А иногда просто надо сделать закрытую область. Для этого в апаче можно легко с помощью .htaccess файла устроить простую авторизацию. Для этого понадобится
- полный путь к проекту, например /home/data/virt15566/www.mysite.com/
- htpasswd программка, лежащая в апаче
Шаг 1 — заливаем в корень сайта .htaccess файл с таким содержанием;
AuthType Basic AuthName "Restricted area" AuthUserFile /home/data/virt15566/www.mysite.com/.htpasswd Require valid-user
Шаг 2 — генерируем содержание файла с помощью программки
c:\>cd C:\Program Files\EasyPHP 3.0\apache\bin C:\Program Files\EasyPHP 3.0\apache\bin>htpasswd -nmb user pass>.htpasswd
В итоге получаем .htpasswd файл вида:
user:$apr1$r2zs21ge$V1CxOLm7r88XNYE0aaJKm.
Опции для генерирования пароля:
OPTIONS
- -b Use batch mode; i.e., get the password from the command line rather than prompting for it. This option should be used with extreme care, since the password is clearly visible on the command line.
- -c Create the passwdfile. If passwdfile already exists, it is rewritten and truncated. This option cannot be com- bined with the -n option.
- -n Display the results on standard output rather than updating a file. This is useful for generating pass- word records acceptable to Apache for inclusion in non-text data stores. This option changes the syntax of the command line, since the passwdfile argument (usually the first one) is omitted. It cannot be com- bined with the -c option.
- -m Use Apache's modified MD5 algorithm for passwords. Passwords encrypted with this algorithm are transport- able to any platform (Windows, Unix, BeOS, et cetera) running Apache 1.3.9 or later. On Windows and TPF, this flag is the default.
- -d Use crypt() encryption for passwords. The default on all platforms but Windows and TPF. Though possibly sup- ported by htpasswd on all platforms, it is not sup- ported by the httpd server on Windows and TPF.
- -s Use SHA encryption for passwords. Faciliates migration from/to Netscape servers using the LDAP Directory Interchange Format (ldif).
- -p Use plaintext passwords. Though htpasswd will support creation on all platforms, the httpd deamon will only accept plain text passwords on Windows and TPF.
- passwdfile Name of the file to contain the user name and password. If -c is given, this file is created if it does not already exist, or rewritten and truncated if it does exist.
- username The username to create or update in passwdfile. If username does not exist in this file, an entry is added. If it does exist, the password is changed.
- password The plaintext password to be encrypted and stored in the file. Only used with the -b flag.
Официальный мануал — Manual Page: htpasswd
Еще можно объединить пользователей в группы и давать доступ не конкретным логинам, а группам. Это можно сделать с помощью директивы AuthGroupFile:
AuthGroupFile /path/to/file/with/groups
В файле /path/to/file/with/groups создаем группы примерно так: group1: test1 test5 group2: test2 test4 group3: test1 test3
Соответственно, директиву require будем использовать так :
require group group3
Механизмы ограничения доступа, которые реализованы в Apache, позволяют очень гибко управлять правами для пользователей и групп, что является очень важной возможностью. Если углубиться в изучение предмета, Вы сможете узнать и то, что логины и пароли, используемые для авторизации, можно хранить не только в файлах, но и в простейших базах данных формата BerkeleyDB — почитайте документацию по директиве AuthDBGroupFile. Также для хранения данных авторизации можно использовать практически любую СУБД (MySQL или PostgreSQL), но это уже выходит за рамки данного пункта.
Онлайн генератор: Htpasswd Generator
И вообще хороший сайт — htaccesstools.com