Autenticação de usuário em Servidores Windows via função ldap do PHP

junho 11th, 2008

Este post é direcionado ao desenvolvedores em php que desejam implementar acesso direto aos servidores Windows via Active Directory (AD).

Utilizaremos a função do php inerentes ao protocolo LDAP, então: vamos entender melhor.

O que é o LDAP?
O Lightweight Directory Access Protocol (LDAP) é um protocolo para acesso e modificação de informações de diretórios através da rede.
O LDAP permite que você localize pessoas, organizações, e outros recursos tais como arquivos e dispositivos na rede, seja na Internet ou numa Intranet.

Para entendermos melhor podemos tomar como comparação os programas de banco de dados. O MySQL, MSSQL Server e Oracle dentre tantos outros são SGBDs com características e definições próprias,
mas para qualquer um a linguagem universal de comunicação e acesso a dados é o SQL. O LDAP nada mais é, do que a linguagem de comunicação entre qualquer aplicação com o Active Directory (AD).

Mais informações sobre o LDAP:
- LDAP Zone http://www.ldapzone.com/
- ldapman.org http://www.ldapman.org/ (apresenta alguns bons artigos introdutórios).
- The LDAP Schema Repository http://ldap.akbkhome.com/ (esse é indispensável).

Isto depende muito do cenário tecnológico no qual que você se encontra:
- O primeiro requisito mínimo indispensável para que você possa desfrutar desta tecnologia, é ter acesso a um ambiente que conte com algum servidor da plataforma WINDOWS que ofereça o recurso do AD (Active Directory).
- O segundo requisito é você entender a estrutura do AD de seu domínio. Se a empresa no qual trabalho tem uma árvore de AD muito vasta e complexa, contando com muitos usuáios subdivididos em vários domínios e em suas respectivas Ous (Organizations Units). Se você não entende muito bem essa linguagem, recomendo que pesquise informações sobre como funciona o AD antes de prosseguir, abaixo seguem link de sites que podem ajudar no processo de aprendizado sobre o AD:

- http://www.microsoft.com/brasil/technet/centralwindows/centromigracao/activedirectory/gerenciando.mspx
- http://support.microsoft.com/default.aspx?scid=kb;en-us;325284

Agora que já conhece o PHP, LDAP e o AD, você tem respaldo suficiente para analisar (tomando como base o contexto no qual sua empresa ou cliente esta inserido) para avaliar se esta é a melhor solução a se adequar ao seu caso.
Lembre-se cada caso é um caso, e por isso devemos analisar cuidadosamente todos os casos antes de definir qual o melhor método de autenticação para nossa(s) aplicação(ções).

Agora podemos começar as configurações do php e, se necessário: o servidor também, com adição com cópias de dll’s.

Servidor:
Precisa verificar se há três dll na pasta system32, caso não localize-as e faça uma cópia dessas para a pasta em questão: system32.
libsasl.dll
libeay32.dll
ssleay32.dll
Depois disso reinicie o servidor.

PHP:
Para poder habilitar o suporte ao LDAP em um ambiente com Apache/PHP é necessário seguir os seguintes passos:
- Abrir o arquivo php.ini e descomentar a linha:
;extension=php_ldap.dll

- Em seguida restartar o serviço do Apache

Testando a conexão:

Acessando o AD com PHP
Primeiro para acessar um servidor AD devemos indicar ao PHP qual o servidor queremos conectar e criar uma conexão, para isso usamos a função:
ldap_connect(”servidor”);

O uso desta função é bem simples, abaixo segue um exemplo:

<?php
if (!($conexao = @ldap_connect(”127.0.0.1″))) {
die(”Não foi possével se conectar com o servidor de AD”);
} else {
echo “Conectado com sucesso !!!”;
}
?>

No exemplo acima $connect é a variável que irá receber o ponteiro da conexão caso o PHP consiga estabelecer uma conexão com o AD. Como pode ter observado “127.0.0.1″ é o IP do servidor, mas também poderíamos se comunicar com o servidor AD pelo nome sem problemas.

<?php
if (!($conexao = @ldap_connect(”localhost”))) {
die(”Não foi possével se conectar com o servidor de AD”);
} else {
echo “Conectado com sucesso !!!”;
}
?>

OBS: Não se esqueça que o parâmetro de connect(); tem de ser uma string.

Agora que já conectamos ao servidor é necessário efetuarmos a autenticação com o mesmo, para isso o php tem a função:

ldap_bind($connect, $user, $password);

Exemplo:

<?php
if (!($conexao = @ldap_connect(”localhost”))) {
die(”Não foi possível se conectar com o servidor de AD”);
} else {
echo “Conectado com sucesso !!!<br>”;
}

