OpenLdap - объеденить каталоги 2х доменов.

Проблемы с установкой, настройкой и работой системных и сетевых программ.

Модераторы: GRooVE, alexco

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
kharkov_max
капитан
Сообщения: 1862
Зарегистрирован: 2008-10-03 14:56:40

OpenLdap - объеденить каталоги 2х доменов.

Непрочитанное сообщение kharkov_max » 2010-05-14 11:18:35

День добрый.

Необходимо реализовать следующую задачу.

Есть 2 домена на Windows 2003, в каждом домене своя кучка пользователей.
Необходимо слепить этих пользователей в одну кучу (т.е. организовать общий Ldap сервер).
Через этот Ldap сервер будет проходить авторизация пользователя для различных unix сервисов, а также подтягиваться данные (ФИО, номер телефона, должность и т.д.).
Т.е. OpenLdap сервер необходимо заставить работать как прокси для Windows Ldap.

C OpenLdap еще не сталкивался и опыта не имею.
OpenLdap поднимается на Ubuntu 8.04, там же стоит один из сервисов для которых он необходим.
Не пинайте что в разделе freebsd рассматривается другая ОС, важно что подход реализации проксирования одинаковый. По конфигам что на freebsd что на Ubuntu все одинаково. В дальнейшем планируется поднятие OpenLdap как прокси и на Freebsd.

Итак установлен OpenLdap:

Код: Выделить всё

Source: openldap2.3
Version: 2.4.9-0ubuntu0.8.04.3
Так же написаны такие конфиги slapd.conf:

Код: Выделить всё

# allow bind_v2

# Schema and objectClass definitions
include         /etc/ldap/schema/core.schema
include         /etc/ldap/schema/cosine.schema
include         /etc/ldap/schema/nis.schema
include         /etc/ldap/schema/inetorgperson.schema
include         /etc/ldap/schema/openldap.schema
include         /etc/ldap/schema/collective.schema
include         /etc/ldap/schema/java.schema
include         /etc/ldap/schema/corba.schema
include         /etc/ldap/schema/duaconf.schema
include         /etc/ldap/schema/misc.schema
include         /etc/ldap/schema/dyngroup.schema
# include         /etc/ldap/schema/nadf.schema
include         /etc/ldap/schema/ppolicy.schema

pidfile         /var/run/slapd/slapd.pid
argsfile        /var/run/slapd/slapd.args

loglevel        255

modulepath	/usr/lib/ldap
moduleload	back_hdb
moduleload	back_bdb
moduleload	back_ldap
moduleload	back_passwd

sizelimit 500
tool-threads 1
backend		hdb
backend		bdb

#----------------------------DATABASES--------------------------------------
#----------------------External Database-----------------------------------
include /etc/ldap/domain1.conf
#--------------------------------------------------------------------------

#-------------------------OpenLdap Database---------------------------------
database        hdb
suffix          "dc=kh,dc=ua"
rootdn         "cn=admin,dc=kh,dc=ua"
rootpw	   "secret"
directory      "/var/lib/ldap"
dbconfig set_cachesize 0 2097152 0
dbconfig set_lk_max_objects 1500
dbconfig set_lk_max_locks 1500
dbconfig set_lk_max_lockers 1500

lastmod         on
checkpoint      512 30
replogfile	/var/lib/ldap/replog

access to attrs=userPassword,shadowLastChange
        by dn="cn=admin,dc=kh,dc=ua" write
        by anonymous auth
        by self write
        by * none

access to dn.base="" by * read

access to *
        by dn="cn=admin,dc=kh,dc=ua" write
        by * read

# index objectClass eq,pres
# index ou,cn,mail,surname,givenname eq,pres,sub
# index uid eq,pres,sub
#--------------------------------------------------------------------------
и domain1.conf:

Код: Выделить всё

database ldap
subordinate
suffix "dc=domain,dc=local,dc=ua"

