Palavra:   

Revista PHP / PHP

Luiz Martins

Consultor Especialista em Infra-web, especialista em Sistema Operacional Linux, suporte em segurança de redes(Firewall`s de Front-end e Back-end, Proxy, Proxy Reverso, IDS, FTP, VPN), DBA em Mysql Server, desenvolvedor PHP, desenvolvimento de Shell Scripts avançados. Analista Integração de ambientes Linux e Windows. Implementação e suporte de containers JAVA, TomCat, Jboss, WebSphere Application Server.

Consultando usuarios no Active Directory

Comentários no próprio código.

  1. <?php
  2.  
  3. // Variaveis Globais
  4. $ldap_server = "seudominio.com.br"; /*Usamos o nome do dominio ou o nome do Servidor do dominio Casa seja 1 servidor Apenas*/
  5. $dominio = "seudominio\\"; /*Aqui usaremos o nome Netbios do dominio*/
  6.  
  7. // Usuario para autenticacao na Base LDAP
  8. $auth_user = "seudominio\usuario_de_consulta"; /*nome Netbios\usuario*/
  9. $auth_pass = "senha_do_usuario"; /*Senha do usuario do dominio*/
  10.  
  11. // Caminho LDAP do Dominio
  12. $base_dn = "OU=DOMINIO,DC=seudominio,DC=com,DC=br"; /*Nome do Dominio completo + OU principal*/
  13.  
  14. // Caminho LDAP do Grupo para consulta
  15. $filter = "(&(objectClass=user)(memberOf=CN=grupo,OU=ou_do_grupo,OU=ou_principal,DC=seudominio,DC=com,DC=br))";
  16.  
  17. // Funcao para conectar na base LDAP e listas os usuarios de um grupo.
  18. if (($connect=@ldap_connect($ldap_server))) {
  19. if (($bind=@ldap_bind($connect, $auth_user, $auth_pass))) {
  20. if (($search=@ldap_search($connect, $base_dn, $filter))){
  21. $number_returned = ldap_count_entries($connect,$search);
  22. $info = ldap_get_entries($connect, $search);
  23.  
  24. for ($i=0; $i < $info["count"]; $i++){
  25.  
  26. $user_pure = $info[$i]["samaccountname"][0];
  27. $user_up = strtoupper($user_pure);
  28. echo "Ususario - $user_up<br>";
  29.  
  30. }
  31. }
  32. }
  33. }
  34.  
  35. // Fecha a conexao LDAP.
  36. ldap_close($connect);
  37.  
  38.  
  39. ?>
Abs
Luiz Carlos

Opções de Interação

Comentários

Resposta
Por: Luiz Carlos, 30/12/2009   07:58:12
Fernando, sugiro a leitura do artigo abaixo. Trata-se de um artigo que explica em detalhes o funcionamento de um Active Directory.
http://www.learnthat.com/Software/learn/1295/Introduction-to-Active-Directory/
Usuário não faz logon
Por: Marcondes, 29/12/2009   07:48:59
Luiz Carlos,

No meu caso, o usuário não faz logon então sua senha não será passada. Nesse caso, é possível pegar o usuário através do ldap e comparar se este está cadastrado numa lista de usuário com certos níveis de acesso ao sistema?
Erro na autenticação
Por: Leonardo, 06/04/2009   14:20:40
Quando eu tento autenticar um usuário que esteja dentro de uma OU(unidade organizacional) do AD, ele da erro.
Mas os usuários que estão dentro da pasta default "Users", funciona perfeitamente.

Alguem sabe como solucionar este problema?
Resposta
Por: Luiz Carlos, 27/03/2009   10:02:05
Fernando, abaixo uma breve descrição das variáveis:
$ldap_server -> essa variavel deve apontar para o servidor Active Directory, que pode ser preenchida com um nome FQDN ou o IP do servidor, ou seja, será a base onde consultaremos o(s) usuário(s).
$dominio -> essa variável deve conter o nome NETBIOS do domínio que é o nome curto do domínio do seu Active Directory. Suponhamos que seu domínio fosse phpldap.com.br , o nome curto(NETBIOS) para esse domínio seria phpldap que atribuímos a variável ‘$dominio’.
$auth_user -> esse variável deve conter o nome de um usuário existente na base do Active Diretory. Suponhamos que você tenha na sua base o usuário ‘teste’, nesse caso usando o exemplo acima com o nome do domínio phpldap a variável seria preenchida assim ‘phpldap\teste’. Esse usuário serva para se conectar a base de dados.
$auth_pass -> essa variável deve ser preenchida com a senha do usuário teste do Active Directory, conforme exemplo acima.
$base_dn -> usando o exemplo do domínio phpldap.com.br essa variável ficaria da seguinte forma ‘OU=phpldap,DC=phpldap,DC=com,DC=br’.
$filter -> deve ser preenchida com o caminho LDAP completo do grupo no qual você deseja pesquisar os usuários.
Obs: o código acima consulta usuários na base de dados de um servidor Active Directory, e também pode ser adaptado para consultar usuários em uma base de dados OPENLDAP.
Erro
Por: Fernando, 26/03/2009   10:59:00
Dá o seguinte erro: Parse error: syntax error, unexpected T_VARIABLE in D:\www\BOC\TESTE_CODE\usuario.php on line 4

O meu servidor não usua www.dominio.com.br, ele é apenas o nome da maquina e a pasta como http://prcom0264/php/ como faço para configurar ele, sem ser www. e o que seria o $dominio?

Obrigado.