2016-03-17 3 views
11

У меня есть PHP 5.6.17 и Apache 2.4.10 работает на Debian 8.SSO - Получить AD Имя пользователя с Apache

Я хочу, чтобы заполнить РНР переменную $_SERVER['REMOTE_USER'] с именем пользователя Windows, чтобы войти в случае, если пользователь имя пользователя находится в моей базе данных. Я уверен в рисках безопасности, связанных с этим методом, поскольку это будет отображаться только в локальной сети.

Вот что я сделал в моем определении ВХост 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> 

Я поставил URL в доверенных сайтов в Internet Explorer, но я по-прежнему предлагается для базовой аутентификации.

Что я пропустил?

Моя единственная цель - получить имя пользователя сеанса Windows. Есть ли другой, более простой способ?

+0

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

+0

@mkaatman: спасибо за сообщение, но я нахожусь в локальной сети, поэтому я доверяю var. – BastienSander

+0

Вы добавили исключение ntlm для своего URL-адреса в IE? что-то вроде этого: https://technet.microsoft.com/en-us/library/jj865685(v=ws.10).aspx или https://support.microsoft.com/en-us/kb/239869. – gmfm

ответ

5

Во-первых, ваш ntdomain является неполным. According to documentation, переменная устанавливается следующим образом:

PerlAddVar ntdomain "my.local PDC_NAME BDC_NAME" 

Без контроллера домена для проверки подлинности, то valid-user требование не может быть удовлетворено.

Во-вторых, Apache2 :: AuthenNTLM не поддерживает аутентификацию NTLM версии 2.

Начиная с Windows Vista и Server 2008, версия NTLM 2 использовалась исключительно. Предыдущие версии Windows вернутся к версии 1, если сервер не поддерживает версию 2. Хотя вы можете изменить политику безопасности, чтобы вернуться к старому поведению, это very dangerous.

Как упоминалось в this answer, существует a Python module, который обрабатывает аутентификацию NTLM версии 2. Очевидно, для этого потребуется установка mod_python, но ее довольно просто настроить.

И, наконец, для автоматической автоматической регистрации требуется more than adding it to the Trusted Sites list. Вы должны поместить его в зону интрасети и убедиться, что для этой зоны включен автоматический вход в систему (например, средние настройки безопасности).

Смежные вопросы