rebind-as-user
uri "ldap://192.168.10.254:389/"
rootdn "cn=user,ou=service,ou=usersandgroups,dc=domain,dc=local,dc=ua"
rootpw 1234567890
chase-referrals yes

# access to attr=userPassword
#    by self write
#    by anonymous auth
#    by * none
#access to * by * read
    
# index objectClass eq,pres
# index ou,cn,mail,surname,givenname eq,pres,sub
# index uid eq,pres,sub
Наверняка конфиг domain1.conf не верный ибо если я стартую OpenLdap в том виде как показано в конфигах в логе он мне показывает следующее:

Код: Выделить всё

May 14 10:57:22 budmen slapd[8669]: /etc/ldap/slapd.conf: line 65: rootdn is always granted unlimited privileges.
May 14 10:57:22 budmen slapd[8669]: /etc/ldap/slapd.conf: line 65: warning: cannot assess the validity of the ACL scope within backend naming context
May 14 10:57:22 budmen slapd[8669]: >>> dnNormalize: <cn=Subschema>
May 14 10:57:22 budmen slapd[8669]: <<< dnNormalize: <cn=subschema>
May 14 10:57:22 budmen slapd[8669]: glue: no superior found for sub dc=domain,dc=local,dc=ua!
May 14 10:57:22 budmen slapd[8669]: subordinate config error
May 14 10:57:22 budmen slapd[8669]: slapd destroy: freeing system resources.
May 14 10:57:22 budmen slapd[8669]: slapd stopped.
May 14 10:57:22 budmen slapd[8669]: connections_destroy: nothing to destroy.
В конфиге slapd база данных Windows домена указана раньше чем корневая база OlenLdap.
Так же в базе ldap включена опция subordinate, которая говорит серверу о том что данная база является подчиненной основной базе.
Если стартую сервер без конфига domain1, то через Jxplorer показывает структуру сервера openldap и одного юзера admin.
База Openldap создавалась при инсталяции сервера, т.е. по default.

На данном этапе хочу получить хотя бы список пользователей domain1 с неважно какими данными, авторизация через Ldap пока не интересует.

Делая свой вывод из лога и манов, как я это понимаю, у базы данных Ldap структура отличается то стуктуры domain1.
1. Поможет ли мне создание структуры ldap похожей на domain1 я имею ввиду не всю структуру а какую то ее часть, необходимую в openldap. И вообще нужно ли это ? Может для проксирования это не нужно, а мой сервер не стартует по другой причине ...
2. Если у кого есть наработки или путный пример не поделитесь ?
3. Какие основные моменты необходимо учитывать при создании такой связки ?

В маны и google не посылайте ибо перечитано уже достаточно, толковой доки я не нашел.
Если Вам нужна еще какая нить инфа, я выложу.

Заранее спасибо.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Morty
ст. лейтенант
Сообщения: 1370
Зарегистрирован: 2007-07-17 23:25:12

Re: OpenLdap - объеденить каталоги 2х доменов.

Непрочитанное сообщение Morty » 2010-05-14 12:29:34

1) Win Ldap имееют свою структур "катологов" аля как СКЛ свою структуру таблиц.
2) openLdap изначально не имеет вообще никакой структуры, тоесть ты ее придумываешь/копируешь сам
3) Проксирование в твоем случае это наверно одностороняя репликация
4) при репликации на младшем (если мне не изменяет склероз структуру можно не делать - она вытянеться со старшего)
тоесть не обязательно создавать туже структуру чтобы реплицировать в итоге.

В итоге судя по всему тебе нужно реализовать следующую схему

Код: Выделить всё

            ldap-srv-1
         |                 |
ldap-srv-2       ldap-srv-3
где srv2 и srv3 сливает инфу только в одну сторону а именно на ldap-srv-1
Тоесть одностороняя репликация с ldap-srv-2 и ldap-srv-3 на ldap-srv-1
и соот-но перед внесением инфы на 2 и 3 смотреть чтоб инфа была наверно уникальной на 1
И в конце концов работать с ldap-srv-1

PS: как подружить win-ldap с openLdap без понятия (репликация и какая у него структура я не знаю)
openldap пожалуйста на то он и open

Аватара пользователя
Morty
ст. лейтенант
Сообщения: 1370
Зарегистрирован: 2007-07-17 23:25:12

Re: OpenLdap - объеденить каталоги 2х доменов.

Непрочитанное сообщение Morty » 2010-05-14 12:37:26

или наоборот с 1 давать на 2 и 3 - тебе виднее куда как

Аватара пользователя
kharkov_max
капитан
Сообщения: 1862
Зарегистрирован: 2008-10-03 14:56:40

Re: OpenLdap - объеденить каталоги 2х доменов.

Непрочитанное сообщение kharkov_max » 2010-05-14 12:54:50

4) при репликации на младшем (если мне не изменяет склероз структуру можно не делать - она вытянеться со старшего)
тоесть не обязательно создавать туже структуру чтобы реплицировать в итоге.
Т.е. если мне нужно из Win-AD получить от пользователя следующее (name, samaccountname, mail) то я должен на LDAP сервере создать структуру где у пользователя LDAP будут аналогичные поля. И тогда верно отработает обращение Win-Ldap.
Я вас верно понял ?

Меня сейчас с толку сбивает база OpenLdap т.е. какая лона должна быть и нужна ли на unix отдельная база (локальная) для WinLdap.
Т.е. репликация/запрос будет идти на подчиненную базу Openldap (которую мне нужно создать, bdb) для WinLdap, а потом на основную базу OpenLdap.
Или при обращении к основной базе OpenLdap будут сразу просматриваться (в порядке конфига) внешние Win базы ?

Аватара пользователя
kharkov_max
капитан
Сообщения: 1862
Зарегистрирован: 2008-10-03 14:56:40

Re: OpenLdap - объеденить каталоги 2х доменов.

Непрочитанное сообщение kharkov_max » 2010-05-14 12:59:15

Мне нужно так:

Код: Выделить всё

        
        Win-ldap-srv-2   ->    |
                                        | OpenLdap-srv-1 <-> Client
        Win-ldap-srv-3   ->    |
Т.е. клиент запрашивает данные у OpenLdap а сервер OpenLdap у 2х Win серверов.

Аватара пользователя
kharkov_max
капитан
Сообщения: 1862
Зарегистрирован: 2008-10-03 14:56:40

Re: OpenLdap - объеденить каталоги 2х доменов.

Непрочитанное сообщение kharkov_max » 2010-05-14 13:13:54

где srv2 и srv3 сливает инфу только в одну сторону а именно на ldap-srv-1
Тоесть одностороняя репликация с ldap-srv-2 и ldap-srv-3 на ldap-srv-1
Не думаю что это должна быть именно репликация баз ...
Скорее всего это должен быть запрос c ldap-srv-1 на ldap-srv-2, если не нашли на ldap-srv-3 и ответ от соответствующего сервера, где есть данные по запросу, на сервер ldap-srv-1, а потом клиенту.

Burner
лейтенант
Сообщения: 693
Зарегистрирован: 2009-06-14 7:02:26

Re: OpenLdap - объеденить каталоги 2х доменов.

Непрочитанное сообщение Burner » 2010-05-14 14:21:10

звучит это все как-то не очень. А через трасты разрулить нельзя?

Аватара пользователя
Morty
ст. лейтенант
Сообщения: 1370
Зарегистрирован: 2007-07-17 23:25:12

Re: OpenLdap - объеденить каталоги 2х доменов.

Непрочитанное сообщение Morty » 2010-05-14 14:45:31

Меня сейчас с толку сбивает база OpenLdap т.е. какая лона должна быть и нужна ли на unix отдельная база (локальная) для WinLdap.
я бы больше думал о том что в WinLdap и как оттуда это унести и состыковать.
Попробуй с консоли подкл к вин лдапу и полазить посм - видешь ли ты то что тебе нада
а дальше уже пытаться стянуть это на "опен"

