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: 20.881 ]

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...

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

Instalando PortSentry 1.2 no CentOS 7

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

Leitura recomendada

CakePHP - Trocar model no controller

Plugin com controle de acesso para CakePHP 3

FirePHP: Depurador de códigos PHP

Forçando quebra de linha em tabelas HTML usando PHP

Agendando execução de scripts PHP

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts