Se esta querendo aprender ou iniciar novos projetos em Flex, clique aqui

Um detalhe em que trabalhei neste ultimo mês foi interação de sistemas Flex com LDAP, para fazer logon único em todos os sistemas. Imagina que a empresa ao qual você precisa desenvolver o sistema, possui um sistema de domínio(LDAP) onde todos os usuários já possuem login, senha e cadastro completo, e política de senhas predefinidas.

Então para que montar todo um sistema de cadastro de usuários, tendo o usuário um novo login, uma nova senha, um novo cadastro?

Então neste Post tratarei sobre a integração de sistemas com o serviço de diretório.

Antes de começar você deve entrar em contato com o responsável pelo LDAP na empresa e solicitar a estrutura da árvore da empresa (Se você não esta entendendo nada, sugiro que leia a documentação do LDAP antes). Ele passará algo como:

SERVER: intranet.mxml.com.br
PORT: 389
BASE: dc=mxml,dc=com,dc=br
USERNAME: cn=UserSistemaDoAlemao,dc=mxml,dc=com,dc=br
PASSWORD: SenhaDeAcesso
FILTER: (&(ObjectClass=person)(Atrubuto2=SuaEscolha))
ATTRIBUTE: uid

Com estes dados entra o primeiro problema, acalmar o desespero de como usar todos estes dados, e como vou faze-lo em PHP? Procurar no Google, bla, não achei nada de exemplo. Então no PHPbrasil achei algo que começou a me ajudar. Autenticando no Active Directory com PHP via LDAP.

Porém no caso da empresa em questão não estava funcionando como eu queria, Então cheguei até o LDAPSearch, Este me ajudou em muito neste inicio de carreira com o LDAP.

O código PHP que faz esta conexão esta abaixo:

<?php
// Atributos para conexão
$m_server = "intranet.mxml.com.br";
$m_port = 389;
$m_basedn = "dc=mxml,dc=com,dc=br";
$m_USER_ADM = "cn=UserSistemaDoAlemao,dc=mxml,dc=com,dc=br";
$m_USER_PW = "SenhaAdmin";
$m_USER = "alemao";
$m_PW = "SenhaAlemao";
$m_search = "(&(ObjectClass=person)(Atrubuto2=SuaEscolha))";

// Abre a conexao com o banco dee dados
$m_ds = @ldap_connect($m_server, $m_port);
// Faz logim como administrador
@ldap_bind($m_ds, $m_USER_ADM, $m_USER_PW);

$m_sucess = false;
// Faz a busca pelo usuário em toda arvore do LDAP
$m_sr = @ldap_search($m_ds, $m_basedn, sprintf($m_search, $m_USER));
// conta quantas resultados foram obtidas
$n_entradas = @ldap_count_entries($m_ds, $m_sr);
// Se possuir um ou mais usuarios, o usuario existe
if ($n_entradas > 0)
{
    // Pega os dados do usuário
    $entry = @ldap_first_entry($m_ds, $m_sr);
    $attrs = @ldap_get_attributes($m_ds, $entry);
    $m_dn = @ldap_get_dn($m_ds, $entry);

    // Faz login com os stributos do usuário
    $r = @ldap_bind($m_ds, $m_dn, $m_PW);
    // se falhar
    if (empty ($r))
    {
        // Define a senha como errada
        $m_error_msg = "Senha Invalida!";
    }
    // caso contrário
    else
    {
        // esvazia a variavel de $m_error_msg
        $m_error_msg = "";
        // Define sucesso a variavel $m_sucess
        $m_sucess = true;
    }
}
// Caso nehum dado retorne, não existe nehum usuário com este login
else
{
    $m_error_msg = "Usuario Invalido!";
}
// Fecha a conexão com o LDAP
@ ldap_close($m_ds);
if($m_sucess == true)
{
    echo "Autenticado!!";
}
else
{
    echo $m_error_msg;
}
?>

O código completo se encontra aqui.

OBS: No pacote de código que esta para download é diferente do código disponível acima. O código PHP que esta disponível para download se trata de uma classe de conexão, precisando de uma interface para o uso. Para um bom entendimento do exemplo é importante que leia os manuais do LDAP e a
documentação no PHP Brasil sobre autenticação LDAP

Gostou? Não esqueça de curtir!

Ou compartilhe o link com seus amigos

Nenhum comentário

Deixe uma resposta