none
Авторизация при обращении к AD RRS feed

  • Вопрос

  • Пробема след. характера:
    есть домен на базе сервера 2003, есть AD, и всё было бы прекрасно но тут я решил сделать одну финтифлюшку :)

        Const ADS_SCOPE_SUBTREE = 2
        Set objConnection = CreateObject("ADODB.Connection")
        Set objCommand = CreateObject("ADODB.Command")
        objConnection.Provider = "ADsDSOObject"
        objConnection.Open "Active Directory Provider"
        Set objCommand.ActiveConnection = objConnection
        objCommand.Properties("Page Size") = 1000
        objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
        objCommand.CommandText = "SELECT name,comment,distinguishedName FROM 'LDAP://dc=<censored>,dc=<censored>' WHERE objectCategory='computer'"

    с помощью этого стандартного заклинания конектимся к ад. и такая тема нормально работет.

    но охото, чтобы такой запрос в AD работал от локального администратора, а не доменной учётной записи. при выполнении скрипта из под локального админа, скрипт не взарщает ни какой таблицы и выскакивает ошибка. Очевидно, локальный администратор не имеет доступа в AD, значит нам надо авторизоваться в АД от имени другого юзера, (но сам скрипт должен быть запущен от имени локального админа!)...
    я пробовал в коннекторе указать "*;User ID = логин;Password = пароль;"
    но эффект такой же :(

    подскажите где копать
    Oloth Teken'duis

Ответы

  • у вас компьютер на котором вы пытаетесь выполнить данный скрипт входит в домен?
    если нет то CommandText переделайте на следующий:
    objCommand.CommandText = "SELECT name,comment,distinguishedName FROM 'LDAP://domain.com /dc=<censored>,dc=<censored>' WHERE objectCategory='computer'"
    или
    objCommand.CommandText = "SELECT name,comment,distinguishedName FROM 'LDAP://dc.domain.com /dc=<censored>,dc=<censored>' WHERE objectCategory='computer'"
    или
    objCommand.CommandText = "SELECT name,comment,distinguishedName FROM 'LDAP://dc.ip.address /dc=<censored>,dc=<censored>' WHERE objectCategory='computer'"


    mcp, mcdba, mcsa, mcse, ccna
    • Помечено в качестве ответа Roman Mejtes 18 мая 2009 г. 8:43
  • вот пример из инета..
    http://www.eggheadcafe.com/forumarchives/adsigeneral/Aug2005/post23241433.asp
    mcp, mcdba, mcsa, mcse, ccna
    • Помечено в качестве ответа Roman Mejtes 18 мая 2009 г. 8:44

Все ответы

  • objConnection.Properties("User ID") = "administrator@domain.com"
    objConnection.Properties("Password") = "P@ssw0rd"
    mcp, mcdba, mcsa, mcse, ccna
  • нефига не работает :( вы сами проверяли?
    Oloth Teken'duis
  • у вас компьютер на котором вы пытаетесь выполнить данный скрипт входит в домен?
    если нет то CommandText переделайте на следующий:
    objCommand.CommandText = "SELECT name,comment,distinguishedName FROM 'LDAP://domain.com /dc=<censored>,dc=<censored>' WHERE objectCategory='computer'"
    или
    objCommand.CommandText = "SELECT name,comment,distinguishedName FROM 'LDAP://dc.domain.com /dc=<censored>,dc=<censored>' WHERE objectCategory='computer'"
    или
    objCommand.CommandText = "SELECT name,comment,distinguishedName FROM 'LDAP://dc.ip.address /dc=<censored>,dc=<censored>' WHERE objectCategory='computer'"


    mcp, mcdba, mcsa, mcse, ccna
    • Помечено в качестве ответа Roman Mejtes 18 мая 2009 г. 8:43
  • А так:
    Dim MyNamespace As IADsOpenDSObject
    Dim X
    oUsername="MyUserName"
    oPassword="MyPassword"

    OnError GoTo CleanuUp

    Set MyNamespace = GetObject("LDAP:")

    ' For authentication, pass a variable for the user name and password to be used for
    ' authentication. For security reasons, it is recommended that you use the ADS_SECURE_AUTHENTICATION flag.
    '
    Set X = MyNamespace.OpenDSObject(DN, oUserName, oPassword, ADS_SECURE_AUTHENTICATION)

    CleanUp:
    MsgBox ("An error has occurred.")
    Set MyNamespace = Nothing
    Set X = Nothing
    http://msdn.microsoft.com/en-us/library/aa772309.aspx
    Если ответ Вам помог, нажмите на изображение зеленой галочки - «пометить как ответ». Если ответ был для Вас полезен, Вы можете пометить это сообщение как «полезное», нажав на ссылку "проголосовать за полезное сообщение" в правом верхнем углу сообщения.
  • вот пример из инета..
    http://www.eggheadcafe.com/forumarchives/adsigeneral/Aug2005/post23241433.asp
    mcp, mcdba, mcsa, mcse, ccna
    • Помечено в качестве ответа Roman Mejtes 18 мая 2009 г. 8:44
  • Ну вы звери :))) короче не один из ваших ответов не подошел :)) но когда я всё выше перечисленное объеденил :))) всё заработало :) так что всем + в репу :)

        '-----------< Константы >-------------
        Const ADS_SCOPE_SUBTREE = 2
        Const ADS_SECURE_AUTHENTICATION = 1
        '-----------< Создание объектов >-------------
        Set objConnection = CreateObject("ADODB.Connection")
            objConnection.Provider = "ADsDSOObject"
            objConnection.Properties("User ID") = "домен\логин"
            objConnection.Properties("Password") = "пароль"
            objConnection.Properties("ADSI Flag") = ADS_SECURE_AUTHENTICATION
            objConnection.Open "Active Directory Provider"
        
        Set objCommand = CreateObject("ADODB.Command")
        Set objCommand.ActiveConnection = objConnection
            objCommand.Properties("Page Size") = 1000
            objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
        '-----------< Строка запроса >-------------
        CommandText = "SELECT name,comment,distinguishedName FROM 'LDAP://домен.ру/dc=домен,dc=ру' WHERE objectCategory='категория и всякие условия'"
    
        objCommand.CommandText = CommandText
        '-----------< Выполнение запроса >-------------
        Set objRecordset = objCommand.Execute
    

    Oloth Teken'duis