{"id":98,"date":"2013-02-18T19:57:00","date_gmt":"2013-02-18T22:57:00","guid":{"rendered":"http:\/\/helbertt.16mb.com\/site\/index.php\/2013\/02\/18\/listando-usuarios-no-active-directory-com-php\/"},"modified":"2013-02-18T19:57:00","modified_gmt":"2013-02-18T22:57:00","slug":"listando-usuarios-no-active-directory-com-php","status":"publish","type":"post","link":"https:\/\/helbertt.xyz\/site\/listando-usuarios-no-active-directory-com-php\/","title":{"rendered":"Listando Usu\u00e1rios no Active Directory com PHP"},"content":{"rendered":"<p>No programa mostra a conex\u00e3o, autentica\u00e7\u00e3o, busca e listagem dos usu\u00e1rios por departamento no active directory no windows server utilizando php. Lembre-se de utilizar uma conta que tenha permiss\u00e3o de listar os usu\u00e1rios.   <\/p>\n<p><\/p>\n<pre><code>1:  &lt;?php  <br \/>2:     <br \/>3:   \/\/ Servidor Active Directory  <br \/>4:   $phpAD[\"ldap_server\"] = \"ldap:\/\/192.168.1.10\";  <br \/>5:     <br \/>6:   \/\/ Usuario e senha necess\u00e1rio dominio  <br \/>7:   $phpAD[\"auth_user\"] = \"empresausuario\";  <br \/>8:   $phpAD[\"auth_pass\"] = \"senha\";  <br \/>9:     <br \/>10:   \/\/ Unidade organizacional  <br \/>11:   \/\/$phpAD[\"ldap_dn\"] = \"OU=Matriz Tecnica,DC=empresa,DC=org, DC=br\";\/\/GEO  <br \/>12:   $phpAD[\"ldap_dn\"] = \"OU=Matriz,DC=empresa,DC=org, DC=br\";  <br \/>13:     <br \/>14:   \/\/ OU padr\u00e3o  <br \/>15:   $phpAD[\"ldap_default_ou\"] = \"Matriz\";  <br \/>16:     <br \/>17:   \/\/ Dominio Active directory  <br \/>18:   $phpAD[\"ad_domain_name\"] = \"empresa\";  <br \/>19:     <br \/>20:   set_time_limit(0);  <br \/>21:     <br \/>22:   \/\/ Base do dominio para procura.  <br \/>23:   $base_dn = $phpAD[\"ldap_dn\"];  <br \/>24:     <br \/>25:   \/\/ Conectando ao servidor  <br \/>26:   if (!($connect=@ldap_connect($phpAD[\"ldap_server\"])))  <br \/>27:   die(\"Could not connect to ldap server\");  <br \/>28:     <br \/>29:   \/\/ Autenticando  <br \/>30:   if (!($bind=@ldap_bind($connect, $phpAD[\"auth_user\"], $phpAD[\"auth_pass\"])))  <br \/>31:   die(\"Unable to bind to server\");  <br \/>32:     <br \/>33:   $filtro = \"(&amp;(objectClass=user)(objectCategory=person)(displayname=*))\";  <br \/>34:     <br \/>35:   $mostrar = array(\"displayname\",\"samaccountname\",\"useraccountcontrol\",\"userprincipalname\",\"distinguishedname\");  <br \/>36:     <br \/>37:   \/\/ Busca no active directory $busca = ldap_search($ds, $ldap_dn, $filtro\/*, $attributes*\/);  <br \/>38:   if (!($busca=@ldap_search($connect, $base_dn, $filtro, $mostrar)))  <br \/>39:   die(\"N\u00e3o foi poss\u00edvel realizar busca no Active Directory\");  <br \/>40:     <br \/>41:  $info = ldap_get_entries($connect, $busca);  <br \/>42:     <br \/>43:  \/\/Salva todos os usuarios em um vetor  <br \/>44:   foreach ($info as $Key =&gt; $Value )  <br \/>45:   {  <br \/>46:    $Name     = $info[$Key][\"displayname\"][0];  <br \/>47:    $Account  = $info[$Key][\"samaccountname\"][0];  <br \/>48:    $State   = $info[$Key][\"useraccountcontrol\"][0];  <br \/>49:    $Mail   = $info[$Key][\"userprincipalname\"][0];  <br \/>50:    $org    = $info[$Key][\"distinguishedname\"][0];  <br \/>51:      <br \/>52:    $State   = dechex($State);  <br \/>53:    $State     = substr($State,-1,1);\/\/verifica contas desabilitadas  <br \/>54:     <br \/>55:    $Value = $Name.\"^\".$Account.\"^\".$State.\"^\".$Mail.\"^\".$org;  <br \/>56:     <br \/>57:    if ( $Name != \"\" &amp;&amp; $State != 2)  <br \/>58:    $USERs[]=$Value;  <br \/>59:   }  <br \/>60:   if ( count($USERs) &gt; 0 )  <br \/>61:   sort($USERs);  <br \/>62:     <br \/>63:   if ( count($USERs) == 0 )  <br \/>64:   {  <br \/>65:      echo \"N\u00e3o foi econtrado nenhum usu\u00e1rio\";  <br \/>66:   }  <br \/>67:     <br \/>68:   \/\/Verifica todos departamentos na OU como financeiro, RH, TI...  <br \/>69:   for ($i=0;$i&lt;=count($USERs)-1;$i++)  <br \/>70:   {  <br \/>71:    $Value  = $USERs[$i];  <br \/>72:    $Splitted = explode(\"^\",$Value);  <br \/>73:     <br \/>74:    $Name     = $Splitted[0];  <br \/>75:    $Account   = $Splitted[1];  <br \/>76:    $State    = $Splitted[2];  <br \/>77:    $Mail     = $Splitted[3];  <br \/>78:    $org         = $Splitted[4];  <br \/>79:     <br \/>80:    $org_array = explode(\",\",$org);  <br \/>81:    $org = substr($org_array[2],3,(strlen($org_array[2])));  <br \/>82:    $temp[$i] = $org;  <br \/>83:      <br \/>84:    $org2 = array_unique($temp);  <br \/>85:     <br \/>86:  \/\/Lista os usuarios por departamento  <br \/>87:      foreach( $org2 as $mostra ){  <br \/>88:          echo\"&lt;br&gt;\".$mostra;  <br \/>89:           for ($i=0;$i&lt;=count($USERs)-1;$i++)  <br \/>90:           {  <br \/>91:            $Value  = $USERs[$i];  <br \/>92:            $Splitted = explode(\"^\",$Value);  <br \/>93:     <br \/>94:            $Name     = $Splitted[0];  <br \/>95:            $Account   = $Splitted[1];  <br \/>96:            $State    = $Splitted[2];  <br \/>97:            $Mail     = $Splitted[3];  <br \/>98:              $org      = $Splitted[4];  <br \/>99:                          $org_array = explode(\",\",$org);  <br \/>100:            $org = substr($org_array[2],3,(strlen($org_array[2])));  <br \/>101:            $temp[$i] = $org;  <br \/>102:            if ($org == $mostra)  <br \/>103:              echo \"&lt;br&gt;--\".$Name;  <br \/>104:          }  <br \/>105:      }  <br \/>106:  }  <br \/>107:   ?&gt;  <br \/><\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>No programa mostra a conex\u00e3o, autentica\u00e7\u00e3o, busca e listagem dos usu\u00e1rios por departamento no active directory no windows server utilizando<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout"},"categories":[93,37,65,75],"tags":[],"_links":{"self":[{"href":"https:\/\/helbertt.xyz\/site\/wp-json\/wp\/v2\/posts\/98"}],"collection":[{"href":"https:\/\/helbertt.xyz\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/helbertt.xyz\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/helbertt.xyz\/site\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/helbertt.xyz\/site\/wp-json\/wp\/v2\/comments?post=98"}],"version-history":[{"count":0,"href":"https:\/\/helbertt.xyz\/site\/wp-json\/wp\/v2\/posts\/98\/revisions"}],"wp:attachment":[{"href":"https:\/\/helbertt.xyz\/site\/wp-json\/wp\/v2\/media?parent=98"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helbertt.xyz\/site\/wp-json\/wp\/v2\/categories?post=98"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helbertt.xyz\/site\/wp-json\/wp\/v2\/tags?post=98"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}