SSO — Получить AD Имя пользователя с Apache

У меня PHP 5.6.17 и Apache 2.4.10, работающие на Debian 8.

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

Вот что я сделал в своем определении Apache vhost:

<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. Есть ли другой, более простой способ?

11

Решение

Во-первых, ваш ntdomain является неполным. Согласно документации, переменная установлена ​​так:

PerlAddVar ntdomain "my.local PDC_NAME BDC_NAME"

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

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

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

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

Наконец, настройка автоматического входа требует больше, чем добавление его в список доверенных сайтов. Вы должны поместить его в зону интрасети и убедиться, что для этой зоны включен автоматический вход в систему (например, параметры безопасности со средним и низким уровнем безопасности).

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]