PHP Autenticando Usuários no ActiveDirectory do Windows

Foi muito simples como tudo em PHP.

Pegue  o usuário e a senha de um formulário e então conectar ao servidor windows. Usar  o ladap_bind para retornar TRUE se o usuário existe e está válido.

Atenção com as duas barras, é necessário para formar uma única barra no PHP.

<?php
/*
 * login.php
 */
$usuario = $_POST['usuario'];
$senha = $_POST['senha'];

$ad = @ldap_connect("192.168.1.1");
$bd = @ldap_bind($ad, 'DOMINIO\\'.$usuario, $senha);

if ($bd) {
    $_SESSION['usuario'] = $usuario;
    header('Location: principal.php?acao=inicio');
    exit;
} else {
    $erro = "Usuario ou senha invalidos";
    header('Location: index.php?mensagem='.$erro);
    exit;
}
?>

OpenLDAP no Ubuntu 8.10 Server e Client

Implementando o LDAP em Ubuntu 8.10

1) No servidor instale o openLDAP server:

apt-get install slapd, ldap-utils
sudo dpkg-reconfigure slapd

Para adminstração via web:

apt-get install phpldapadmin

Maiores informações: Help Ubuntu LDAP Server

2) Nas maquinas clientes, instalar a autenticação PAM/NSS:

sudo apt-get install libpam-ldap libnss-ldap nss-updatedb libnss-db

ajustar /etc/nsswitch.conf

passwd: files ldap
group: files ldap

Para testar:

$ getent passwd
$ getent group

Se falhar, então conferir o /etc/ldap.conf e se tiver 3 barras no endereco mudar para 2.

Para criar diretorio HOME local, editar /etc/pam.d/commom-session

session required pam_unix.so
session required pam_mkhomedir.so skel=/etc/skel/
session optional pam_ldap.so
session optional pam_foreground.so

Para adicionar grupo automaticamente editar o /etc/security/group.conf

  • ; *; *; Al0000-2400;audio,cdrom,floppy,plugdev,video,fuse,scanner,dip

Para reconfigurar o client:

sudo dpkg-reconfigure ldap-auth-config

Para HOME remota, configure o /etc/hosts para o server e o fstab para server:/home /home nfs defaults 0 0.

Maiores informações: Help Ubuntu LDAP Client
Ubuntu autenticar LDAP

Referencias:
AutoFS Forum Debian
Autenticação com LDAP
Autenticação com LDAP e AD endereço mudar para 2.