Condividi tramite


Funzione ADsOpenObject (adshlp.h)

La funzione ADsOpenObject viene associata a un oggetto ADSI usando le credenziali esplicite del nome utente e della password. ADsOpenObject è una funzione wrapper per IADsOpenDSObject ed è equivalente al metodo IADsOpenDSObject::OpenDsObject .

Sintassi

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

Parametri

[in] lpszPathName

Tipo: LPCWSTR

Stringa Unicode con terminazione Null che specifica ADsPath dell'oggetto ADSI. Per altre informazioni ed esempi di codice di stringhe di associazione per questo parametro, vedere LDAP ADsPath e WinNT ADsPath.

[in] lpszUserName

Tipo: LPCWSTR

Stringa Unicode con terminazione Null che specifica il nome utente da fornire al servizio directory da usare per le credenziali. Questa stringa deve essere sempre nel formato "<domain\><user name>" per evitare ambiguità. Ad esempio, se DomainA e DomainB hanno una relazione di trust e entrambi i domini hanno un utente con il nome "user1", non è possibile prevedere quale dominio ADsOpenObject userà per convalidare "user1".

[in] lpszPassword

Tipo: LPCWSTR

Stringa Unicode con terminazione Null che specifica la password da fornire al servizio directory da usare per le credenziali.

[in] dwReserved

Tipo: DWORD

Flag di autenticazione specifici del provider usati per definire le opzioni di associazione. Per altre informazioni, vedere ADS_AUTHENTICATION_ENUM.

[in] riid

Tipo: REFIID

Identificatore di interfaccia per l'interfaccia richiesta in questo oggetto.

[out] ppObject

Tipo: VOID**

Puntatore a un puntatore all'interfaccia richiesta.

Valore restituito

Tipo: HRESULT

Questo metodo supporta i valori restituiti HRESULT standard, inclusi i seguenti.

Per altre informazioni, vedere Codici di errore ADSI.

Commenti

Questa funzione non deve essere usata solo per convalidare le credenziali utente.

Un client C/C++ chiama la funzione helper ADsOpenObject per l'associazione a un oggetto ADSI, usando il nome utente e la password specificati come credenziali per il servizio directory appropriato. Se lpszUsername e lpszPassword sono NULL e ADS_SECURE_AUTHENTICATION è impostato, ADSI viene associato all'oggetto usando il contesto di sicurezza del thread chiamante, ovvero il contesto di sicurezza dell'account utente in cui l'applicazione è in esecuzione o dell'account utente client rappresentato dal thread chiamante.

Le credenziali passate alla funzione ADsOpenObject vengono usate solo con l'oggetto specifico associato a e non influiscono sul contesto di sicurezza del thread chiamante. Ciò significa che, nell'esempio seguente, la chiamata a ADsOpenObject userà credenziali diverse rispetto alla chiamata a 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);

Per usare il provider WinNT: è possibile passare lpszUsername come una delle stringhe seguenti:

  • Nome di un account utente, ovvero "jeffsmith".
  • Nome utente di stile Windows, ovvero "Fabrikam\jeffsmith".
Con il provider LDAP per Active Directory, è possibile passare lpszUsername come una delle stringhe seguenti:
  • Nome di un account utente, ad esempio "jeffsmith". Per usare un nome utente da solo, è necessario impostare solo il flag ADS_SECURE_AUTHENTICATION nel parametro dwReserved .
  • Percorso utente da una versione precedente di Windows, ad esempio "Fabrikam\jeffsmith".
  • Nome distinto, ad esempio "CN=Jeff Smith,OU=Sales,DC=Fabrikam,DC=Com". Per usare un DN, il parametro dwReserved deve essere zero oppure deve includere il flag ADS_USE_SSL .
  • Nome entità utente (UPN), ad esempio "jeffsmith@Fabrikam.com". Per usare un UPN, assegnare il valore UPN appropriato per l'attributo userPrincipalName dell'oggetto utente di destinazione.
Se l'autenticazione Kerberos è necessaria per il completamento di una richiesta di directory specifica tramite il provider LDAP, la stringa di associazione lpszPathName deve usare un ADsPath serverless, ad esempio "LDAP://CN=Jeff Smith,CN=admin,DC=Fabrikam,DC=com", oppure deve usare un ADsPath con un nome completo del server DNS, ad esempio "LDAP://central3.corp.Fabrikam.com/CN=Jeff Smith, CN=admin,DC=Fabrikam,DC=com". L'associazione al server tramite un nome NETBIOS flat o un nome DNS breve, ad esempio, usando il nome breve "central3" anziché "central3.corp.Fabrikam.com", potrebbe o meno restituire l'autenticazione Kerberos.

Nell'esempio di codice seguente viene illustrato come eseguire l'associazione a un oggetto servizio directory con le credenziali utente richieste.

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);

Requisiti

Requisito Valore
Client minimo supportato Windows Vista
Server minimo supportato Windows Server 2008
Piattaforma di destinazione Windows
Intestazione adshlp.h
Libreria Activeds.lib
DLL Activeds.dll

Vedi anche

Codici di errore ADSI

Funzioni ADSI

ADsOpenObject e IADsOpenDSObject::OpenDsObject

Binding

IADsOpenDSObject

IADsOpenDSObject::OpenDsObject