Liaison avec GetObject et ADsGetObject
Les fonctions GetObject et ADsGetObject sont utilisées pour lier des objets de service d’annuaire sans authentification. L’application n’est pas tenue de fournir des informations d’identification lors de l’accès aux données du service d’annuaire. ADSI utilise le contexte de sécurité du thread appelant. Toutefois, si l’authentification sécurisée échoue, ADSI tente d’effectuer une liaison simple avec un nom d’utilisateur null et un mot de passe null. Si la liaison simple réussit, le contexte utilisateur de la liaison est Invité. Une liaison simple utilise l’authentification en texte clair. Étant donné qu’aucun nom d’utilisateur ou mot de passe n’est transmis sur le réseau, il ne s’agit pas d’un problème de sécurité.
La fonction GetObject est utilisée pour lier des objets de service d’annuaire dans des langages qui prennent en charge l’automatisation, comme Visual Basic. La fonction GetObject nécessite une chaîne moniker. Dans ADSI, la chaîne de liaison est la chaîne moniker.
Dans les langages qui ne prennent pas directement en charge l’automatisation, tels que C ou C++, ADSI fournit la fonction ADsGetObject pour établir une liaison avec des objets de service d’annuaire. Vous pouvez également utiliser les fonctions MkParseDisplayName et MkParseDisplayNameEx pour obtenir le même résultat que GetObject.
Pour un service s’exécutant sous le compte LocalSystem, le contexte de sécurité utilisé par GetObject et ADsGetObject dépend de l’ordinateur sur lequel le service s’exécute. Si le service s’exécute en tant que LocalSystem sur un contrôleur de domaine, le service dispose d’un accès complet au niveau du système à Active Directory. Si le service ne s’exécute pas sur un contrôleur de domaine, le service dispose des droits d’accès et des privilèges accordés au compte d’ordinateur pour l’ordinateur sur lequel le service s’exécute ; elle est beaucoup moins puissante que l’accès au niveau du système.
Exemples
L’exemple de code Visual Basic suivant montre comment utiliser la fonction GetObject pour établir une liaison à un objet.
Dim myUser as IADs
Set myUser = GetObject("LDAP://CN=jeffsmith,DC=fabrikam,DC=com")
L’exemple de code C++ suivant montre comment utiliser la fonction ADsGetObject pour établir une liaison à un objet.
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();