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

0

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

    
por John Peter Thompson Garcés 16.04.2012 / 16:39

2 respostas

3

A única maneira que conheço é usar mod_auth_external ou mod_python . O primeiro permite implementar sistemas de autenticação personalizados; o último dá ao Apache um interpretador Python embutido, que pode ser usado para escrever um script de autenticação personalizado . Também não são módulos padrão ou muito populares.

No entanto ...

O mais fácil seria simplesmente ter seu sistema de autenticação atualizando a lista de senhas que o Apache usa. O Apache vem com todas as ferramentas que você precisa para adicionar / atualizar / excluir usuários de um arquivo .htpasswd ou .htdigest (deve ser trivial colocar os comandos htpasswd ou htdigest em qualquer sistema de gerenciamento de usuários).

Ou , você pode ter mod_auth (sistema de autenticação padrão do Apache) lido de um banco de dados através dos seguintes módulos:

Eu pessoalmente seguiria esse caminho, pois é mais elegante do que duplicar seus hashes de senhas de usuário (espero que você não esteja armazenando as próprias senhas) em um arquivo de texto separado, e criar um novo sistema de autenticação parece reinventar a roda. / p>     

por 16.04.2012 / 17:13
2

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

link

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

link

Python: parece haver uma biblioteca que pode manipular arquivos htpasswd:

link

Mais sobre python e htpasswd:

link

Não estou familiarizado com o Python e não posso oferecer uma solução completa. Eu acho, no entanto, que é possível, e provavelmente não muito complicado se você estiver familiarizado com python, com um pouco de googling.

    
por 16.04.2012 / 17:04