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 .
HRESULT ADsOpenObject(
[in] LPCWSTR lpszPathName,
[in] LPCWSTR lpszUserName,
[in] LPCWSTR lpszPassword,
[in] DWORD dwReserved,
[in] REFIID riid,
[out] void **ppObject
);
[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.
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.
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 ».
- 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.
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);
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 |