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á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;
}
?>
