Fazer o Apache chamar um script para testar a autenticação?

Fazer o Apache chamar um script para testar a autenticação?

Quero limitar o acesso a determinados diretórios servidos pelo Apache. Quero que o cliente digite um nome de usuário e uma senha, mas quero que o Apache pegue o nome de usuário e a senha que a pessoa digitou e os passe como argumentos para um script python que escrevi para fazer a autenticação. Então, com base na saída do referido script, quero que o Apache permita ou negue o acesso. Isso é possível?

Responder1

A única maneira que conheço de fazer isso é usandomod_auth_externalou mod_python. O primeiro permite implementar sistemas de autenticação personalizados; o último fornece ao Apache um interpretador Python incorporado, que pode ser usado paraescreva um script de autenticação personalizado. Nenhum deles são módulos padrão ou muito populares.

No entanto...

o mais fácil seria simplesmente fazer com que seu sistema de autenticação atualizasse a lista de senhas que o Apache usa. O Apache vem com todas as ferramentas necessárias para adicionar/atualizar/excluir usuários de um arquivo .htpasswd ou .htdigest (deve ser trivial conectar os comandos htpasswdou htdigestem qualquer sistema de gerenciamento de usuários).

Ou, você pode fazer com que mod_auth(o sistema de autenticação padrão do Apache) leia um banco de dados por meio dos seguintes módulos:

Pessoalmente, eu seguiria esse caminho, pois é mais elegante do que duplicar os hashes de senha do usuário (espero que você não esteja armazenando as senhas) em um arquivo de texto separado, e criar um novo sistema de autenticação parece reinventar a roda.

Responder2

Você pode usar .htaccess para limitar o acesso a determinados diretórios.

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

Você precisa criar um arquivo htpasswd ao qual você se refere no arquivo .htaccess

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

Python: parece haver uma biblioteca que pode lidar com arquivos htpasswd:

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

Mais sobre python e htpasswd:

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

Não estou familiarizado com python e não posso fornecer uma solução completa. No entanto, acho que é possível e provavelmente não muito complicado se você estiver familiarizado com python, pesquisando um pouco no Google.

informação relacionada