Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

greg_kaippert

Pesquisar e retornar usuário do AD

Recommended Posts

Boa tarde masters.

 

To precisando muito fazer um sistema de login com acesso ao AD(Active Directory) para verificar os usuários e retornar os dados dos mesmos e em outra consulta trazer todos os usuários.

Consigo verificar a conexão, se o usuário está autenticado ou não porém não consigo trazer os resultados, não sei se estou filtrando, mas a verdade que não sei como definir DN, OU, domínio, essas coisas. Já estou há uma semana tentando e nada, e preciso com urgência. Desde já agradeço a ajuda de vocês. No aguardo.

 

O endereço do servidor(CONEXÃO VPN) que preciso é Allen.corp, o dominio é Allenbr\\. 

 

Abaixo o código:

 

$ldap_server = "ldap://allenbr.corp";
$auth_user = "allenbr\\nome.sobrenome";
$auth_pass = "*********";
$usuario = "nome.sobrenome";

// Set the base dn to search the entire directory.

$base_dn = "dc=allenbr, dc=corp";

// Show People
$filter = "(&(objectClass=user)(objectCategory=person)(cn=*)(samaccountname=$usuario))";

// connect to server

if (!($connect=@ldap_connect($ldap_server))) {
die("Could not connect to ldap server");
}

// bind to server

if (!($bind=@ldap_bind($connect, $auth_user, $auth_pass))) {
die("Unable to bind to server");
}

// search active directory

if (!($search=@ldap_search($connect, $base_dn, $filter))) {
die("Unable to search ldap server");
}

$number_returned = ldap_count_entries($connect,$search);
$info = ldap_get_entries($connect, $search);

echo "The number of entries returned is ". $number_returned."<p>";

for ($i=0; $i<$info["count"]; $i++) {
// echo "Name is: ". $info[$i]["name"][0]."<br>";


echo "Name: ". $info[$i]["displayname"][0]."<br>";
echo "Email: ". $info[$i]["mail"][0]."<br>";
echo "Fone: ". $info[$i]["telephonenumber"][0]."<br>";
echo "CONTA AD.: ". $info[$i]["samaccountname"][0]."<br>";
echo "GRUPO.: ". $info[$i][""][0]."<p>";//aqui "OU AD" do usuário que tem o mesmo nome do grupo

}

ldap_close($connect);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ocorre algum erro?

 

O código acima retorna oq?

 

Trabalhei em uma empresa que fazia isso porem usava a abstração do ZF1, talvez te ajude
https://framework.zend.com/manual/1.10/en/zend.auth.adapter.ldap.html

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 06/09/2017 at 13:36, gabrieldarezzo disse:

Ocorre algum erro?

 

O código acima retorna oq?

 

Trabalhei em uma empresa que fazia isso porem usava a abstração do ZF1, talvez te ajude
https://framework.zend.com/manual/1.10/en/zend.auth.adapter.ldap.html

