Я хочу ограничить доступ к определенным каталогам, обслуживаемым Apache. Я хочу, чтобы клиенту приходилось вводить имя пользователя и пароль, но затем я хочу, чтобы Apache взял имя пользователя и пароль, введенные человеком, и передал их в качестве аргументов скрипту Python, который я написал для аутентификации. Затем, основываясь на выводе указанного скрипта, я хочу, чтобы Apache разрешил или запретил доступ. Это возможно?

2 ответа2

3

Единственный известный мне способ сделать это - использовать mod_auth_external или mod_python . Первый позволяет реализовать пользовательские системы аутентификации; последний дает Apache встроенный интерпретатор Python, который можно использовать для написания собственного скрипта аутентификации . Ни стандартные, ни очень популярные модули.

Тем не мение...

проще всего было бы просто заставить вашу систему аутентификации обновить список паролей, который использует Apache. Apache поставляется со всеми инструментами, необходимыми для добавления / обновления / удаления пользователей из файла .htpasswd или .htdigest (это должно быть тривиально, чтобы подключить команды htpasswd или htdigest в любую систему управления пользователями).

Или вы можете получить mod_auth (систему аутентификации Apache по умолчанию) для чтения из базы данных через следующие модули:

Я бы лично пошел по этому пути, так как он более элегантен, чем дублирование хешей ваших пользовательских паролей (надеюсь, вы сами не храните пароли) в отдельном текстовом файле, и создание новой системы аутентификации похоже на изобретение колеса.

2

Вы можете использовать .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, с небольшим количеством прибегая к помощи.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .