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

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

Instalando PortSentry 1.2 no CentOS 7

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

Fazendo o seu Asterisk contar até 100...

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

Leitura recomendada

Nasce site sobre Zend Framework

Forçando quebra de linha em tabelas HTML usando PHP

Documentação do CodeIgniter em português

Dicas de segurança em PHP

Escovando bits em PHP: operações bitwise e uma função debug

  

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