Listando Usuários no Active Directory com PHP
No programa mostra a conexão, autenticação, busca e listagem dos usuários por departamento no active directory no windows server utilizando php. Lembre-se de utilizar uma conta que tenha permissão de listar os usuários.
1: <?php
2:
3: // Servidor Active Directory
4: $phpAD["ldap_server"] = "ldap://192.168.1.10";
5:
6: // Usuario e senha necessário dominio
7: $phpAD["auth_user"] = "empresausuario";
8: $phpAD["auth_pass"] = "senha";
9:
10: // Unidade organizacional
11: //$phpAD["ldap_dn"] = "OU=Matriz Tecnica,DC=empresa,DC=org, DC=br";//GEO
12: $phpAD["ldap_dn"] = "OU=Matriz,DC=empresa,DC=org, DC=br";
13:
14: // OU padrão
15: $phpAD["ldap_default_ou"] = "Matriz";
16:
17: // Dominio Active directory
18: $phpAD["ad_domain_name"] = "empresa";
19:
20: set_time_limit(0);
21:
22: // Base do dominio para procura.
23: $base_dn = $phpAD["ldap_dn"];
24:
25: // Conectando ao servidor
26: if (!($connect=@ldap_connect($phpAD["ldap_server"])))
27: die("Could not connect to ldap server");
28:
29: // Autenticando
30: if (!($bind=@ldap_bind($connect, $phpAD["auth_user"], $phpAD["auth_pass"])))
31: die("Unable to bind to server");
32:
33: $filtro = "(&(objectClass=user)(objectCategory=person)(displayname=*))";
34:
35: $mostrar = array("displayname","samaccountname","useraccountcontrol","userprincipalname","distinguishedname");
36:
37: // Busca no active directory $busca = ldap_search($ds, $ldap_dn, $filtro/*, $attributes*/);
38: if (!($busca=@ldap_search($connect, $base_dn, $filtro, $mostrar)))
39: die("Não foi possível realizar busca no Active Directory");
40:
41: $info = ldap_get_entries($connect, $busca);
42:
43: //Salva todos os usuarios em um vetor
44: foreach ($info as $Key => $Value )
45: {
46: $Name = $info[$Key]["displayname"][0];
47: $Account = $info[$Key]["samaccountname"][0];
48: $State = $info[$Key]["useraccountcontrol"][0];
49: $Mail = $info[$Key]["userprincipalname"][0];
50: $org = $info[$Key]["distinguishedname"][0];
51:
52: $State = dechex($State);
53: $State = substr($State,-1,1);//verifica contas desabilitadas
54:
55: $Value = $Name."^".$Account."^".$State."^".$Mail."^".$org;
56:
57: if ( $Name != "" && $State != 2)
58: $USERs[]=$Value;
59: }
60: if ( count($USERs) > 0 )
61: sort($USERs);
62:
63: if ( count($USERs) == 0 )
64: {
65: echo "Não foi econtrado nenhum usuário";
66: }
67:
68: //Verifica todos departamentos na OU como financeiro, RH, TI...
69: for ($i=0;$i<=count($USERs)-1;$i++)
70: {
71: $Value = $USERs[$i];
72: $Splitted = explode("^",$Value);
73:
74: $Name = $Splitted[0];
75: $Account = $Splitted[1];
76: $State = $Splitted[2];
77: $Mail = $Splitted[3];
78: $org = $Splitted[4];
79:
80: $org_array = explode(",",$org);
81: $org = substr($org_array[2],3,(strlen($org_array[2])));
82: $temp[$i] = $org;
83:
84: $org2 = array_unique($temp);
85:
86: //Lista os usuarios por departamento
87: foreach( $org2 as $mostra ){
88: echo"<br>".$mostra;
89: for ($i=0;$i<=count($USERs)-1;$i++)
90: {
91: $Value = $USERs[$i];
92: $Splitted = explode("^",$Value);
93:
94: $Name = $Splitted[0];
95: $Account = $Splitted[1];
96: $State = $Splitted[2];
97: $Mail = $Splitted[3];
98: $org = $Splitted[4];
99: $org_array = explode(",",$org);
100: $org = substr($org_array[2],3,(strlen($org_array[2])));
101: $temp[$i] = $org;
102: if ($org == $mostra)
103: echo "<br>--".$Name;
104: }
105: }
106: }
107: ?>