2016-03-17 15 views
11

Ich habe PHP 5.6.17 und Apache 2.4.10 auf Debian läuft 8.SSO - Holen Sie sich das AD Benutzername mit Apache

ich die PHP-Variable $_SERVER['REMOTE_USER'] mit dem Windows-Benutzernamen, auffüllen möchten in den Benutzer anmelden, wenn Der Benutzername ist in meiner Datenbank. Ich bin mit den Sicherheitsrisiken dieser Methode vertraut, da diese nur in einem lokalen Netzwerk verfügbar sind.

Hier ist, was ich habe in meiner Apache vhost Definition:

<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> 

Ich habe die URL in die vertrauenswürdigen Sites im Internet Explorer, aber ich war immer noch für die grundlegende Authentifizierung aufgefordert.

Was habe ich vermisst?

Mein einziges Ziel ist es, den Benutzernamen der Windows-Sitzung zu erhalten. Gibt es einen anderen, leichteren Weg?

+0

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

+0

@mkaatman: danke für den Beitrag, aber ich bin in einem lokalen Netzwerk, das ist, warum ich der var vertrauen. – BastienSander

+0

Haben Sie eine ntlm-Ausnahme für Ihre URL/Domain in IE hinzugefügt? etwas wie dieses: https://technet.microsoft.com/en-us/library/jj865685(v=ws.10).aspx oder https://support.microsoft.com/en-us/kb/239869. – gmfm

Antwort

5

Zuerst ist Ihre ntdomain unvollständig. According to documentation wird die Variable wie folgt festgelegt:

PerlAddVar ntdomain "my.local PDC_NAME BDC_NAME" 

Ohne einen Domänencontroller gegen die valid-user niemals erfüllt werden können, zu authentifizieren.

Zweitens Apache2 :: AuthenTNTLM unterstützt NTLM Version 2 Authentifizierung nicht.

Seit Windows Vista und Server 2008 wurde ausschließlich NTLM Version 2 verwendet. Frühere Versionen von Windows würden auf Version 1 zurückgreifen, wenn der Server Version 2 nicht unterstützt. Obwohl Sie die Sicherheitsrichtlinie so ändern können, dass das alte Verhalten wiederhergestellt wird, sind dies very dangerous. Wie in this answer erwähnt, gibt es a Python module, die NTLM Version 2-Authentifizierung behandelt. Offensichtlich erfordert dies die Installation von mod_python, ist aber ziemlich einfach zu konfigurieren.

Schließlich erfordert die Konfiguration der automatischen Anmeldung more than adding it to the Trusted Sites list. Sie sollten es in der Intranetzone setzen, und stellen sicher, dass die automatische Anmeldung für diese Zone aktiviert ist (zB mittlere bis niedrige Sicherheitseinstellungen.)