Аутентификация против ldap с использованием PHP, активного каталога при использовании IE / Firefox

Этот код ниже проверяет учетные данные пользователя против 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, чтобы узнать, найдено ли это имя пользователя, если да, отобразите страницу, в противном случае предложите ввести учетные данные.

Поскольку наши пользователи уже вошли в контроллер домена, я хочу захватить их имя пользователя, проверить, было ли оно обнаружено в определенной группе, а затем включить их, иначе попросите пользователя ввести учетные данные. Как это возможно?

Related of "Аутентификация против ldap с использованием PHP, активного каталога при использовании IE / Firefox"

Фактически вам не нужно связываться с сервером 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"] , иначе он никогда не попадает в скрипт.