Autenticação no Apache com MySQL

Publicado por Esdras La-Roque em 16/10/2010

[ Hits: 9.822 ]

 


Autenticação no Apache com MySQL



Você que precisa fazer o controle de diretórios de publicação do seu servidor web Apache e não quer criar um arquivo separado para isso. Você que já tem uma base de dados no MySQL, de usuários que são autenticados em outro sistema e quer aproveitar esta mesma base para o Apache. Pois bem, aqui veremos como se faz isso usando o mod_auth_mysql do Apache. Simples e rápido.

Usaremos a distribuição Debian, porém a filosofia vale para todas as distribuições que suportam o Apache, bastando você fazer o download do fonte, compilar e entender como o Apache está organizado em seu sistema.

Baixe o fonte em: http://sourceforge.net/projects/mod-auth-mysql/

1. Instalação do módulo:

No Debian, usamos o comando apt-get para instalar:

# apt-get install libapache2-mod-auth-mysql

2. Habilitando o módulo no Apache:

O Debian vem com um script que facilita o processo de habilitar módulos no Apache da maneira como ele é organizado em seu diretório de configuração. O a2enmod, que significa "apache2 enable module". Usamos então o comando:

# a2enmod auth_mysql

Para verificar se tudo ocorreu bem, você pode confirmar se ele criou o arquivo "auth_mysql.load" dentro do diretório "/etc/apache2/mods-available/" e um link simbólico com o mesmo nome no diretório "/etc/apache2/mods-enabled/".

O Apache lê e inclui no apache2.conf, todos os arquivos do diretório "/mods-enabled/" que terminam com a extensão ".conf" e ".load". No nosso caso, somente o arquivo "auth_mysql.load" interessa.

Verificando o conteúdo do arquivo:

# cat /etc/apache2/mods-enabled/auth_mysql.load

Obtemos a saída:

LoadModule auth_mysql_module /usr/lib/apache2/modules/mod_auth_mysql.so

Que é apenas o módulo auth_mysql_module sendo carregado no arquivo de configuração do Apache.

3. Configurando o Apache para o banco MySQL:

Edite o arquivo httpd.conf:

# mcedit /etc/apache2/httpd.conf

Acrescente a linha para comunicação com o banco:

Auth_MySQL_Info localhost UsuarioDoBanco SenhaDoUsuarioDoBanco

Obs.: localhost = Esse parâmetro deve ser onde está seu banco, se não estiver na mesma máquina, coloque o caminho da rede.

Tudo certo, agora precisamos fazer o Apache ler as configurações novas. Use o comando:

# invoke-rc.d apache2 reload

4. Protegendo o diretório web com .htaccess:

Usando o diretório "/var/www/site/dir_protegido" como exemplo, criamos um arquivo .htaccess dentro dele:

# mcedit /var/www/site/dir_protegido/.htaccess

Dentro deste arquivo incluímos as seguintes configurações:

AuthName                     "Area restrita. Identifique-se"
AuthType                     Basic
AuthUserFile                 /dev/null
AuthBasicAuthoritative       Off

Auth_MYSQL                   On
Auth_MySQL_Authoritative     On
Auth_MySQL_DB                NomeBancoMysql
Auth_MySQL_Password_Table    TABELA_SENHA
Auth_MySQL_Username_Field    CAMPO_USUARIO
Auth_MySQL_Password_Field    CAMPO_SENHA
Auth_MySQL_Encryption_Types  TIPO_DE_CRIPTOGRAFIA
Auth_MySQL_Empty_Passwords   Off

Require valid-user

Explicando alguns campos:
  • Auth_MySQL_DB -> É o campo que você informa o nome do seu banco de dados lá do MySQL
  • Auth_MySQL_Password_Table -> A tabela dentro do banco de dados onde contém LOGIN e SENHA
  • Auth_MySQL_Username_Field -> O campo da tabela que contem o LOGIN do usuário
  • Auth_MySQL_Password_Field -> O campo da tabela que contem a SENHA do usuário
  • Auth_MySQL_Encryption_Types -> Quais os tipos de criptografia que ele aceita no campo SENHA.

Os tipos de Encryption_Types são:
  • Plaintext -> Texto plano (sem criptografia)
  • Crypt_DES -> Senha criptografada com a função ENCRYPT()
  • MySQL -> Senha criptografada com a função PASSWORD()

Pronto! Agora você já pode acessar o diretório e fazer o teste.

http://meusite/site/dir_protegido

Existem outras opções interessantes, leia na fonte da pesquisa.

Espero ter ajudado!

Fonte: http://www.cgi101.com/book/ch20/mod_auth_mysql.html

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Instalação do Oracle 11g R 2 no Slackware 13.1

Baixe já sua Revista Fedora!

Servidor Multimídia Ubuntu Server com MPD - Media Player Daemon

Script em Python - Verificando se um site está infectado

Comandos aceitos no Basic Linux

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts