Bindung mit GetObject und ADsGetObject
Die Funktionen GetObject und ADsGetObject werden zum Binden an Verzeichnisdienstobjekte ohne Authentifizierung verwendet. Die Anwendung muss beim Zugriff auf Verzeichnisdienstdaten keine Anmeldeinformationen angeben. ADSI verwendet den Sicherheitskontext des aufrufenden Threads. Wenn die sichere Authentifizierung jedoch fehlschlägt, versucht ADSI, eine einfache Bindung mit einem NULL-Benutzernamen und null-Kennwort auszuführen. Wenn die einfache Bindung erfolgreich ist, lautet der Benutzerkontext für die Bindung Gast. Eine einfache Bindung verwendet die Klartextauthentifizierung. Da kein Benutzername oder Kennwort über das Netzwerk übertragen wird, ist dies kein Sicherheitsproblem.
Die GetObject-Funktion wird verwendet, um an Verzeichnisdienstobjekte in Sprachen zu binden, die die Automatisierung unterstützen, z. B. Visual Basic. Die GetObject-Funktion erfordert eine Monikerzeichenfolge. In ADSI ist die Bindungszeichenfolge die Monikerzeichenfolge.
In Sprachen, die die Automatisierung nicht direkt unterstützen, z. B. C oder C++, stellt ADSI die ADsGetObject-Funktion bereit, um an Verzeichnisdienstobjekte zu binden. Alternativ können die Funktionen MkParseDisplayName und MkParseDisplayNameEx verwendet werden, um dasselbe Ergebnis wie GetObject zu erzielen.
Bei einem Dienst, der unter dem Konto LocalSystem ausgeführt wird, hängt der von GetObject und ADsGetObject verwendete Sicherheitskontext vom Computer ab, auf dem der Dienst ausgeführt wird. Wenn der Dienst als LocalSystem auf einem Domänencontroller ausgeführt wird, verfügt der Dienst über vollständigen Zugriff auf Active Directory auf Systemebene. Wenn der Dienst nicht auf einem Dc ausgeführt wird, verfügt der Dienst über die Zugriffsrechte und Berechtigungen, die dem Computerkonto für den Computer gewährt werden, auf dem der Dienst ausgeführt wird. dies ist deutlich weniger leistungsfähig als der Zugriff auf Systemebene.
Beispiele
Das folgende Visual Basic-Codebeispiel zeigt, wie Sie die GetObject-Funktion verwenden, um an ein Objekt zu binden.
Dim myUser as IADs
Set myUser = GetObject("LDAP://CN=jeffsmith,DC=fabrikam,DC=com")
Das folgende C++-Codebeispiel zeigt, wie Die ADsGetObject-Funktion zum Binden an ein Objekt verwendet wird.
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();