Заставить Apache вызвать скрипт для проверки аутентификации?

Заставить Apache вызвать скрипт для проверки аутентификации?

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

решение1

Единственный известный мне способ сделать это — использовать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, с небольшим гуглением.

Связанный контент