LOCAIS

ARQUIVO

ASSINE OS FEEDS

Software Livre

Dicas de sites

Publicidade


SSD Virtual Server 5$/mo HD 20GB 512Ram






Publicado em 26 de fevereiro de 2009 ás 19:51

fazendo autenticação via PHP + LDAP

Fazendo um sistema de autenticação com PHP + LDAP.

primeiramente cria um formulário no qual você vai passar os dados de usuário e senha:

login.html

<form id="form" action="autenticacao.php" method="post">
Usuário: <input id="usuario" name="usuario" size="30" type="text" />
Senha: <input id="senha" name="senha" size="30" type="password" />
<input name="Submit" type="submit" value="    Entrar    " />
</form>

agora vamos fazer nossa autenticação com o sistema LDAP.

autenticacao.php

<?php
session_start();

/**
* 
* Criado por Édson Kuzniewski (contato Θ edsonk.com.br)  
* 18-12-2008  
*
**/

// FAZENDO A AUTENTICAÇÃO
if(!isLogin($_POST['usuario'], $_POST['senha'])){
  die("Usu&aacute;rio ou senha incorreto... Informe os mesmos dados de acesso da rede LDAP.  <a href=\"javascript:history.go(-1)\">voltar</agt;");
}else{
  echo "Usuário autenticado com sucesso!";
}

// função para fazer a autenticação com o LDAP.
function isLogin($usuario,$senha){
  global $sessao;

  /* DEFINE A VARIAVEL $PERSON COMO USUÁRIO */
  $person = $usuario;

  /* DEFINE O NOME OU IP DO SERVIDOR LDAP */
  $servidor="ldap";

  /* DEFINE A PORTA DE ACESSO AO SERVIDOR LDAP */
  $porta = "389";

  /* FAZ CONEXÃO COM O SERVIDOR LDAP */
  $ds = ldap_connect($servidor, $porta);

  /* DEFINE O DN DO SERVIDOR LDAP */
  $dn = "ou=Users, dc=edsonk, dc=com";

  /* DEFINE O FILTRO PARA PEGAR OS DADOS DO USUÁRIO */
  $filter="(|(sn=$person*)(givenname=$person*)(uid=$person))";

  /* EXECUTA O FILTRO NO SERVIDOR LDAP */
  $sr=ldap_search($ds, $dn, $filter);

  /* PEGA AS INFORMAÇÕES QUE O FILTRO RETORNOU */
  $info = ldap_get_entries($ds, $sr);

  /* PEGANDO SOMENTE O VALOR DO DN DO USUÁRIO DO LDAP PARA FAZER A AUTENTICAÇÃO */
  $cnC = $info[0]["dn"];

  /* FECHA CONEXÃO COM O LDAP */
  ldap_close($ds);

  /* EXECUTA COMANDO INTERNAMENTE NO SERVIDOR PARA FAZER A AUTENTICAÇÃO COM A SENHA */
  $comando = "ldapsearch -x -w ".$senha." -D '".$cnC."' uid='".$person."' uidNumber";

  /* PEGA O RESULTADO DO COMANDO E JOGA PARA A VARIAVEL $OUTPUT */
  $rs = exec($comando, $output);

  /* FAZ A VERIFICAÇÃO PELO RESULTADO, SE NÃO RETORNAR BRANCO É QUE O USUÁRIO FOI AUTENTICADO COM SUCESSO! */
  if($rs != ""){
     //echo"Logado com sucesso!";

     /* PEGANDO O UIDNUMBER DO USUÁRIO, QUE CONSTA NO LDAP, SERIA COMO UM CODIGO UNICO */
     $tmp = explode(" ", $output[10]);

     /* PEGANDO O UIDNUMBER E JOGANDO NA SESSÃO DO USUÁRIO */
     $_SESSION[$sessao]["user"]["uid"] = $tmp[1];

     /* DEFINE A FLAG PARA VERDADEIRA */
     $retorna = true;

  }else{
     //echo "Usuário ou senha incorretos!";
     $retorna = false;
  }

  if($_SESSION[$sessao]["user"]["usuario"] != ""){
     $retorna = true;
  }
  return $retorna;
}
?>