Поделиться через


Привязка с помощью GetObject и ADsGetObject

Функции GetObject и ADsGetObject используются для привязки к объектам службы каталогов без проверки подлинности. Приложению не требуется предоставлять учетные данные при доступе к данным службы каталогов. ADSI использует контекст безопасности вызывающего потока. Однако если безопасная проверка подлинности завершается ошибкой, ADSI пытается выполнить простую привязку с именем пользователя NULL и паролем NULL. Если простая привязка выполнена успешно, контекст пользователя для привязки является гостевым. Простая привязка использует проверку подлинности с открытым текстом. Так как имя пользователя или пароль не передаются по сети, это не проблема безопасности.

Функция GetObject используется для привязки к объектам службы каталогов на языках, поддерживающих автоматизацию, например Visual Basic. Для функции GetObject требуется моникерная строка. В ADSI строка привязки — это моникерная строка.

На языках, которые напрямую не поддерживают автоматизацию, например C или C++, ADSI предоставляет функцию ADsGetObject для привязки к объектам службы каталогов. Кроме того, функции MkParseDisplayName и MkParseDisplayNameEx можно использовать для достижения того же результата, что и GetObject.

Для службы, работающей под учетной записью LocalSystem, контекст безопасности, используемый GetObject и ADsGetObject, зависит от компьютера, на котором выполняется служба. Если служба выполняется как LocalSystem на контроллере домена, служба имеет полный системный доступ к Active Directory. Если служба не запущена на контроллере домена, служба имеет права доступа и привилегии, предоставленные учетной записи компьютера для компьютера, на котором работает служба; это значительно меньше, чем доступ на уровне системы.

Примеры

В следующем примере кода Visual Basic показано, как использовать функцию GetObject для привязки к объекту.

Dim myUser as IADs
Set myUser = GetObject("LDAP://CN=jeffsmith,DC=fabrikam,DC=com")

В следующем примере кода C++ показано, как использовать функцию ADsGetObject для привязки к объекту.

IADs *pObject;
HRESULT hr;

// Initialize COM.
CoInitialize(NULL);

hr = ADsGetObject(L"LDAP://CN=jeffsmith,DC=fabrikam,DC=com", 
        IID_IADs,
        (void**) &pObject);

if(SUCCEEDED(hr))
{
    // Use the object.

    // Release the object.
    pObject->Release()
}

// Uninitialize COM.
CoUninitialize();