Desenvolvimento

22 dez, 2016

Autenticação Apache HTTP no .htaccess

Publicidade

Existem vários guias que já descreveram isso, mas eu acho frustrante encontrar um que seja objetivo em escrever o que é preciso para conseguir uma autenticação simples em HTTP com usuário e senha trabalhando somente com código .htaccess.

Então, aqui vai uma versão resumida.

Criar um arquivo htpasswd

Esse é um arquivo simples que armazena os usernames e senhas (criptografadas) dos usuários para quem você quer garantir acesso.

$ htpasswd -c /var/www/vhosts/site.tld/passwd/htaccess.passwd mattias

O código acima vai criar um novo arquivo nesse local e configurar um usuário chamado “mattias”; você será solicitado a colocar a senha (duas vezes).

O parâmetro -c cria um novo arquivo; se você quiser adicionar usuários a um arquivo passwd que já exista, utilize isto:

$ htpasswd /var/www/vhosts/site.tld/passwd/htaccess.passwd jasper

No fim, o arquivo fica parecido com isto:

$ cat /var/www/vhosts/site.tld/passwd/htaccess.passwd
mattias:$apr1$656eUsUz$305AHL.2PAC.U2UTBdlql0

Isso é uma senha criptografada; para redefini-la, execute os comandos acima novamente para o mesmo username, e ele vai sobrescrever a senha.

Se você quiser utilizar o arquivo de senhas acima (porque é rápido copiar e colar): a senha criptografada é “nucleus”,  para que você possa acessar com o usuário mattias e a senha nucleus.

Autenticação HTTP no .htaccess

Agora, depois que você tiver o arquivo, adicione o seguinte item a seu .htaccess. Esse fragmento de código vai funcionar para o Apache 2.2 e 2.4. Certifique-se de mudar o caminho para o local de seu arquivo htpasswd.

$ cat .htaccess
<IfModule mod_authn_file.c>
  # For Apache 2.4 or later
  AuthType Basic
  AuthName "Please provide username and password"
  AuthBasicProvider file
  AuthUserFile "/var/www/vhosts/site.tld/passwd/htaccess.passwd"
  Require valid-user
</IfModule>

<IfModule mod_auth.c>
  # For Apache 2.2 or lower
  AuthType Basic
  AuthName "Please provide username and password"
  AuthUserFile "/var/www/vhosts/site.tld/passwd/htaccess.passwd"
  Require valid-user
</IfModule>

Da próxima vez que você visitar seu site, você provavelmente será solicitado a inserir um usuário e senha HTTP.

***

Mattias Geniar faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: https://ma.ttias.be/apache-http-authentication-htaccess/.