SdevLab – Tutorial | Como conectar no servidor LDAP em PHP

Eae galera,

Para suprir mais uma das necessidades do meu estágio, segue um post bem legal sobre LDAP.

Como conectar no servidor LDAP em PHP

O LDAP (Lightweight Directory Access Protocol) é um protocolo de acesso à diretórios. Estes diretórios são utilizados para armazenar informações de usuários de uma rede como endereço de email, rotas de email, listas de contato entre outras (utilizando para estas funções o protocolo TCP/IP).

Você pode me perguntar se o LDAP é um banco de dados, e se você já utiliza um banco como Oracle ou MySql, pode chegar a pensar que este servidor é inútil. Se fosse este o caso, eu responderia que suas perguntas são pertinentes mas que você está um pouco enganado porque o LDAP é um tipo de banco de dados, porém não relacional.

O LDAP é muito utilizado em redes corporativas para armazenar informações como por exemplo nomes de usuário e email de funcionários. Imagine que você mantenha um banco com estas informações (para consultas em outros sistemas) e o Active Directory (AD) da Microsoft para fazer o controle de usuários de sua empresa. Quando você precisar mudar um nome de usuário, ou mesmo adicionar um novo, você vai ter que alterar seu AD e também seu banco. Se você utilizasse o LDAP para autenticar seus usuários, somente o AD seria suficiente, tornando desnecessário a manutenção de pelo menos uma tabela do banco.
Agora que já temos uma base, outra pergunta pode surgir, Quando devemos usar o LDAP? Para esta pergunta, a resposta seria: o LDAP é otimizado para consultas, por isso, ele não é “bom” em armazenar informações que são modificadas com muita frequência.  Portanto, informações específicas como por exemplo o perfil do usuário, não são a praia deste servidor.

A estrutura de uma árvore de diretórios LDAP

O LDAP armazena os dados de forma hierárquica, de forma semelhante ao UNIX. A estrutura organizada que o LDAP utiliza é a estrutura em árvore. Uma estrutura de árvore é uma forma organizada de armazenar dados, que serve entre outras coisas para delegar autoridades para um ou mais grupos de usuários, replicação de dados, segurança de acesso, escalabilidade.

Para mais informações sobre a estrutura do LDAP, ver este link > ldapman.org – Directory Tree Design.

Como conectar no servidor?

Agora que eu já expliquei (pelo menos tentei, hehehe) o que é e para que serve o LDAP, vou mostrar uma função que ensina como conectar neste servidor com PHP:


<?php
if (!($connect = @ldap_connect('ldap://ipdoservidor:porta'))) {
die("Não foi possível se conectar com o servidor AD");
} else {
echo "Conectado com sucesso !!!";
}
?>

OBS: habilitar a extensão do LDAP no PHP, para isto descomente (remova o ponto-e-virgula) desta linha no seu servidor web (reinicie o servidor em seguida):

;extension=php_ldap.dll

Veja que esta conexão é o que existe de mais simples, uma requisição de login anônimo é enviada ao servidor, caso o servidor responda, uma mensagem de conexão bem sucedida é apresentada, caso contrario uma mensagem de erro é exibida ao usuário.

Para autenticar um usuário:

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

É isto, qualquer coisa, deixe um comentário!
att
sanoj
😉

9 comentários sobre “SdevLab – Tutorial | Como conectar no servidor LDAP em PHP

    • Essa função deverá ficar dentro de um arquivo PHP qualquer em seu servidor.
      No meu caso coloquei ele dentro da pasta www do WAMP server em um arquivo chamado autenticacao.php, mandei rodar o script de acordo com as configurações do servidor da empresa.

  1. Cara, esta função vai onde seria feita a autenticação do login…..eu tb não tenho muita experiencia em ldap, mas com o que eu sabia de php deu pra eu me virar!

  2. Opa, estou precisando algo similar, precisaria disponibilizar em uma interface web, a partir de um servidor apache/linux a criação e alteração, alteração de usuários de um servidor AD (windows server 2008), você conhece alguma forma de fazer isso?

    • Cara, até hoje eu só precisei fazer autenticação mesmo, isto que você está querendo eu nunca tentei, mas é possivel. Teria que dar uma pesquisada mesmo…
      vlw

    • oi john, na verdade vc não coloca, você descomenta esta linha (removendo o ponto e vírgula ; ) do arquivo php.ini do seu servidor web.
      Tenta e me fala!
      vlw!

Deixe um comentário