Чтение атрибутов пользователя (Имени, фамилии) из ActiveDirectory
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Чтение атрибутов пользователя (Имени,... Expand / Collapse
Автор
Сообщение
10.02.2007 17:42
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme 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("&nbsp;&nbsp;&nbsp; RsUserInfo.Fields.Count:"""+trim(RsUserInfo.Fields.Count)+"""<br>")
 For i=0 to RsUserInfo.Fields.Count-1
       Response.Write("&nbsp;&nbsp;&nbsp; "&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 (Фамилия, имя, отчество и другие)

Сообщ. #910661
16.02.2007 8:26
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 14.12.2007 18:22
Сообщ.: 131, Visits: 824
Вопрос снят, помог LdapBrowser
Сообщ. #910854
16.02.2007 8:28
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 14.12.2007 18:22
Сообщ.: 131, Visits: 824
Вопрос снят, решается выбором порта в Ldap-запросе
Сообщ. #910855
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl

Время GMT +3:00, Сейчас 8:44