Acesso direto ao conteúdo
Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: Segurança Linux ·  UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Você está aqui: Home  → Arquivo Dicas-L

 

Aprenda inglês de uma vez por todas

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

Seguindo Referrals do OpenLDAP com PHP

Colaboração: Daniel Bojczuk

Data de Publicação: 02 de February de 2010

A utilização do LDAP é muito útil em vários contextos, tornando interessante a implementação de sistemas que automatizem ou facilitem seu uso. Uma das linguagens de programação que permite o desenvolvimento desses sistemas é o PHP, que desde sua versão 4 tem um modulo para LDAP.

Surgiu a necessidade de desenvolver um sistema para interagir com dois servidores OpenLDAP trabalhando com Sync Repl. Toda leitura de dados deveria ser realizado no servidor SLAVE e a escrita no servidor MASTER. Utilizar dois endereços de servidores LDAP tornaria o código complexo e confuso, esse é um dos casos que é necessáraio trabalhar com referrals. "Um referral é uma informação retornada por um servidor LDAP que indica ao cliente que outros servidores precisam ser contactados para que a requisição inicial seja preenchida."(http://gtdir.inf.puc-rio.br/distribuicao.htm)

Por padrão o PHP segue os referrals, mas eu estava com um problema: quando o OpenLDAP retornava um referral, ao fazer a requisição ao servidor indicado (chamaremos o servidor indicado pelo referral de MASTER) o PHP autenticava como anônimo (não enviava os dados de autenticação que enviou ao primeiro servidor) e assim não tinha permissão para efetuar requisição.

Solução

Para resolver o problema era necessário que o PHP refizesse a autenticação (bind) e também outros procedimentos como: iniciar TLS e configurar para utilizar a versão 3 do protocolo. Para isso é preciso utilizar a função ldap_set_rebind_proc antes de fazer o bind. Essa função determina o nome da função a ser chamada quando o PHP seguir um referral, ou seja, logo após o PHP se conectar com o servidor MASTER.

No exemplo abaixo, eu defino a função bind_function que serve para autenticar tanto no primeiro servidor quanto no MASTER. Esta função inicia o TLS (ldap_start_tls...), configura o php para utilizar a versão 3 do protocolo (ldap_set_option...) e faz a autenticação (ldap_bind...).

  <?
  /* inicia conexão com o LDAP */
  $ldap=ldap_connect("servidorldap.exemplo.com");
  
  /*função que será chamada para fazer o bind e o rebind*/
  function bind_function($resource, $ldap_url = '') {
        ldap_start_tls($resource);
        ldap_set_option($resource, LDAP_OPT_PROTOCOL_VERSION, 3);
        ldap_bind($resource,"cn=admin,dc=exemplo,dc=com",'senha');
  }
  
  /*configura o PHP para executar a função bind_function quando seguir o referral*/
  ldap_set_rebind_proc($ldap,"bind_function");
  
  /*executa a função bind_function para fazer o bind no primeiro servidor*/
  bind_function($ldap);
  ?>

A função que será chamada para se autenticar no servidor indicado no referral tem que ter 2 parâmetros:

  • $resource: será o link criado com o novo servidor;
  • $ldap_url: o endereço do novo servidor obtido no Referral

É isso... qualquer sugestão/dúvida é só entrar em contado.

Daniel Bojczuk é Desenvolvedor PHP, graduando em Informática Biomédica na Universidade de São Poaulo - Ribeirão Preto.

Veja a relação completa dos artigos de Daniel Bojczuk

Formato PDF
Newsfeed RSS
Formato para impressão
PDF RSS Imprimir

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 3.01/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.0 /5 (1056 votos)

Opinião dos Leitores

luan
25 Jan 2011, 21:25
http://www.freepremiumaccounts.com/?p=status
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script
Lan University

Submarino.com.br

Encontre imóveis, apartamentos e casas a venda no Imobilien
Saiba mais

 

 

Procure pela casa ou apartamento ideal à venda ou para aluguel na busca inteligente do Imohoo
Buscar imóveis