Аутентифицироваться против ldap, используя PHP, активный каталог, используя IE / Firefox - PullRequest
6 голосов
/ 06 октября 2009

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

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

Ответы [ 2 ]

8 голосов
/ 07 октября 2009

На самом деле вам не нужно взаимодействовать с сервером Active Directory из кода PP, чтобы достичь того, чего вы хотите, учитывая тот факт, что вы используете IIS в качестве веб-сервера.

Ключевое слово здесь: Встроенная проверка подлинности Windows - это формулировка, которую djn искал . Если этот параметр включен (и анонимный доступ запрещен), IIS проверит предоставленные учетные данные в отношении Active Directory и привилегий файловой системы NTFS для запрошенных ресурсов. Поэтому вы можете контролировать доступ к своим файлам, используя простые механизмы контроля доступа NTFS.

Если ваши пользователи используют IE, им даже не нужно вводить свои учетные данные, поскольку это делается автоматически с помощью так называемого SPNEGO (простой и защищенный механизм согласования GSSAPI) и его базовых механизмов Kerberos или NTLMSSP в зависимости от того, что способен обработать ваш клиент и сервер.

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

Если вы используете Apache в * nix-системе, вам придется прибегнуть к некоторому серверному модулю для обработки встроенной системы аутентификации Windows . Возможные варианты (не знаю, сохраняются ли они на самом деле или стабильны):

Для Apache в Windows есть:

  • mod_ntlm (устаревший; не совпадает с mod_ntlm выше)
  • mod_auth_sspi (преемник mod_ntlm)

Обратите внимание, что большинство из этих модулей, кажется, очень старые.

1 голос
/ 07 октября 2009

Работая только сейчас над аналогичной настройкой: я пропустил все эти LDAP-вещи с веб-сервером, аутентифицирующим клиента с помощью AD, прежде чем впустить его (извините, я не могу вспомнить, как это называется в альтернативной вселенной M $).

Если клиент достигает сценария PHP, он находится в AD, и у меня есть его имя пользователя как в $_SERVER["AUTH_USER"], так и в $_SERVER["LOGON_USER"], в противном случае он никогда не попадет в сценарий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...