¿Hacer que Apache llame a un script para probar la autenticación?

¿Hacer que Apache llame a un script para probar la autenticación?

Quiero limitar el acceso a ciertos directorios atendidos por Apache. Quiero que el cliente tenga que escribir un nombre de usuario y una contraseña, pero luego quiero que Apache tome el nombre de usuario y la contraseña que la persona escribió y los pase como argumentos a un script de Python que escribí para realizar la autenticación. Luego, según el resultado de dicho script, quiero que Apache permita o niegue el acceso. es posible?

Respuesta1

La única forma que conozco de hacer esto es usandomod_auth_externalo mod_python. El primero le permite implementar sistemas de autenticación personalizados; este último le da a Apache un intérprete Python incorporado, que puede usarse paraescribir un script de autenticación personalizado. Tampoco lo son los módulos estándar o muy populares.

Sin embargo...

lo más fácil sería simplemente hacer que su sistema de autenticación actualice la lista de contraseñas que utiliza Apache. Apache viene con todas las herramientas que necesita para agregar/actualizar/eliminar usuarios desde un archivo .htpasswd o .htdigest (debería ser trivial conectar los comandos htpasswdo htdigesta cualquier sistema de administración de usuarios).

O, puede hacer que mod_auth(el sistema de autenticación predeterminado de Apache) lea desde una base de datos a través de los siguientes módulos:

Personalmente, seguiría este camino, ya que es más elegante que duplicar los hashes de contraseñas de usuario (con suerte, no estás almacenando las contraseñas) en un archivo de texto separado, y crear un nuevo sistema de autenticación parece reinventar la rueda.

Respuesta2

Puede utilizar .htaccess para limitar el acceso a determinados directorios.

http://www.elated.com/articles/password-protecting-your-pages-with-htaccess/

Debe crear un archivo htpasswd al que haga referencia desde el archivo .htaccess

http://www.htaccesstools.com/htpasswd-generator/

Python: parece haber una biblioteca que puede manejar archivos htpasswd:

http://pacopablo.com/wiki/pacopablo/blog/htpasswd-with-python

Más sobre Python y htpasswd:

http://packages.python.org/passlib/lib/passlib.apache.html

No estoy familiarizado con Python y no puedo ofrecerle una solución completa. Sin embargo, creo que es posible, y probablemente no demasiado complicado, si estás familiarizado con Python y buscas un poco en Google.

información relacionada