PHP LDAP – Autenticação de usuários
Olá pessoal, neste artigo de hoje estarei abordando a conexão/autenticação de usuários PHP via LDAP. (pode ser usada para autenticar no Active Directory do windows server), criar um login unificado.
Está conexão será utilizada em uma abordagem para projeto de criação de Intranet Corporativa básica, com poucas funcionalidades e que poderá ser aprimoradas conforme as necessidades surgirem.
O que é LDAP?
https://pt.wikipedia.org/wiki/LDAP
Uma utilização comum do LDAP é fornecer um “logon único” onde uma senha para um usuário é compartilhada entre muitos serviços, como a aplicação de um código de login da companhia para páginas web (de forma que a equipe loga apenas uma vez aos computadores da companhia e então são automaticamente logadas na intranet da companhia).
1º Passo – O primeiro passo é a configuração do PHP .
PHP LDAP
http://php.net/manual/pt_BR/book.ldap.php
Localize o arquivo php.ini dentro do diretório de instalação do servidor web (apache), e em seguida abra usando um editor de texto(notepad, edit plus, sublime…).
Encontre a linha ;extension=php_ldap.dll e remova o (;)ponto e vírgula no inicio, salve, feche e reinicie o serviço do servidor web (apache)
2º Passo – Criação do arquivo de conexão
<?php
$ldap_server = “srv01.fabianobento.com.br”;
$dominio = “@bento”; //Dominio local ou global
$user = “administrador”.$dominio;
$ldap_porta = “389”;
$ldap_pass = ‘senha-teste’;
$ldapcon = ldap_connect($ldap_server, $ldap_porta) or die(“Could not connect to LDAP server.”);
if ($ldapcon){
// binding to ldap server
//$ldapbind = ldap_bind($ldapconn, $user, $ldap_pass);
$bind = ldap_bind($ldapcon, $user, $ldap_pass);
// verify binding
if ($bind) {
echo “LDAP bind successful…”;
} else {
echo “LDAP bind failed…”;
}
}
?>
LDAP bind successful…
não são apenas estes dois passos, pode enviar os outros para mim? está tudo bem explicado. eu clico em “read More” mas não aparece o resto do post. desde já agradeço
Jesonilton,
Para criar um arquivo de atenticação são apenas estes passos, pode informar se ocorreu algum erro?
Bento, por acaso você saberia informar como é feita a conexão via biblioteca adldap2, utilizando laravel ?
Adriano fiz uma busca, segue um exemplo:
Lembrando que para a conexão é necessário ativar a biblioteca.
$config = [
‘account_suffix’ => ‘@example.com’,
‘domain_controllers’ => [‘servidor’,’servidor’],
‘base_dn’ => ‘cn=read-only-admin,dc=example,dc=com,dc=example,dc=com’,
‘admin_username’ => ‘cn=read-only-admin,dc=example,dc=com’,
‘admin_password’ => ‘password’,
];
$ad->addProvider($config);
cara, muito obrigado! tava precisando de um simples assim q funcionasse, valeu!
Obrigado pela visita!
Parabéns. Funcionou de primeira. tentei vários que não deram certo.
Obrigado pela visita Sidney! =D
Amigo, no meu deu o erro:
Fatal error: Call to undefined function ldap_connect()
Porém, ao chamar o phpinfo() está aparecendo o LDAP. Saberia dizer pq desse erro?
Olá Tassio,
Crie um arquivo e chame phpinfo(); e veja se a extensão está carregada.
Caso já tenha habilitado a extensão, pode ser que o arquivo (php_ldap.dll) não exista no diretório do PHP/Apache, neste caso é necessário baixar no site php.net o arquivo compatível com a versão instalada e incluir na pasta do PHP.
Cara obrigado pelo post
Augusto. obrigado pela visita!
Boa tarde! Excelente o post, me ajudou demais!
Mas uma dúvida: como faço para exibir o nome do user logado?
Recuperar os dados registrados no LDAP e exibir na home, por exemplo.
Bruno utilize o ldap_get_values
http://php.net/manual/pt_BR/function.ldap-get-values.php
Funcionou perfeitamente, obrigado.
No meu caso o usuário so autentica se inserir no login dominio\usuario e senha.
se inserir somente o usuario e senha não valida o acesso.
como posso resolver?
André verifique a variável $dominio, se necessário cocatene ao nome de usuário para resolver o problema.
estou precisando de um codigo que cria uma pagina que eu coloque o login e senha de algum usuario do meu dominio e quando logar mostrar qual membro ele é e as informações daquele usuario logado…
MIchael, veja no link oficial as funções disponíveis.
https://www.php.net/manual/pt_BR/ref.ldap.php
https://www.php.net/manual/pt_BR/book.ldap.php
Perfeito! Funcionou bem para mim com PHP CLI no Ubuntu. A parte do “domínio” no nome do usuário é que fez a diferença. Acho que em outros exemplos o pessoal sempre despreza esse ponto importante. Obrigado pelo seu trabalho!
Olá Murrilo, obrigado pela visita! =]
Excelente exemplo.
Parabéns, me ajudou bastante.
Bom dia, estou desenvolvendo um portal e nele ja existe uma validação do usuário ao acessesa-lo, o banco que utilizam é oracle. Como faço pra mostra os dados do usuário AD Windows? Tentei diversos códigos e não consigo. O máximo que eu consigo mostra é o nome da pasta que esta na rede sendo que era pra se o nome da pessoa.
Olá Suelen,
Não ficou muito claro o que está precisando, poderia detalhar um pouco mais por favor.