Почему так? (отталкиваюь от того что я не знаю что в ВинЛдап) : Структура лдапа (орг юниты, записи которые в них входят) состоят из определенных полей ObjectClass и пр. Которые могут быть или не быть
доступны в зависимости от того какие схемы подключены и используються.
Схема дает доступ к определенным полям и типам записей. Например в МС ЛДап могут быть свои записи и схемы
так как это комерч решение и делалось в ширь НА ВСЕ. На опенлдапе может совпасть например , или просто походить по "дереву" и выбрать(заменить) для себя те типы которые устроят(также стоит помнить у записей еще есть зависимости - обязат и опциональные)

Вот и нужно сравнить все ли стыкуеться. Не думаю что получиться просто взять и в лоб все стянуть...хотя всякое бывает

Аватара пользователя
kharkov_max
капитан
Сообщения: 1862
Зарегистрирован: 2008-10-03 14:56:40

Re: OpenLdap - объеденить каталоги 2х доменов.

Непрочитанное сообщение kharkov_max » 2010-05-14 16:32:49

Вы предполагаете что для того что б скажем из пхп обратится к ldap microsoft, к примеру для авторизации на сайте, нужно в пхп схему подключать как в AD ? Врятли ...
Достаточно указать пользователя который может читать, его пароль и создать ldap запрос.
Мне кажется что так ...

Ну и исходя из предположения можно и про openldap так же сказать ...
Вопрос как правильно настроить его конфиг что б он мог начать читать данные из AD...
В пхп или другой проге это ldap запрос, а тут возможно это одинаковые поля как в AD.

Но это только предположение ...


Аватара пользователя
kharkov_max
капитан
Сообщения: 1862
Зарегистрирован: 2008-10-03 14:56:40

Re: OpenLdap - объеденить каталоги 2х доменов.

Непрочитанное сообщение kharkov_max » 2010-05-17 14:41:23

Удалось добится определенных результатов.
OpenLdap заработал как прокси для AD.

Т.е. обращаюсь к Opanldap, запрашиваю данные пользователя Domain1 - данные отдаются.
Также подключил и второй домен.

Вот дальнейший вопрос как-то соеденить юзеров определенных групп Domain1 и Domain2 в виртуальную группу OpenLdap.
Что б внешним сервисом обращаться к OU Ldap.

Если кому интерестна данная тема отпишите свои соображения ...

Аватара пользователя
Morty
ст. лейтенант
Сообщения: 1370
Зарегистрирован: 2007-07-17 23:25:12

Re: OpenLdap - объеденить каталоги 2х доменов.

Непрочитанное сообщение Morty » 2010-05-17 15:15:47

OpenLdap заработал как прокси для AD.
1)поясни что это значит в твоем понимании
от дальнейший вопрос как-то соеденить юзеров определенных групп Domain1 и Domain2 в виртуальную группу OpenLdap.
Что б внешним сервисом обращаться к OU Ldap.
2)
у тебя например есть

Код: Выделить всё

ou=Domain1
ou=Domain2
НО поиск можно делать по cn/uid/etc конкретно начиная от

Код: Выделить всё

ou=Domain1(2),dc=srv,dc=local
а можно от корня

Код: Выделить всё

dc=srv,dc=local
тоесть возможно не обязательно "соединять"

Аватара пользователя
kharkov_max
капитан
Сообщения: 1862
Зарегистрирован: 2008-10-03 14:56:40

Re: OpenLdap - объеденить каталоги 2х доменов.

Непрочитанное сообщение kharkov_max » 2010-05-17 17:10:10

