Fonction ADsOpenObject (adshlp.h)

La fonction ADsOpenObject est liée à un objet ADSI à l’aide d’informations d’identification explicites de nom d’utilisateur et de mot de passe. ADsOpenObject est une fonction wrapper pour IADsOpenDSObject et équivaut à la méthode IADsOpenDSObject ::OpenDsObject .

Syntaxe

HRESULT ADsOpenObject(
  [in]  LPCWSTR lpszPathName,
  [in]  LPCWSTR lpszUserName,
  [in]  LPCWSTR lpszPassword,
  [in]  DWORD   dwReserved,
  [in]  REFIID  riid,
  [out] void    **ppObject
);

Paramètres

[in] lpszPathName

Type : LPCWSTR

Chaîne Unicode terminée par null qui spécifie l’ADsPath de l’objet ADSI. Pour plus d’informations et des exemples de code de chaînes de liaison pour ce paramètre, consultez LDAP ADsPath et WinNT ADsPath.

[in] lpszUserName

Type : LPCWSTR

Chaîne Unicode terminée par null qui spécifie le nom d’utilisateur à fournir au service d’annuaire à utiliser pour les informations d’identification. Cette chaîne doit toujours être au format «< domaine\nom> d’utilisateur>< » pour éviter toute ambiguïté. Par exemple, si DomainA et DomainB ont une relation d’approbation et que les deux domaines ont un utilisateur portant le nom « user1 », il n’est pas possible de prédire quel domaine ADsOpenObject utilisera pour valider « user1 ».

[in] lpszPassword

Type : LPCWSTR

Chaîne Unicode terminée par null qui spécifie le mot de passe à fournir au service d’annuaire à utiliser pour les informations d’identification.

[in] dwReserved

Type : DWORD

Indicateurs d’authentification spécifiques au fournisseur utilisés pour définir les options de liaison. Pour plus d’informations, consultez ADS_AUTHENTICATION_ENUM.

[in] riid

Type : REFIID

Identificateur d’interface pour l’interface demandée sur cet objet.

[out] ppObject

Type : VOID**

Pointeur vers un pointeur vers l’interface demandée.

Valeur retournée

Type : HRESULT

Cette méthode prend en charge les valeurs de retour HRESULT standard, notamment les suivantes.

Pour plus d’informations, consultez Codes d’erreur ADSI.

Remarques

Cette fonction ne doit pas être utilisée uniquement pour valider les informations d’identification de l’utilisateur.

Un client C/C++ appelle la fonction d’assistance ADsOpenObject pour établir une liaison à un objet ADSI, en utilisant le nom d’utilisateur et le mot de passe fournis comme informations d’identification pour le service d’annuaire approprié. Si lpszUsername et lpszPassword ont la valeur NULL et que ADS_SECURE_AUTHENTICATION est défini, ADSI est lié à l’objet à l’aide du contexte de sécurité du thread appelant, qui est le contexte de sécurité du compte d’utilisateur sous lequel l’application s’exécute ou du compte d’utilisateur client que le thread appelant emprunte l’identité.

Les informations d’identification passées à la fonction ADsOpenObject sont utilisées uniquement avec l’objet particulier lié à et n’affectent pas le contexte de sécurité du thread appelant. Cela signifie que, dans l’exemple ci-dessous, l’appel à ADsOpenObject utilise des informations d’identification différentes de celles de l’appel à ADsGetObject.

HRESULT hr;
IADs *padsRoot1;
IADs *padsRoot2;

hr = ADsOpenObject(L"LDAP://rootDSE",
    pwszUsername,
    pwszPassword,
    ADS_SECURE_AUTHENTICATION,
    IID_IADs,
    (LPVOID*)&padsRoot1);

hr = ADsGetObject(L"LDAP://rootDSE",
    IID_IADs,
    (LPVOID*)&padsRoot2);

Pour utiliser le fournisseur WinNT :, vous pouvez passer lpszUsername comme l’une des chaînes suivantes :

  • Nom d’un compte d’utilisateur, c’est-à-dire « jeffsmith ».
  • Nom d’utilisateur de style Windows, c’est-à-dire « Fabrikam\jeffsmith ».
Avec le fournisseur LDAP pour Active Directory, vous pouvez passer lpszUsername comme l’une des chaînes suivantes :
  • Nom d’un compte d’utilisateur, tel que « jeffsmith ». Pour utiliser un nom d’utilisateur seul, vous devez définir uniquement l’indicateur ADS_SECURE_AUTHENTICATION dans le paramètre dwReserved .
  • Chemin d’accès utilisateur d’une version précédente de Windows, tel que « Fabrikam\jeffsmith ».
  • Nom unique, tel que « CN=Jeff Smith,OU=Sales,DC=Fabrikam,DC=Com ». Pour utiliser un DN, le paramètre dwReserved doit être égal à zéro ou inclure l’indicateur ADS_USE_SSL .
  • Nom d’utilisateur principal (UPN), tel que «jeffsmith@Fabrikam.com ». Pour utiliser un UPN, affectez la valeur UPN appropriée pour l’attribut userPrincipalName de l’objet utilisateur cible.
Si l’authentification Kerberos est requise pour la réussite d’une demande d’annuaire spécifique à l’aide du fournisseur LDAP, la chaîne de liaison lpszPathName doit utiliser un ADsPath serverless, tel que « LDAP ://CN=Jeff Smith,CN=admin,DC=Fabrikam,DC=com », ou utiliser un ADsPath avec un nom de serveur DNS complet, tel que « LDAP://central3.corp.Fabrikam.com/CN=Jeff Smith, CN=admin,DC=Fabrikam,DC=com ». La liaison au serveur à l’aide d’un nom NETBIOS plat ou d’un nom DNS court, par exemple, en utilisant le nom court « central3 » au lieu de « central3.corp.Fabrikam.com », peut ou non générer l’authentification Kerberos.

L’exemple de code suivant montre comment établir une liaison à un objet de service d’annuaire avec les informations d’identification utilisateur demandées.

IADs *pObject;
LPWSTR szUsername = NULL;
LPWSTR szPassword = NULL
HRESULT hr;

// Insert code to securely retrieve the user name and password.

hr = ADsOpenObject(L"LDAP://CN=Jeff,DC=Fabrikam,DC=com",
                   "jeffsmith",
                   "etercespot",
                   ADS_SECURE_AUTHENTICATION, 
                   IID_IADs,
                   (void**) &pObject);

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista
Serveur minimal pris en charge Windows Server 2008
Plateforme cible Windows
En-tête adshlp.h
Bibliothèque Activeds.lib
DLL Activeds.dll

Voir aussi

Codes d’erreur ADSI

Fonctions ADSI

ADsOpenObject et IADsOpenDSObject ::OpenDsObject

Binding

IADsOpenDSObject

IADsOpenDSObject ::OpenDsObject