2010-11-08 3 views
5

Одним из новых требований для нашего приложения базы данных является синхронизация содержимого таблицы пользователей с пользователями в Active Directory. Поэтому в основном мне нужно подключиться к серверу Active Directory и получить список имен пользователей из процедуры plsql.Получить список пользователей LDAP с использованием PLSQL

До сих пор я достиг подключения активного сервера каталогов, используя свои собственные учетные данные и запрашивая некоторые атрибуты.

Пример:

ldap_password := '****'; 
ldap_user  := 'cn=me,OU=Users,OU=mygroup,DC=mytown,DC=mycompany,DC=com'; 
ldap_base  := 'OU=Users,OU=mygroup,DC=mytown,DC=mycompany,DC=com'; 
search_filter := '(&(objectClass=Person)!((sn=him)(cn=me)))'; 
res_attrs(1) := 'displayName'; 
res_attrs(2) := 'cn'; 
res_attrs(3) := 'telephoneNumber'; 

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

  • Как я могу получить список имен пользователей?
  • Возможно ли это с использованием любой учетной записи или для этого требуется учетная запись с соответствующими привилегиями?

ответ

3

Rene, Вы можете выполнить поиск в Active Directory через компоненты LDAP Oracle, которые, по-видимому, вы уже затронули. Хотя я не являюсь экспертом в области LDAP/AD, я считаю, что вам могут потребоваться права на выполнение этих действий или еще лучше, но создайте удостоверение личности/пароль, у которого есть права (таким образом вы можете оставить свой id/psw вне системы и разрешить либо без изменений pswrd или pswrd, которые поддерживаются администраторами AD. Я знаю, что у меня всегда был полный запрос доступа к AD, но не уверен, что это то, как я настроен или из-за коробки.

Но посмотрите @ этот сайт http://www.oracle-base.com/articles/9i/LDAPFromPLSQL9i.php

как показывает статья, я рекомендовал бы кожура обратно свой searchFilter (получить более укоротить его вниз, пока она не соответствует вашим потребностям)

  • l_attrs (1): = '*'; - получить все атрибуты l_retval: = DBMS_LDAP.search_s (LD => l_session, базы => l_ldap_base, сферы => DBMS_LDAP.SCOPE_SUBTREE, фильтра => 'ObjectClass = *', ATTRS => l_attrs, attronly => 0, res => l_message);
+0

Спасибо, я уже видел эти примеры. Мой вопрос не о том, как получить некоторые значения с сервера LDAP вообще, но как создать запрос для получения списка пользователей (если это вообще возможно) – Rene

1

В Active Directory имеется около 4 атрибутов именования.

  • sAMAccountName (aka Pre-Windows2000 name) - это короткое имя символа длиной около 20 символов, которое должно быть уникальным в каждом домене.
  • userPrinicipalName, обычно [email protected], но, оказывается, AD будет выполнять почти любую строку. (Я знаю, что это экспериментально, как мы когда-то случайно сбросить 2000 из 6000 таких значений в рабочем домене AD.
  • displayName, то, что проявляется в ADUC (dsa.msc, Active Directory-пользователи и компьютеры)
  • CN= часть DN. Используя ADUC, CN обычно является отображаемым именем. Однако это тоже может быть чем-то легальным в имени LDAP.

Итак, какое «имя» вы ищете?В основном запрос для любого из этих атрибутов в списке и посмотреть, что вы получаете.

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

4

Я получил свой скрипт. Установка области не позволяла мне видеть все данные. DBMS_LDAP.SCOPE_SUBTREE

Смежные вопросы