MySQL авторизация - неплохой вариант, особенно для сайтов, использующих эту БД.
1. Устанавливаем необходимый софт (имеется в виду, что веб-сервер уже есть и настроен):
apt-get install libapache2-mod-auth-mysql
a2enmod auth_mysql
2. Создаем для примера БД:
Порывшись в инете, разобрался, как её настроить и вот шаги, котором следует последовать :)
1. Устанавливаем необходимый софт (имеется в виду, что веб-сервер уже есть и настроен):
apt-get install libapache2-mod-auth-mysql
a2enmod auth_mysql
2. Создаем для примера БД:
mysql -u root -p
mysql> grant all on auth.* to auth_user@localhost identified by '<auth_password>';
mysql> flush privileges;
mysql> create database auth;
mysql> use auth;
mysql> CREATE TABLE `clients` (
`username` varchar(25) NOT NULL default '',
`passwd` varchar(25) NOT NULL default '',
`groups` varchar(25) NOT NULL default '',
PRIMARY KEY (`username`),
KEY `groups` (`groups`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
mysql> INSERT INTO `clients` VALUES ('<username>', '<password>', '<group>');
3. Редактируем файл виртуалхоста (или .htaccess нужной папки), например:
mysql> grant all on auth.* to auth_user@localhost identified by '<auth_password>';
mysql> flush privileges;
mysql> create database auth;
mysql> use auth;
mysql> CREATE TABLE `clients` (
`username` varchar(25) NOT NULL default '',
`passwd` varchar(25) NOT NULL default '',
`groups` varchar(25) NOT NULL default '',
PRIMARY KEY (`username`),
KEY `groups` (`groups`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
mysql> INSERT INTO `clients` VALUES ('<username>', '<password>', '<group>');
3. Редактируем файл виртуалхоста (или .htaccess нужной папки), например:
nano /etc/apache2/sites-available/default
service apache2 restart
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www <Directory /> Options FollowSymLinks AllowOverride All </Directory> <Directory /var/www/> AuthMYSQL on #включает авторизацию по мускулю AuthMySQL_Authoritative on AuthMySQL_DB auth #имя БД, в которой находится наша авторизация AuthMySQL_Host 127.0.0.1 #адрес или имя хоста с мускулем #AuthMySQL_Port 3306 #порт, если отличен от дефолтового #AuthMySQL_Socket <socket> #сокет, если используется AuthMySQL_User auth_user #пользователь БД AuthMySQL_Password <auth_password> #пароль пользователя БД AuthMySQL_Password_Table clients #таблица паролей AuthMySQL_Username_Field username #поле, содержащее имя пользователя AuthMySQL_Password_Field passwd #поле, содержащее праоль пользователя #AuthMySQL_Group_Table clients #поле, содержащее принадлежность к группе AuthMySQL_Empty_Passwords off #запретить пустые пароли Auth_MySQL_Encrypted_Passwords off #если on - указывается, что пароли зашифрованы AuthMySQL_Encryption_Types Plaintext #типа шифрования - может быть Plaintext, Crypt_DES, MySQL. Можно через пробел указывать несколько методов, которые будут использоваться по-очереди AuthBasicAuthoritative Off #Отключить Basic-авторизацию - какойто костыль, без него не работает AuthUserFile /dev/null #типа файл с паролями - тоже костыль Require valid-user #требовать авторизацию. Тут также можно указывать имена групп (несколько - через пробелы): Require group assassins templars .Или конкретных пользователей: Require user leonardo vincent .Это удаобно, если прописывать опции в .htaccess AuthName "Please Auth!" #приветствие AuthType Basic #костыль <Limit GET POST> #ограничения для запросов Require valid-user </Limit> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all AddHandler mod_python .py PythonHandler index </Directory>
service apache2 restart
Идем на страничку http://127.0.0.1 и авторизуемся.
P. S.
1. http://www.cgi101.com/book/ch20/mod_auth_mysql.html - здесь неплохое описание опций.
2. Можно в конфиге апача или модуля прописать параметры подключения к БД - так в некоторых случаях секьюрнее:
P. S.
1. http://www.cgi101.com/book/ch20/mod_auth_mysql.html - здесь неплохое описание опций.
2. Можно в конфиге апача или модуля прописать параметры подключения к БД - так в некоторых случаях секьюрнее:
Auth_MySQL_Info <host> <user> <password> Auth_MySQL_General_DB <database_name>