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

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

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

Fazendo o seu Asterisk contar até 100...

Instalando PortSentry 1.2 no CentOS 7

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

Leitura recomendada

Váriaveis globais no PHP

Variáveis variáveis em PHP

Cuidados de segurança com o PHP

Code Igniter - Programando com segurança e velocidade

Escovando bits em PHP - operações bitwise sobre grupos e permissões

  

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