Этот код ниже проверяет учетные данные пользователя против ldap
<?php $ldaphost = "ldap.domain.com"; $ldapport = 389; $ds = ldap_connect($ldaphost, $ldapport) or die("Could not connect to $ldaphost"); if ($ds) { $username = "johndoe@domain.com"; $upasswd = "pass"; $ldapbind = ldap_bind($ds, $username, $upasswd); if ($ldapbind) {print "Congratulations! $username is authenticated.";} else {print "Access Denied!";} } ?>
Мои пользователи используют Firefox и IE, и я знаю, что они могут легко передавать свои учетные данные ActiveDirectory.
Я просто хочу проверить группу AD, чтобы узнать, найдено ли это имя пользователя, если да, отобразите страницу, в противном случае предложите ввести учетные данные.
Поскольку наши пользователи уже вошли в контроллер домена, я хочу захватить их имя пользователя, проверить, было ли оно обнаружено в определенной группе, а затем включить их, иначе попросите пользователя ввести учетные данные. Как это возможно?
Фактически вам не нужно связываться с сервером Active Directory из вашего кода PP, чтобы добиться того, что вы хотите, учитывая тот факт, что вы используете IIS в качестве своего веб-сервера.
Ключевым словом здесь является Интегрированная проверка подлинности Windows – вот формулировка, которую искал djn. Если этот параметр включен (и анонимный доступ запрещен), IIS проверяет предоставленные учетные данные в отношении привилегий Active Directory и привилегий файловой системы NTFS для запрашиваемых ресурсов. Таким образом, вы можете контролировать доступ к своим файлам с помощью простых механизмов управления доступом NTFS.
Если ваши пользователи используют IE, им даже не нужно вводить свои учетные данные, поскольку это делается автоматически с помощью так называемого SPNEGO (Simple and Protected GSSAPI Negotiation Mechanism) и его базовых механизмов Kerberos или NTLMSSP в зависимости от того, на что способен ваш клиент и сервер обработка.
Насколько я знаю, Firefox может автоматически передавать учетные данные для входа в систему Windows на ваш сервер. Вы должны настроить параметр конфигурации, чтобы включить эту функцию – не знаю, сохраняется ли эта информация в Firefox 3.5.x.
Если вы используете Apache в * nix-системе, вам придется прибегнуть к некоторому серверному модулю для обработки интегрированной системы проверки подлинности Windows . Возможные варианты (не знаю, действительно ли они сохранены или стабильны):
mod_auth_ntlm_winbind
mod_auth_kerb
mod_ntlm
Для Apache в Windows есть:
mod_ntlm
(устаревший, не такой же, как mod_ntlm
выше) mod_auth_sspi
(преемник mod_ntlm
) Имейте в виду, что большинство этих модулей выглядят очень старыми.
Работая сейчас с аналогичной настройкой: я пропустил все эти вещи LDAP, у которых веб-сервер аутентифицировал клиента с помощью AD, прежде чем разрешить ему (извините, я не помню, что это называется в альтернативном юниверсе M $).
Если клиент достигает скрипта PHP, он находится в AD, и у меня есть его имя пользователя как в $_SERVER["AUTH_USER"]
и в $_SERVER["LOGON_USER"]
, иначе он никогда не попадает в скрипт.