2016-03-17 23 views
11

ho PHP 5.6.17 e 2.4.10 Apache in esecuzione su Debian 8.SSO - Prendi il nome utente AD con Apache

voglio per popolare la variabile PHP $_SERVER['REMOTE_USER'] con il nome utente di Windows, effettuare il login l'utente se il nome utente è nel mio database. Sono a mio agio con i rischi per la sicurezza coinvolti in questo metodo, in quanto saranno esposti solo su una rete locale.

Ecco quello che ho fatto nella mia definizione vhost Apache:

<LocationMatch "/login/ssologin"> 
    PerlAuthenHandler Apache2::AuthenNTLM 
    AuthBasicAuthoritative on 

    AuthType ntlm 
    AuthName "hello" 

    Require valid-user 

    PerlAddVar ntdomain "my.local" 
    PerlSetVar defaultdomain my.local 
    PerlSetVar splitdomainprefix 1 
    PerlSetVar ntlmauthoritative off 
    PerlSetVar ntlmdebug 1 
</LocationMatch> 

ho messo l'URL nei siti attendibili in Internet Explorer, ma ero ancora richiesta l'autenticazione di base.

Cosa mi sono perso?

Il mio unico obiettivo è ottenere il nome utente della sessione di Windows. C'è un altro modo più semplice?

+0

http://stackoverflow.com/questions/12942065/can-serverremote-user-be -soforato – mkaatman

+0

@mkaatman: grazie per il post ma sono in una rete locale, ecco perché mi fido della var. – BastienSander

+0

Hai aggiunto un'eccezione ntlm per il tuo URL/dominio in IE? qualcosa del genere: https://technet.microsoft.com/en-us/library/jj865685(v=ws.10).aspx o https://support.microsoft.com/en-us/kb/239869. – gmfm

risposta

5

Innanzitutto, il tuo ntdomain è incompleto. According to documentation, la variabile è impostata in questo modo:

PerlAddVar ntdomain "my.local PDC_NAME BDC_NAME" 

Senza un controller di dominio per l'autenticazione, il requisito valid-user non può mai essere soddisfatta.

Secondo, Apache2 :: AuthenNTLM non supporta l'autenticazione NTLM versione 2.

Poiché Windows Vista e Server 2008, NTLM versione 2 è stato utilizzato esclusivamente. Le versioni precedenti di Windows tornavano alla versione 1 se il server non supportava la versione 2. Sebbene sia possibile modificare la politica di sicurezza per ripristinare il comportamento precedente, queste sono very dangerous.

Come indicato in this answer, è presente a Python module che gestisce l'autenticazione NTLM versione 2. Ovviamente ciò richiederà l'installazione di mod_python ma è abbastanza semplice da configurare.

Infine, la configurazione dell'accesso automatico richiede more than adding it to the Trusted Sites list. Dovresti metterlo nella zona Intranet e assicurarti che l'accesso automatico sia abilitato per questa zona (ad es. Impostazioni di sicurezza medio-bassa)