Bagikan melalui


Fungsi ADsOpenObject (adshlp.h)

Fungsi ADsOpenObject mengikat objek ADSI menggunakan kredensial nama pengguna dan kata sandi eksplisit. ADsOpenObject adalah fungsi pembungkus untuk IADsOpenDSObject dan setara dengan metode IADsOpenDSObject::OpenDsObject .

Sintaks

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

Parameter

[in] lpszPathName

Jenis: LPCWSTR

String Unicode yang dihentikan null yang menentukan ADsPath dari objek ADSI. Untuk informasi selengkapnya dan contoh kode string pengikatan untuk parameter ini, lihat LDAP ADsPath dan WinNT ADsPath.

[in] lpszUserName

Jenis: LPCWSTR

String Unicode yang dihentikan null yang menentukan nama pengguna untuk diberikan ke layanan direktori yang akan digunakan untuk kredensial. String ini harus selalu dalam format "<domain\><user name>" untuk menghindari ambiguitas. Misalnya, jika DomainA dan DomainB memiliki hubungan kepercayaan dan kedua domain memiliki pengguna dengan nama "user1", tidak mungkin untuk memprediksi domain mana yang akan digunakan ADsOpenObject untuk memvalidasi "user1".

[in] lpszPassword

Jenis: LPCWSTR

Untai (karakter) Unicode yang dihentikan null yang menentukan kata sandi untuk diberikan ke layanan direktori yang akan digunakan untuk kredensial.

[in] dwReserved

Jenis: DWORD

Bendera autentikasi khusus penyedia yang digunakan untuk menentukan opsi pengikatan. Untuk informasi selengkapnya, lihat ADS_AUTHENTICATION_ENUM.

[in] riid

Jenis: REFIID

Pengidentifikasi antarmuka untuk antarmuka yang diminta pada objek ini.

[out] ppObject

Jenis: VOID**

Arahkan ke penunjuk ke antarmuka yang diminta.

Menampilkan nilai

Jenis: HRESULT

Metode ini mendukung nilai pengembalian HRESULT standar, termasuk yang berikut ini.

Untuk informasi selengkapnya, lihat Kode Kesalahan ADSI.

Keterangan

Fungsi ini tidak boleh digunakan hanya untuk memvalidasi kredensial pengguna.

Klien C/C++ memanggil fungsi pembantu ADsOpenObject untuk mengikat objek ADSI, menggunakan nama pengguna dan kata sandi yang disediakan sebagai kredensial untuk layanan direktori yang sesuai. Jika lpszUsername dan lpszPasswordadalah NULL dan ADS_SECURE_AUTHENTICATION diatur, ADSI mengikat objek menggunakan konteks keamanan utas panggilan, yang merupakan konteks keamanan akun pengguna tempat aplikasi berjalan atau akun pengguna klien yang ditiru oleh utas panggilan.

Kredensial yang diteruskan ke fungsi ADsOpenObject hanya digunakan dengan objek tertentu yang terikat dan tidak memengaruhi konteks keamanan utas panggilan. Ini berarti bahwa, dalam contoh di bawah ini, panggilan ke ADsOpenObject akan menggunakan kredensial yang berbeda dari panggilan ke 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);

Untuk bekerja dengan penyedia WinNT: , Anda dapat meneruskan lpszUsername sebagai salah satu string berikut:

  • Nama akun pengguna, yaitu, "jeffsmith".
  • Nama pengguna gaya Windows, yaitu, "Fabrikam\jeffsmith".
Dengan penyedia LDAP untuk Direktori Aktif, Anda dapat meneruskan lpszUsername sebagai salah satu string berikut:
  • Nama akun pengguna, seperti "jeffsmith". Untuk menggunakan nama pengguna dengan sendirinya, Anda hanya harus mengatur bendera ADS_SECURE_AUTHENTICATION di parameter dwReserved .
  • Jalur pengguna dari versi Windows sebelumnya, seperti "Fabrikam\jeffsmith".
  • Nama Yang Dibedakan, seperti "CN=Jeff Smith,OU=Sales,DC=Fabrikam,DC=Com". Untuk menggunakan DN, parameter dwReserved harus nol atau harus menyertakan bendera ADS_USE_SSL .
  • Nama Prinsipal Pengguna (UPN), seperti "jeffsmith@Fabrikam.com". Untuk menggunakan UPN, tetapkan nilai UPN yang sesuai untuk atribut userPrincipalName dari objek pengguna target.
Jika autentikasi Kerberos diperlukan untuk keberhasilan penyelesaian permintaan direktori tertentu menggunakan penyedia LDAP, string pengikatan lpszPathName harus menggunakan ADsPath tanpa server, seperti "LDAP://CN=Jeff Smith,CN=admin,DC=Fabrikam,DC=com", atau harus menggunakan ADsPath dengan nama server DNS yang sepenuhnya memenuhi syarat, seperti "LDAP://central3.corp.Fabrikam.com/CN=Jeff Smith, CN=admin,DC=Fabrikam,DC=com". Pengikatan ke server menggunakan nama NETBIOS datar atau nama DNS pendek, misalnya, menggunakan nama pendek "central3" alih-alih "central3.corp.Fabrikam.com", mungkin atau mungkin tidak menghasilkan autentikasi Kerberos.

Contoh kode berikut menunjukkan cara mengikat objek layanan direktori dengan kredensial pengguna yang diminta.

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

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista
Server minimum yang didukung Windows Server 2008
Target Platform Windows
Header adshlp.h
Pustaka Activeds.lib
DLL Activeds.dll

Lihat juga

Kode Kesalahan ADSI

Fungsi ADSI

ADsOpenObject dan IADsOpenDSObject::OpenDsObject

Pengikatan

IADsOpenDSObject

IADsOpenDSObject::OpenDsObject