Я хочу ограничить доступ к определенным каталогам, обслуживаемым Apache. Я хочу, чтобы клиенту приходилось вводить имя пользователя и пароль, но затем я хочу, чтобы Apache взял имя пользователя и пароль, введенные человеком, и передал их в качестве аргументов скрипту Python, который я написал для аутентификации. Затем, основываясь на выводе указанного скрипта, я хочу, чтобы Apache разрешил или запретил доступ. Это возможно?
2 ответа
Единственный известный мне способ сделать это - использовать mod_auth_external
или mod_python
. Первый позволяет реализовать пользовательские системы аутентификации; последний дает Apache встроенный интерпретатор Python, который можно использовать для написания собственного скрипта аутентификации . Ни стандартные, ни очень популярные модули.
Тем не мение...
проще всего было бы просто заставить вашу систему аутентификации обновить список паролей, который использует Apache. Apache поставляется со всеми инструментами, необходимыми для добавления / обновления / удаления пользователей из файла .htpasswd или .htdigest (это должно быть тривиально, чтобы подключить команды htpasswd
или htdigest
в любую систему управления пользователями).
Или вы можете получить mod_auth
(систему аутентификации Apache по умолчанию) для чтения из базы данных через следующие модули:
mod_auth_dbm
- стандартный модуль, который позволяет использовать семейство предреляционных баз данных dbmmod_auth_mysql
- сторонний модуль, позволяющий использовать базы данных MySQL- Вы также можете быть в состоянии использовать PostgreSQL и другие базы данных SQL с помощью
mod_dbd
иmod_authn_dbd
.
Я бы лично пошел по этому пути, так как он более элегантен, чем дублирование хешей ваших пользовательских паролей (надеюсь, вы сами не храните пароли) в отдельном текстовом файле, и создание новой системы аутентификации похоже на изобретение колеса.
Вы можете использовать .htaccess, чтобы ограничить доступ к определенным каталогам.
http://www.elated.com/articles/password-protecting-your-pages-with-htaccess/
Вам нужно создать файл htpasswd, на который вы ссылаетесь из файла .htaccess
http://www.htaccesstools.com/htpasswd-generator/
Python: кажется, есть библиотека, которая может обрабатывать файлы htpasswd:
http://pacopablo.com/wiki/pacopablo/blog/htpasswd-with-python
Подробнее о python и htpasswd:
http://packages.python.org/passlib/lib/passlib.apache.html
Я не знаком с Python, и я не могу дать вам полное решение. Я думаю, однако, что это возможно, и, вероятно, не слишком сложно, если вы знакомы с Python, с небольшим количеством прибегая к помощи.