Autenticação no Apache com MySQL

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

[ Hits: 9.821 ]

 


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

Como atualizar seu Ubuntu para 14.10 ou superior

Webacula - Bacula Backup Server 7 no CentOS 7

Configurar LILO facilmente

Programa de Educação em Software Livre (PESL)

Instalando o software de visualização 2-D e 3-D VisIt no Ubuntu-8.04

  

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