Page Actions
Wiki Actions
User Actions
Submit This Story

Usando NTLM para autenticação no Apache

Em muitas corporações a base da rede de computadores, de estações de trabalho, roda em Windows e a grande maioria dos funcionários já estão cadastrados na rede, ou seja, possuem usuário e senha no domínio de rede, ou no Active Directory (AD).
Se o usuário já possue uma “conta” (user/pass) na rede corporativa, não faz muito sentido criar outras, como fazem muitas aplicações WEB. Por outro lado, muitas vezes é complicado fazer uma aplicação que usa uma tecnologia não Microsoft usar as credenciais do domínio Windows para autenticar um usuário. Existem várias alternativas, algumas penosas, para se fazer isso no mundo Linux. Uma muito interessante é através do WinBind do Samba, mas seu uso força que o servidor linux faça parte do domínio de rede e que as credenciais do usuário “Administrador” seja utilizada nesse servidor.
Uma outra opção, mais simples, é através do módulo NTLM para Apache, onde o usuário fornece usuário/senha do domínio e essas informações são checadas pelo Apache diretamente no DC (domain controler) sem a necessidade de credenciais de Adminstrator ou inclusão do servidor no domínio.

Instalação

  1. Baixe o fonte do módulo para a versão do seu Apache(1.3 ou 2.x) do site http://modntlm.sourceforge.net/ . No meu caso tentei a versão disponível no CVS mas não funcionou então utilizei essa: http://modntlm.sourceforge.net/mod_ntlm2.tar.gz .
  2. Descompacte o arquivo, compile e instale o módulo.
  3. Resumindo..
wget http://modntlm.sourceforge.net/mod_ntlm2.tar.gz
tar zxfv mod_ntlm2.tar.gz
cd mod_ntlm2
make install
make restart

Se tudo deu certo, o módulo será criado em /usr/lib/httpd/modules/mod_ntlm.so e o arquivo httpd.conf já terá incluido a referência :

LoadModule ntlm_module        /usr/lib/httpd/modules/mod_ntlm.so

Configuração

Defina na configuração do Apache qual recurso deverá ser protegido com a autenticação via NTLM. Ex:

        <Directory "/var/www/html/">
                AuthType NTLM
                AuthName "Site"
                NTLMAuth on
                NTLMDomain GRUPO
                NTLMServer PDC1
                NTLMBackup PDC2
                NTLMAuthoritative off
                require valid-user
                Satisfy all
        </Directory>

Nesse exemplo, o acesso ao diretório /var/www/html/ requer autenticação NTLM no dominio GRUPO, através da consulta das credenciais nos servidores PDC1 ou PDC2, se o primeiro falhar. Mais detalhes das configurações válidas em http://modntlm.sourceforge.net/ .

IMPORTANTE

Garanta que o recurso KeepAlive esteja ativado no Apache para todos os acessos.

Uso com Firefox

Embora o Internet Explorer saiba trabalhar muito bem com o NTLM, já que é uma tecnologia Microsoft, ele não é o único a possibilitar o uso. O Firefox também possui esse recurso. Para garantir compatibilidade com o Firefox, é preciso adicionar o endereço da aplicação nas configurações de todos os usuário. Para fazer isso, digite about:config na barra de endereços do browser, encontre a entrada network.automatic-ntlm-auth.trusted-uris a adicione o endereço do site.

Integrando com a sua aplicação

Os passo acima servem apenas para que o servidor web, no caso o Apache, saiba como consultar a rede Windows sobre as credenciais do usuário. Agora é preciso que sua aplicação Web seja capaz de utilizar as credenciais válidadas pelo web server como seu mecanisco de autenticação. Isso depende muito da arquitetura da aplicação e da linguagem utilizada. Para exemplificar, leia o exemplo de uma aplicação PHP, o DokuWiki, que é utilizado no site que você lê agora, em http://wiki.splitbrain.org/wiki:auth:ntlm .

Qualquer problema, use a discussão abaixo para pedir ajuda… 8-)

 
tips_and_tricks/apache.txt · Última modificação: 2011/12/22 22:50 (edição externa)     Voltar ao topo