Bagikan melalui


Pengikatan Dengan GetObject dan ADsGetObject

Fungsi GetObject dan ADsGetObject digunakan untuk mengikat objek layanan direktori tanpa autentikasi. Aplikasi tidak diperlukan untuk memberikan kredensial saat mengakses data layanan direktori. ADSI menggunakan konteks keamanan utas panggilan. Namun, jika autentikasi aman gagal, ADSI mencoba melakukan pengikatan sederhana dengan nama pengguna null dan kata sandi null. Jika pengikatan sederhana berhasil, konteks pengguna untuk pengikatan adalah Tamu. Ikatan sederhana menggunakan autentikasi teks biasa. Karena tidak ada nama pengguna atau kata sandi yang ditransmisikan melalui jaringan, ini bukan masalah keamanan.

Fungsi GetObject digunakan untuk mengikat objek layanan direktori dalam bahasa yang mendukung otomatisasi, seperti Visual Basic. Fungsi GetObject memerlukan string moniker. Di ADSI, string pengikatan adalah string moniker.

Dalam bahasa yang tidak secara langsung mendukung otomatisasi, seperti C atau C++, ADSI menyediakan fungsi ADsGetObject untuk mengikat objek layanan direktori. Atau, fungsi MkParseDisplayName dan MkParseDisplayNameEx dapat digunakan untuk mencapai hasil yang sama dengan GetObject.

Untuk layanan yang berjalan di bawah akun LocalSystem, konteks keamanan yang digunakan oleh GetObject dan ADsGetObject bergantung pada komputer tempat layanan berjalan. Jika layanan berjalan sebagai LocalSystem pada pengendali domain, layanan memiliki akses tingkat sistem penuh ke Direktori Aktif. Jika layanan tidak berjalan pada DC, layanan memiliki hak akses dan hak istimewa yang diberikan ke akun komputer untuk komputer tempat layanan berjalan; ini secara signifikan kurang kuat daripada akses tingkat sistem.

Contoh

Contoh kode Visual Basic berikut menunjukkan cara menggunakan fungsi GetObject untuk mengikat ke objek.

Dim myUser as IADs
Set myUser = GetObject("LDAP://CN=jeffsmith,DC=fabrikam,DC=com")

Contoh kode C++ berikut menunjukkan cara menggunakan fungsi ADsGetObject untuk mengikat objek.

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