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


0

Eu quero limitar o acesso a certos diretórios servidos pelo Apache. Eu quero que o cliente tenha que digitar um nome de usuário e senha, mas eu quero que o Apache pegue 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?

Respostas:


3

A única maneira que eu conheço para fazer isso é usando 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.

Contudo...

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 para ligar o htpasswd ou htdigest comandos 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, já que é mais elegante do que duplicar seus hashes de senha 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.


mod_auth_external era exatamente o que eu queria. Obrigado!
John Peter Thompson Garcés

se eu tiver um servidor de autenticação separado (OAuth Bearer Token Issuer e Authenticator), então eu acho que devo ir com mod_auth_external. Por favor, corrija-me se eu estiver errado aqui. obrigado
Foyzul Karim

1
@FoyzulKarim Fora das opções na resposta, sim. Mas eu iria primeiro olhar para github.com/pingidentity/mod_auth_openidc para ver se isso se ajustará melhor às suas necessidades.
Lèse majesté

2

Você pode usar o .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 manipular 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 o Python e não posso fornecer 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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.