1. В моем понимании это - при обращении к OpenLdap и запрашивая какие нить данные юзера Domain1, данные OpenLdap отдает.+ Для запроса данных я использую какого нить юзера Domain1.
2. А тут интерестная фишка...
Пробовал от корня отпрашивать, но не работает, при чем для авторизации пытался подставлять как юзера OpenLdap, так и Domain1.
Если опрашивать от корня Domain1 (dc=domain1,dc=srv,dc=local), то работает (под юзером каждого домена).

В этом варианте у меня получается такое:
1. От корня не работает.
2. Domain1 - dc=domain1,dc=srv,dc=local; Domain2 - dc=domain2,dc=srv,dc=local отдельно работает.

Вот сейчас пытаюсь как то корень домена или OU домена прикрутить к OU OpenLdap.
В теории тогда должно заработать. Но пока не получается ...

Аватара пользователя
kharkov_max
капитан
Сообщения: 1862
Зарегистрирован: 2008-10-03 14:56:40

Re: OpenLdap - объеденить каталоги 2х доменов.

Непрочитанное сообщение kharkov_max » 2010-05-17 17:39:08

Уточнение...

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

Аватара пользователя
kharkov_max
капитан
Сообщения: 1862
Зарегистрирован: 2008-10-03 14:56:40

Re: OpenLdap - объеденить каталоги 2х доменов.

Непрочитанное сообщение kharkov_max » 2010-05-19 12:59:36

Продолжаем...

Подключив Win-Ldap к openldap через базу "database meta" получилось проксировать на win-ldap еще проще, через "database ldap" немного больше конфиг получается. По ману вроде как база meta может соединять данные разных ldap серверов.
Вот конфиг:

Код: Выделить всё

allow bind_v2

include         /etc/ldap/schema/core.schema
include         /etc/ldap/schema/cosine.schema
include         /etc/ldap/schema/nis.schema
include         /etc/ldap/schema/inetorgperson.schema
include         /etc/ldap/schema/openldap.schema

pidfile         /var/run/slapd/slapd.pid
argsfile        /var/run/slapd/slapd.args
loglevel        1

modulepath      /usr/lib/ldap
moduleload      back_bdb
moduleload      back_ldap
moduleload      back_meta
moduleload      rwm.la

sizelimit 10000
tool-threads 1
backend         bdb

database                meta
suffix                  "dc=domain,dc=ua"
rootdn                  "cn=admin,dc=domain,dc=ua"
rootpw                  "secret"
lastmod off

uri                     "ldap://192.168.0.1/dc=domain1,dc=domain,dc=ua"
# rewriteEngine           on
# suffixmassage           "dc=domain,dc=ua" "dc=domain1,dc=domain,dc=ua"
# pseudorootdn          "cn=user,ou=service,dc=domain1,dc=domain,dc=ua"
# pseudorootpw          "1234567890"

uri                    "ldap://192.168.1.1/dc=domain2,dc=domain,dc=ua"
#rewriteEngine          on
#suffixmassage          "dc=domain,dc=ua" "dc=domain2,dc=domain,dc=ua"
#pseudorootdn           "cn=user,ou=int,dc=domain2,dc=domain,dc=ua"
#pseudorootpw           "9876543210"

#------------Подмена атрибутов, если нужна --------------------
overlay rwm
# rwm-map objectclass   account         user
rwm-map attribute     fio             cn
rwm-map attribute     cn              sAMAccountname
rwm-map attribute     *               *
#--------------------------------------------------------------

#access to attr=userPassword
#    by self write
#    by anonymous auth
#    by * none
access to * by * read
При данном конфиге если я от пользователя domain1.domain.ua делаю поиск другого пользователя в domain1.domain.ua то все отрабатывает, т.е. можно посмотреть любые атрибуты. Точно так же работает и с domain2.domain.ua.
Теперь мне необходимо как то слепить определенные ou domain1.domain.ua и domain2.domain.ua (в OU пользователи доменов) в единую виртуальную OU домена domain.ua.

В конфиге есть закоменченые строки после uri, вроде как все это делается через них, но ни как не могу понять почему не работает.
Т.е. как только их включаю то не могу получить данные ни из корневого ни из вложенных доменов. Ругается на не верный логин или пароль пользователя от которого я хочу получить данные.

Так же в логе еще валится такое:

Код: Выделить всё

May 19 12:55:48 host slapd[23049]: config_build_entry: "olcDatabase={-1}frontend"
May 19 12:55:48 host slapd[23049]: config_build_entry: "olcDatabase={0}config"
May 19 12:55:48 host slapd[23049]: WARNING: No dynamic config support for database meta.
May 19 12:55:48 host slapd[23049]: config_build_entry: "olcDatabase={1}meta"
May 19 12:55:48 host slapd[23049]: backend_startup_one: starting "dc=domain,dc=ua"
May 19 12:55:48 host slapd[23049]: slapd starting
Меня смущает это:

Код: Выделить всё

WARNING: No dynamic config support for database meta.
Помогите докрутить даную задачу ...

Аватара пользователя
kharkov_max
капитан
Сообщения: 1862
Зарегистрирован: 2008-10-03 14:56:40

Re: OpenLdap - объеденить каталоги 2х доменов.

Непрочитанное сообщение kharkov_max » 2010-05-19 13:20:08

Если делаю поиск от админа dc=domain,dc=ua, то выдает такое:

Код: Выделить всё

Operations error (1)
Это ошибка доступа к базе домена domain1.domain.ua т.е. под этим пользователем (admin) пытается подключится, но не получается ...


Аватара пользователя
kharkov_max
капитан
Сообщения: 1862
Зарегистрирован: 2008-10-03 14:56:40

Re: OpenLdap - объеденить каталоги 2х доменов.

Непрочитанное сообщение kharkov_max » 2010-05-20 18:07:33

Если кому интерестно, то я задачу частично решил.
Вот конфиг:

Код: Выделить всё

# allow bind_v2

include         /etc/ldap/schema/core.schema
include         /etc/ldap/schema/cosine.schema
include         /etc/ldap/schema/nis.schema
include         /etc/ldap/schema/inetorgperson.schema
include         /etc/ldap/schema/openldap.schema

pidfile         /var/run/slapd/slapd.pid
argsfile        /var/run/slapd/slapd.args
loglevel        1

modulepath	/usr/lib/ldap
moduleload	back_hdb
moduleload	back_bdb
moduleload	back_ldap
moduleload	back_meta
moduleload	rwm.la

sizelimit 500
tool-threads 1
backend		hdb

database		ldap
subordinate
suffix			"dc=domain1,dc=dom,dc=ua"
lastmod			off

uri			"ldap://192.168.0.1:389/"
idassert-bind		bindmethod=simple
idassert-bind		binddn="cn=user,ou=users,dc=domain1,dc=dom,dc=ua"
idassert-bind		credentials="passwd"
idassert-bind		"mode=none"
idassert-authzFrom	"dn:*"
chase-referrals		false

#------------Подмена атрибутов, если нужна --------------------
overlay rwm
rwm-map attribute	fio	 	cn
rwm-map attribute	cn	 	sAMAccountname
rwm-map attribute	*		*
#--------------------------------------------------------------

access to * by * read

database		ldap
subordinate
suffix			"dc=domain2,dc=dom,dc=ua"
lastmod			off

uri			"ldap://192.168.1.1/"
idassert-bind		bindmethod=simple
idassert-bind		binddn="cn=user,ou=myusers,dc=domain2,dc=dom,dc=ua"
idassert-bind		credentials="passwd"
idassert-bind		"mode=none"
idassert-authzFrom	"dn:*"
chase-referrals		false

#------------Подмена атрибутов, если нужна --------------------
overlay rwm
rwm-map attribute	fio	 	cn
rwm-map attribute	cn	 	sAMAccountname
rwm-map attribute	*		*
#--------------------------------------------------------------

access to * by * read

database        hdb
suffix          "dc=dom,dc=ua"
rootdn          "cn=admin,dc=dom,dc=ua"
rootpw          {SSHA}VhpprBYSyL/LwrwBYtGXRxtnslpX8jyy
directory       "/var/lib/ldap"

dbconfig	set_cachesize 0 2097152 0
dbconfig	set_lk_max_objects 1500
dbconfig	set_lk_max_locks 1500
dbconfig	set_lk_max_lockers 1500

index           objectClass eq
# index		cn,sn eq,sub

lastmod         off

checkpoint      512 30

access to attrs=userPassword,shadowLastChange
        by dn="cn=admin,dc=dom,dc=ua" write
        by anonymous auth
        by self write
        by * none

access to dn.base="" by * read
access to * 
	by dn="cn=admin,dc=dom,dc=ua" write 
	by * read
В результате получаем корневой домен dc=dom,dc=ua и в нем еще два домена (отдельно) dc=domain1,dc=dom,dc=ua и dc=domain2,dc=dom,dc=ua.
В корневом домене есть юзер admin который может читать данные 2х "подчиненных" доменов.
Т.е. обращаясь в корень от юзера admin можем читать что угодно из любого домена.

А вот хотелось бы немного не так, а так что б в корневом домене была OU с нужными юзерами (по фильтрам) из 2х доменов.

Аватара пользователя
kharkov_max
капитан
Сообщения: 1862
Зарегистрирован: 2008-10-03 14:56:40

Re: OpenLdap - объеденить каталоги 2х доменов.

Непрочитанное сообщение kharkov_max » 2010-05-28 14:38:27

А если в этот конфиг добавить базу meta, которая позволяет соединять разные ldap, то можно слить 2 домена в один.

Код: Выделить всё

database                meta
suffix                  "dc=meta,dc=local"
lastmod                 off
chase-referrals         false
subordinate
uri                     "ldap://localhost:389/dc=meta,dc=local"
suffixmassage           "dc=meta,dc=local" "dc=domain2,dc=dom,dc=ua"

uri                     "ldap://localhost:389/dc=meta,dc=local"
suffixmassage           "dc=meta,dc=local" "dc=domain2,dc=dom,dc=ua"

access  to *
        by * read
        by * auth
В результате из 2х доменов получаем один виртуальный (сумарный) домен dc=meta,dc=local

Возникает следующий вопрос.
Как можно наложить фильтр на запрос в реальный Ldap.
Т.е. запрашивать не все данные а только, к примеру, пользователей?

Если кто знает, поделитесь пожалуйста информацией...

Burner
лейтенант
Сообщения: 693
Зарегистрирован: 2009-06-14 7:02:26

Re: OpenLdap - объеденить каталоги 2х доменов.

Непрочитанное сообщение Burner » 2010-05-28 16:08:11

по-моему, вам никто не ответит, но вы продолжайте-продолжайте результаты выкладывать. Задача интересная=)

Аватара пользователя
kharkov_max
капитан
Сообщения: 1862
Зарегистрирован: 2008-10-03 14:56:40

Re: OpenLdap - объеденить каталоги 2х доменов.

Непрочитанное сообщение kharkov_max » 2010-05-28 16:11:10

надежда умирает последней ..
)))
Да уж .. интересная ...

Аватара пользователя
Morty
ст. лейтенант
Сообщения: 1370
Зарегистрирован: 2007-07-17 23:25:12

Re: OpenLdap - объеденить каталоги 2х доменов.

Непрочитанное сообщение Morty » 2010-05-28 23:51:28

сорри я пропал немного
вообще похвально :good: ,
про тип meta я както не читал даже
В результате из 2х доменов получаем один виртуальный (сумарный) домен dc=meta,dc=local

Возникает следующий вопрос.
Как можно наложить фильтр на запрос в реальный Ldap.
Т.е. запрашивать не все данные а только, к примеру, пользователей?
Чем/как ты ищешь ? (поиск по лдапу делаешь)
например штатный ldapsearch может искать по любому полю но выводить будет всю "кароточку" записи со всеми полями
Запрос соотвесно может быть если юзеры харняться

Код: Выделить всё

cn/sn по cn или sn или др
соотвесно
Или имееться ввиду при поиске выводить только нужные поля ?

Аватара пользователя
kharkov_max
капитан
Сообщения: 1862
Зарегистрирован: 2008-10-03 14:56:40

Re: OpenLdap - объеденить каталоги 2х доменов.

Непрочитанное сообщение kharkov_max » 2010-05-29 6:55:23

На данный момент в суммарном домене ищет unix сервис, к примеру (proftpd, zimbra).
Если задавать поиск от корня суммарного домена, то сервис затыкается (timeout, слишком большое кол-во данных и т.д).
Поэтому приходится указывать как корень поиска, в сервисе, конкретную OU, к примеру ou=users,dc=domain1,dc=dom
Но в разных доменах пользователи могут лежать в разных OU, не обязательно в ou=users,dc=domain1,dc=dom, а к примеру ou=MYusers,dc=domain1,dc=dom. Вот и была идея на проксирующий запрос накладывать фильтр (что б уменьшить кол-во данных).
Но делать это не через unix сервис, а непосредственно самим openldap.
Т.е. при просмотре суммарного домена, с примененным фильтром (objectClass=users), я вижу только пользователей.
Таким образом в unix сервисе не нужно будет накладывать фильтр.

Вопрос с нахождением юзеров в разных доменах в разных OU я решил.
При грамотном использовании:

Код: Выделить всё

uri                     "ldap://localhost:389/dc=meta,dc=local"
suffixmassage           "dc=meta,dc=local" "dc=domain2,dc=dom,dc=ua"
Можно разбросанные OU разных доменов слить в одну OU, соответственно на каждую такую OU один запрос uri и suffixmassage.
Но это решение кривоватое, как мне кажется.
Хателось бы использовать такие фичи как:
- если пользователь не находится в группе mail, то его не выводим в virtual LDAP
- если у пользователя не заполнено поле mail по шаблону %*@mydomain1.com, то не выводим в virtual LDAP
и т.д.

Вот так вот ...

Аватара пользователя
kharkov_max
капитан
Сообщения: 1862
Зарегистрирован: 2008-10-03 14:56:40

Re: OpenLdap - объеденить каталоги 2х доменов.

Непрочитанное сообщение kharkov_max » 2010-05-29 7:09:58

Добавлю ...
1. Если решить вопрос с фильтром, то тогда не нужно будет привязываться к OU.

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

2. Может выше я не правильно разъяснил:
Чем/как ты ищешь ? (поиск по лдапу делаешь)
Проверку работы Openldap делаю через ldap браузер Jxplorer, так вот я хочу в Jxplorer в суммарном домене увидеть только пользователей.
На данный момент, это либо все дерево AD либо конкретный узел.

Аватара пользователя
Morty
ст. лейтенант
Сообщения: 1370
Зарегистрирован: 2007-07-17 23:25:12

Re: OpenLdap - объеденить каталоги 2х доменов.

Непрочитанное сообщение Morty » 2010-05-29 14:11:44

вообщем я всеравно не сильно понимаю такую связку а именно:
- "проксирование" лдап запросов , зачем ставить 1-3 лдап серверов которые на себе ничего не несут а только проксируют
- тк он на себе ничего не несет этот проксирующий то выходит что он выдает кучу данных не упорядоченных и много чего не нужного , опять получаетья - смысл такого ??

Одним словом еслиб у меня стояла такая задача то я делал бы както через репликацию
посм http://www.openldap.org/doc/admin24/rep ... onfiguring the different replication types
там очень много различных вариантов: возможно указать от кого работать, для какого серва
от какого "места" в данном случае для какого конкретного OU делать репликацию а не все скопом

Соотвесно в итоге можно попытаться получиться какое-то подобие каталогов где будут нужные данные