if (!($bind = @ldap_bind($conexao, $usuario, $senha))) {
//se não validar
echo “Usuário ou senha incorretos !!!”;
} else {
//se validar
echo “Usuário autenticado !!!”;
}
?>

Após ter conectado com o servidor o ponteiro para esta conexão é armazenado na variável $connect que é passado para a função ldap_bind();

Os outros dois parâmetros desta função são um usuário e uma senha válidos no AD. Uma observação importante é que usuário na verdade é composta da seguinte forma: “DOMINIO\USUARIO”

Caso o domínio da minha empresa seja “´portalwepe.com” e eu queira autenticar o usuário “evaldo” o script ficaria da seguinte forma:

<?php
if (!($conexao = @ldap_connect(”localhost”))) {
die(”Não foi possível se conectar com o servidor de AD”);
} else {
echo “Conectado com sucesso !!!<br>”;
}

if (!($bind = @ldap_bind($conexao, “portalwebpe.com\evaldo”, $senha))) {
//se não validar
echo “Usuário ou senha incorretos !!!”;
} else {
//se validar
echo “Usuário autenticado !!!”;
}
?>

Windows XP com novo “Service Pack”.

maio 13th, 2008

Já está disponível desde 06/05/2008 o novo SP3, houve uma grande expectativa para seu lançamento. Nele não possui a migração para o Internet Explorer 7, mas vem com as atualizações do I.E. 6 e I.E. 7 relacionados a compatibilidade com diversos sites; outro detalhe é a falta da NAP (Proteção de Acesso à Rede) para ajudar nas organizações que usam o Windows XP isso para aproveitar os novos recursos do Windows Server 2008.

Para baixá-lo, em Português, clique AQUI; (302 Mb)
Para baixá-lo, em Inglês, clique AQUI; (316 Mb)

Desde fica o alerta:
Alguns PCs baseados no AMD, após atualizar o Windows XP com o SP3 ficam em loop de reboot; segundo Jesper Johansson, um antigo Gestor de Programas para Política de Segurança da Microsoft, postou no Forum de Apoio da Microsoft que já estam verificando tal problemática, que se mostra nos PCs vendidos pela Hewlett-Packard. “O problema é que a HP, aparentemente, juntamente com outros OEMs, utiliza a mesma imagem para computadores baseados tanto para Intel como para AMD”, disse Johansson.
Outra forma de se mostrar: “Como a imagem é igual para ambos os Intel e AMD, só que os Intel usa o intelppm.sys e o amdk8.sys. Esses drivers fornecem gestão de energia em computadores.” Isso faz gerar incompatibilidades causando “o grande problema”, disse Johansson.

HP LaserJet 1200 não imprime mais de uma cópia no Windows Vista

maio 5th, 2008

Foi verificado que a impressora HP LaserJet 1200 não imprime mais de uma cópia no Windows Vista, mas para resolver isso você deve configurar para que a mesma utilize o driver da HP LaserJet 1100.

Impressora Lexmark z53 no Windows Vista

maio 5th, 2008

A Lexmark z53 até esta data ainda não possui driver para o Windows Vista; você deve estar se perguntando: E aí, vou perder a impressora? A resposta é não!
Instale a mesma com o driver da Lexmark z52 que funciona normalmente, é o úlltimo dirver da lista das impressoras Lexmark no S.O.

Registro de domínios .com.br também com CPF

abril 23rd, 2008

O Comitê Gestor da Internet no Brasil anunciou esta semana uma novidade que facilitará bastante a vida de quem ainda não possui seu domínio .com.br. A partir do dia 01/05/2008, será possível adquirir domínios apenas com utilização do CPF, sem necessidade do CPNJ que atualmente é exigido.

Segue, na integra, a notificação da novidade:

Prezado(a) Usuário(a),COM.BR com CPF
————–
Por decisão do CGI.br, o domínio COM.BR, destinado a atividades comerciais genéricas na Internet, também poderá ser registrado sob um CPF. Ou seja, pessoas naturais com atividades comerciais e afins poderão registrar domínios COM.BR. Esta modificação terá efeito a partir do dia 01/05/2008. Inicialmente, somente o domínio COM.BR estará disponível nesta nova categoria, genérica, que permite registro tanto com CNPJ quanto com CPF. Lembramos que, para manter a transparência do registro de domínios .br, pessoas físicas responsáveis por domínios COM.BR estarão sujeitas aos mesmos procedimentos das entidades cadastradas previamente.
Verificação DNS
—————
O Registro.br monitora constantemente o correto funcionamento de seus
domínios. Fique atento aos avisos de problemas DNS e siga nossas
recomendações para evitar problemas aos usuários de seus sítios.

Agradecemos a atenção,
Registro.br

http://registro.br/

Maiores informações em http://www.cgi.br/ .