Você já tentou mod-auth external , ele permite que você faça o seu mecanismo de autenticação personalizado para o Apache. / p>
Ele dá acesso a variáveis de ambiente, como IP, USER, PASS, etc. Você pode escrever um script em um idioma com o qual está familiarizado e ir buscar os dados de autenticação do seu banco de dados.
O wiki tem alguns exemplos.
Se você criar um script de autenticação personalizado, verifique se ele está bem codificado (em termos de segurança).
O módulo está disponível no CentOS (mod_authnz_external) e no Ubuntu (libapache2-mod-authnz-external)
Aqui está um exemplo básico de configuração do Apache:
LoadModule authnz_external_module modules.d/mod_authnz_external.so
DefineExternalAuth my_auth environment /tmp/auth.sh
<Location />
AuthType Basic
AuthName "My super special access"
AuthBasicProvider external
Require valid-user
AuthExternal my_auth
</Location>
Aqui está o script muito simples que registra o IP no USUÁRIO e na SENHA, e aceita a autenticação somente se o usuário fornecido for 'Tony'.
Neste exemplo específico, o script é salvo em /tmp/auth.sh com o bit executável definido. Você pode fazer o que quiser (filtrar por IP, nome de usuário, etc).
#!/bin/bash
echo $(date) ${IP} >> /tmp/log.txt
echo $(date) ${USER} >> /tmp/log.txt
echo $(date) ${PASS} >> /tmp/log.txt
#Very basic filtering.
if [[ "${USER}" != "Tony" ]]
then
exit 1;
fi