Autenticar usuário e mostrar os membros de um grupo no site PHP via LDAP no AD W2K12

Publicado por Charles Josiah Rusch Alandt em 30/06/2014

[ Hits: 16.095 ]

Blog: https://www.linkedin.com/in/charlesjosiah/

 


Autenticar usuário e mostrar os membros de um grupo no site PHP via LDAP no AD W2K12



Segue um site de exemplo, abaixo, que possui duas funções principais:
  1. Autenticar um usuário no AD via LDAP num site PHP, Active Directory 2012 da Microsoft.
  2. Retornar os membros de um grupo especifico via LDAP no site PHP.

Como falei, é um PHP exemplo para referência, bem simples e básico. A fim de mostrar o seu funcionamento e utilização das funções envolvidas.

Obs.: também é possível utilizar numa sessão criptografada, usando um AD CS e assinando um certificado cliente. Tenho um exemplo, em Perl para o mesmo. Talvez eu publico em outro momento, ou solicite via e-mail.

Para a alteração de senhas do usuário via LDAP, no Windows 2012, é obrigatório que a conexão seja criptografada via um AD CS.

Código fonte:

<?php
ini_set('error_reporting',E_ALL);
ini_set('display_errors',1);

$ldapconfig['host']="IP/NOME DO SERVIDOR";
$ldapconfig['port']="389"; #PORTA
$domain="DOMINIO";

$username="usuario";
$password="senha";

$grupo='DN do Servidor';
$filtro="(&(objectCategory=user)(memberOf=DN DO GRUPO))";

$ds=ldap_connect($ldapconfig['host'], $ldapconfig['port']);
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);

$bind=ldap_bind($ds, $username .'@'.$domain, $password);


echo "Conectando com: ".$username."
";

if ($bind) {

        echo "Login OK !

";
        echo "Coletando informacoes basicas...
";
        echo "Grupo utilizado: ".$grupo."
";
        echo "Filtro de pesquisa: ".$filtro."
";

        $pesquisa = ldap_search($ds,$grupo,$filtro) or die ("Erro na pesquisa...");
        $info = ldap_get_entries($ds, $pesquisa);

        $retorno=ldap_count_entries($ds,$pesquisa);

        echo "
Retorno:".$retorno."
";

        for ($i=0; $i<$retorno; $i++)
        {
                echo $i."-".$info[$i]["displayname"][0].",".$info[$i]["mail"][0]."
";
        }


        ldap_close($ds);

   } else {
        echo "Falha de login, usuário e senha invalido";
   }

?>

Qualquer dúvida/crítica/sugestão/elogio, fico à disposição.

Abraço a todos.
:wq!

Outras dicas deste autor

Fazendo o seu Asterisk contar até 100...

Instalando PortSentry 1.2 no CentOS 7

Zabbix API com cURL e alguns exemplos de utilização

tcpdump - Capturando senhas de serviços POP3/IMAP/SMTP ou HTTP

Leitura recomendada

Gerando Miniaturas de Imagens com PHP

Enviar aspas em PHP de maneira menos suja

FirePHP: Depurador de códigos PHP

Docker, Git e PHP

Dicas de segurança em PHP

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts