|
|
|
Supreme Being
      
участник
Last Login: 14.12.2007 18:22
Сообщ.: 131,
Visits: 824
|
|
Дано: Login пользователя Требуется: найти Фамилию, Имя пользователя в ActiveDirectory. Для получения доступа к ActiveDirectory откомпилировал и зарегистрировал DLL с функцией getUser(...), параметры получает, но не все. Итак, текст функции в DLL: Function getUser(ByVal strCnName As String, ByVal DC0 As String, ByVal DC1 As String, ByVal DC2 As String) As Recordset 'Получение информации о пользователе strCnName On Error GoTo ErrorHandler 'Соединение с Active Directory Dim cn As New Connection cn.CursorLocation = adUseClient cn.Provider = "ADsDSOObject" cn.Open 'Установка набора записей Dim rs As New Recordset Set rs.ActiveConnection = cn 'выполнение запроса Dim str As String str = "select cn, sAMAccountName, company, title, telephoneNumber" & " from 'LDAP://CN=" & strCnName & ",CN=" & DC0 & ",DC=" & DC1 & ",DC=" & DC2 & "'" '-к этой строке запроса вернемся чуть позже. rs.Source = str rs.Open 'отсоединение набора записей Set rs.ActiveConnection = Nothing cn.Close 'Возвращение записи Set getUser = rs Exit Function ErrorHandler: Err.Raise Err.Number, Err.Source, "GetUser from .dll: " & Err.Description End Function Пишу программу на VBScript (выбор языка объектного программирования в принципе неважен): Set obj = Server.CreateObject("asp0202.tstweb") -здесь имя DLL и имя класса, которому принадлежит функция User = "Administrator" CN0 = "Users" CN1 = "admkrs" CN2 = "ru" Set RsUserInfo = obj.getUser(User, CN0, CN1, CN2) Response.Write(" RsUserInfo.Fields.Count:"""+trim(RsUserInfo.Fields.Count)+"""<br>") For i=0 to RsUserInfo.Fields.Count-1 Response.Write(" "&trim(i)&":"""+RsUserInfo.Fields(i)+"""<br>") next
Все работает, но мне нужно получить и другие текстовые атрибуты записи пользователя в ActiveDirectory Проблема в том, что я не знаю имен полей всех атрибутов.
Если в DLL в функции getUser написать запрос, в котором указать * вместо конкретных имен полей, то Recordset возвращает только одно поле: RsUserInfo.Fields.Count = 1 созначением: RsUserInfo.Fields(0)="LDAP://CN=Administrator,CN=Users,DC=admkrs,DC=ru"
Вопрос: возможно ли запросить сразу все поля атрибутов пользователя (что-то вроде "select * From LDAP//..."-но этот запрос точно не возвращает всех записей)? Если нет, то подскажите имена полей атрибутов пользователя, которые возможно прочитать в ActiveDirectory (Фамилия, имя, отчество и другие)
|
|
|
|
|
Supreme Being
      
участник
Last Login: 14.12.2007 18:22
Сообщ.: 131,
Visits: 824
|
|
| Вопрос снят, помог LdapBrowser
|
|
|
|
|
Supreme Being
      
участник
Last Login: 14.12.2007 18:22
Сообщ.: 131,
Visits: 824
|
|
| Вопрос снят, решается выбором порта в Ldap-запросе
|
|
|
|