2009-10-06 17 views
6

Questo codice qui sotto controlli per le credenziali dell'utente contro LDAPl'autenticazione LDAP utilizzando PHP, l'indice attivo, durante l'utilizzo di IE/Firefox

<?php 
$ldaphost = "ldap.domain.com"; 
$ldapport = 389; 

$ds = ldap_connect($ldaphost, $ldapport) 
or die("Could not connect to $ldaphost"); 

if ($ds) 
{ 
    $username = "[email protected]"; 
    $upasswd = "pass"; 

    $ldapbind = ldap_bind($ds, $username, $upasswd); 

    if ($ldapbind) 
     {print "Congratulations! $username is authenticated.";} 
    else 
     {print "Access Denied!";} 
} 
?> 

miei utenti utilizzano Firefox e IE, e so che può passare le loro credenziali ActiveDirectory senza soluzione di continuità.

Voglio solo controllare il gruppo AD per vedere se quel nome utente è trovato lì, in tal caso, visualizzare la pagina, altrimenti richiedere di inserire le credenziali.

Poiché i nostri utenti sono già connessi al controller di dominio, voglio prendere il loro nome utente, verificare se è stato trovato nel gruppo specifico, quindi lasciarli entrare, altrimenti chiedere all'utente di inserire le credenziali. Com'è possibile?

+0

C'è una domanda da qualche parte? –

+0

Domanda aggiunta. – Brad

+0

Eccellente. Grazie. =) –

risposta

7

In realtà non è necessario comunicare con il server Active Directory dal codice PP per ottenere ciò che si desidera dato il fatto che si utilizza IIS come server Web.

La parola chiave qui è Integrated Windows Authentication - questa è la dicitura djn looked for. Se questa opzione è attivata (e viene negato l'accesso anonimo), IIS verificherà le credenziali fornite in base ai privilegi del file system Active Directory e NTFS delle risorse richieste. È quindi possibile controllare l'accesso ai file utilizzando semplici meccanismi di controllo degli accessi NTFS.

Se gli utenti utilizzano IE che addirittura non c'è bisogno di digitare le proprie credenziali come questo viene fatto automaticamente tramite cosiddetto SPNEGO (meccanismo GSSAPI Negotiation semplice e protette) e la sua sottostanti meccanismi Kerberos o NTLMSSP seconda di ciò che il vostro cliente e il server è in grado di elaborare.

Per quanto ne so, Firefox è in grado di trasferire automaticamente anche le credenziali di accesso di Windows al server. Dovresti adattare uno configuration option per attivare quella funzione, non so se questa informazione è ancora valida con Firefox 3.5.x.

Se si sta eseguendo Apache su un sistema * nix-si dovrà ricorrere a qualche lato server-module per gestire un autenticazione integrata di Windows sistema -come.Le opzioni possibili sono (non so se sono in realtà ancora mantenute o stabile):

Per Apache su Windows ci sono:

Si prega di essere consapevole del fatto che la maggior parte di questi moduli sembrano essere molto vecchio.

1

Lavorare solo ora su una configurazione simile: ho saltato tutto quel materiale LDAP che ha il server web che autentica il client con AD prima di lasciarlo entrare (mi dispiace, non mi ricordo che cosa è chiamato nell'universo M $ alternativo) .

Se il client raggiunge lo script PHP è in AD e ho il suo nome utente sia in $_SERVER["AUTH_USER"] che in $_SERVER["LOGON_USER"], altrimenti non arriva mai allo script.