вторник, 24 июля 2007 г.

Разбираемся с LDAP

Начал работу над новым проектом. Он очень большой. И пока мной не охваченный. Т.е. я примерно знаю что это будет, но как это делать, ещё ясности нет.

Одной из текущих задач является разобраться с LDAP, т.к. проект будет крутится внутри локальной сети, а она использует домены для авторизации. Попадание извне на этот портал пока не предусмотрено.

На данный моменты было найдено несколько средств работы с этой службой каталогов.

  • Во-первых сам php довольно хорошо о ней осведомлён (мануал), если его предусмотрительно скомпилировать с поддержкой LDAP.
  • Во-вторых, есть модуль для Apache, mod_ntlm, который, вроде, поддерживает авторизацию по LDAP, но он для меня ещё тёмный лес. И преимущества, предоставляемые им для меня не очевидны. Кроме того, что он позволяет проводить авторизацию самостоятельно, т.е. без участия php, как Basic http authorization (или как-то так)
  • В-третьих есть обертка (wrapper) в виде класса, которая позволяет удобно и не нудно работать с LDAP

Однако, при поиске способов извлечения данных об авторизации пользователем в сети, я пришел к выводу, что сделать это можно только для IE. Т.к. он тесно интегрирован в Windows и умеет сам посылать заголовки о том, что он авторизован. Заодно, можно и имя пользователя извлекать (топик, faq). Не уверен, что этот способ приемлем, но всё же это лучше, чем ничего.

Пока вывод такой: сделать авторизацию, запрашивая LDAP можно. Выдрать имя пользователя, если используется не IE - нельзя.

4 комментария:

Денис Радченко комментирует...

Как ваш опыт работы с LDAP? Я думаю, стоит ли использовать OpenLDAP для хранилища персональных данных вместо MySQL. Плюсов вижу пока два: 1) возможность назначения произвольных полей 2) поступ к каталогу из других приложений
Недостаток один: Поднимать LDAP, изучать новый способ и т.д.

Насколько тяжело работать с LDAP из PHP?

Макс комментирует...

Мой опыт работы с LDAP оставляет желать лучшего, но... Могу четко сказать, что работать легко! Главное понять алгоритм работы.

Если волнует авторизация, то вот мой тебе примерчик:
function authLDAP($ldap,$usrname,$password){
if(@ldap_bind($ldap,"iat" .DIRECTORY_SEPARATOR. $usrname,$password))
return true;
else
return false;
}

$ldap - тута лежит подключение
$usrname,$password - ну а это и без коммента понятно :)

Рад если чем помог :) :) :)

Анонимный комментирует...

Who knows where to download XRumer 5.0 Palladium?
Help, please. All recommend this program to effectively advertise on the Internet, this is the best program!

Анонимный комментирует...

Is it possible to contact administration?
Hope for no silence