Então, consegui resolver com outro código, o meu erro era que estava inserindo OU errado. Mas li o artigo que você passou e deu pra clarear um pouco as idéias sobre DN, OU. Muito obrigado, abaixo o código funcionando.

 

   $adServer = "ldap://allenbr.corp";
    
    $ldap = ldap_connect($adServer);
    $username = strip_tags(trim($_POST['username']));
    $password = strip_tags(trim($_POST['password']));

    $ldaprdn = 'allenbr' . "\\" . $username;

    ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
    ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);

    $bind = @ldap_bind($ldap, $ldaprdn, $password);

    if ($bind) {
        $filter="(sAMAccountName=$username)";
        $result = ldap_search($ldap,"dc=ALLENBR,dc=CORP",$filter); // apenas retirei o OU, e deixei o DC
        //ldap_sort($ldap,$result,"sn"); essa função ldap_sort está obsoleta, então comentei, não funciona
        $info = ldap_get_entries($ldap, $result);
        for ($i=0; $i<$info["count"]; $i++)
        {
            if($info['count'] > 1)
                break;
            echo "<p>Você está acessando <strong> ". $info[$i]["sn"][0] .", " . $info[$i]["givenname"][0] ."</strong><a href='conectarAD.php?exe=exit'>Sair.</a><br /> (" . $info[$i]["samaccountname"][0] .") --- ".$info[$i]["proxyaddresses"][5]."</p>\n";
            echo '<pre>';
            var_dump($info);
            echo '</pre>';
            $userDn = $info[$i]["distinguishedname"][0]; 
        }
        @ldap_close($ldap);
    } else {
        $msg = "Endereço de email / senha inválidos";
        echo $msg;
    }

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por tiago.rizzon
      Boa tarde pessoal!
      Alguém poderia me dizer oq está errado na minha primeira tentativa de conectar com DB mysql?
      Em anexo coloquei print do erro no browser e print dos dados de acesso ao banco.
      Meu usuário é megasys.com, o nome do DB q quero acessar é CL001... q contem uma tabela teste FUN...
      Desde já agradeço!!
      Obrigado!
       
      meu index.php está assim:
       
      <!DOCTYPE html>
      <html>
      <body>
      <?php
      $link = mysql_connect('mysql22.redehost.com.br,3306', 'megasys.com', 'minhaSenha');
      if (!$link) {
          die('Não foi possível estabelecer uma conexão com o MySQL : ' . mysql_error());
      }
      $db_selected = mysql_select_db('CL001', $link);
      if (!$db_selected) {
          die ('Não foi possivel acessar o banco de dados: ' . mysql_error());
      }
      ?>
      </body>
      </html>


    • Por o_neto
      edit: Rodou, parece ser um problema com a formatação gerada pelo Notepad++ :wacko:
      Alguém pode me sugerir um editor PHP que não fo** com meu código?
       
      Galera, alguém pode me dizer se tem algum erro de sintaxe meu código? via localhost ele conecta na db e funciona perfeitamente, quando eu upo o php no host, ele funciona apenas a parte do <head>. Já tentei colocar um echo, logo dentro do <?php pra ver se tava rodando, mas aí ele acusa erro, sem o echo ele simplesmente não roda.
       
      É um projeto simples, que estou usando mais como objeto de estudo para um projeto de mestrado com princípios parecidos. Um gerenciador de campeonato de futebol.
      <head> <meta charset="UTF-8"> </head> <?php $servername = "server20.000webhost.com"; $username = "..."; $password = "..."; $dbname = "..."; // Create connection $conn = mysql_connect($servername, $username, $password, $dbname) or die(mysql_error()); $sql = "SELECT id, escudos, clubes FROM lista_clubes"; $result = mysql_query($conn, $sql); $sql2 = "SELECT clube_id, pontos, jogos, vitorias, empates, derrotas, golspro, golscontra FROM tabela ORDER BY pontos"; $result2 = mysql_query($conn, $sql2); if ((mysql_num_rows($result) > 0) && (mysql_num_rows($result2) > 0)) { echo "<section><table border='1' border-collapse='collapse;'> <tr><th> </th><th>Clube</th><th>P</th><th>J</th><th>V</th><th>E</th><th>D</th><th>GP</th><th>GC</th><th>SG</th><th>%</th></tr>"; echo "antes do while OK<br>";// output data of each row while($row = mysql_fetch_assoc($result2)) { if ($row_lista = mysql_fetch_assoc($result)) { //echo $row_lista["escudos"]."<br>"; echo "<tr style='border-collapse:collapse'> <td><img src=".buscaEscudo($row_lista, $row)." alt='img' style='width:48px;height:48px;'></td> <td>".buscaClube($row_lista, $row)."</td> <td class='espacado'>".$row["pontos"]."</td> <td class='espacado'>".$row["jogos"]."</td> <td class='espacado'>".$row["vitorias"]."</td> <td class='espacado'>".$row["empates"]."</td> <td class='espacado'>".$row["derrotas"]."</td> <td class='espacado'>".$row["golspro"]."</td> <td class='espacado'>".$row["golscontra"]."</td> <td class='espacado'>".($row["golspro"] - $row["golscontra"])."</td> <td class='espacado'>".caculaAproveitamento($row)."</td> </tr>"; } } echo "</table></section>"; } else { echo "0 results"; } mysql_close($conn); ?>
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.