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

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

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

Instalando PortSentry 1.2 no CentOS 7

Fazendo o seu Asterisk contar até 100...

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

Leitura recomendada

Váriaveis globais no PHP

CakePHP - Trocar model no controller

Compilando php5 com suporte a mysql e mysqli simultâneamente

FirePHP: Depurador de códigos PHP

10 dicas de otimização em programação 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