Dalam LDAP, apa sebenarnya IS yang mengikat DN?

19

Saya telah menulis berbagai bagian kode yang terhubung ke server LDAP dan menjalankan kueri, tetapi selalu menjadi voodoo bagi saya. Satu hal yang saya tidak benar-benar pahami adalah konsep DN yang mengikat. Berikut ini contoh menggunakan ldapsearchalat baris perintah yang tersedia dari openldap. (Abaikan kurangnya otentikasi.)

ldapsearch -h 1.2.3.4 -D dc=example,dc=com [query]

Apa tujuan dan fungsi dari -D dc=example,dc=combagian ini? Mengapa kita perlu mengikat ke lokasi tertentu dalam hierarki direktori? Apakah ini untuk menentukan bagian direktori mana yang harus saya ajukan pertanyaan? Misalnya jika simpul root direktori adalah dc=com, dan memiliki dua anak ( dc=foodan dc=bar), mungkin saya ingin pertanyaan saya menjadi menentang dc=foo,dc=comsubtree dan bukan dc=bar,dc=comsubtree?

dirtside
sumber

Jawaban:

18

DN mengikat adalah objek yang Anda ikat ke dalam LDAP untuk memberi Anda izin untuk melakukan apa pun yang Anda coba lakukan. Beberapa (banyak?) Mesin virtual LDAP tidak mengizinkan ikatan anonim, atau tidak mengizinkan operasi tertentu dilakukan dengan ikatan anonim, jadi Anda harus menentukan bindDN untuk mendapatkan identitas untuk melakukan operasi itu.

Dengan cara non-teknis yang serupa - dan ya ini merupakan peregangan - bank akan memungkinkan Anda untuk masuk dan melihat suku bunga mereka tanpa memberi mereka ID, tetapi untuk membuka rekening atau menarik uang, Anda harus untuk memiliki identitas yang mereka ketahui - identitas itu adalah bindDN.

John
sumber
Apakah bindDN selalu sesuai dengan simpul dalam direktori? Atau bisakah itu string yang sewenang-wenang?
dirtside
Iya. Itu harus sesuai dengan simpul yang memiliki kemampuan membawa atribut kata sandi atau jika tidak diautentikasi.
John
Tomayto, Tomahto. 🍅 Nama pengguna, ikat DN. 🤷🏻‍♂️
emallove
31

Jangan bingung antara baseDN dan bindDN .

The basedn dari pencarian adalah titik awal. Di mana ia akan mulai mencari. Cukup jelas.

The bindDN DN pada dasarnya adalah credential Anda gunakan untuk mengotentikasi terhadap LDAP. Saat menggunakan bindDN biasanya disertai dengan kata sandi yang terkait dengannya.

Dengan kata lain ketika Anda menentukan bindDN Anda menggunakan akses keamanan objek untuk melewati pohon LDAP.

Sekarang, string dc = example, dc = com bukan contoh terbaik untuk bindDN karena ini adalah "domain" untuk pohon LDAP. dc singkatan dari komponen domain dan setiap pohon LDAP mendefinisikan akarnya dengan string dalam bentuk dc = string, dc = string, ... Tapi string ini bukan "jalan" seperti sisa pohon.

Contoh yang valid adalah:

  • dc = contoh, dc = com
  • dc = mydomain
  • dc = avery, dc = panjang, dc = daftar, dc = dari, dc = domain

Tetapi, elemen-elemen root ini tidak dapat dipisahkan. Mereka terlihat seperti mereka adalah beberapa elemen yang mewakili jalan seperti sisa pohon, tetapi mereka tidak . Misalnya, dalam contoh terakhir objek dc = of, dc = domain tidak ada.

Bayangkan penamaan drive C: Anda seperti "D: \ my \ folder \". Setiap path di sana akan terlihat seperti "D: \ my \ folder \ my \ real \ path" yang akan membingungkan karena path file sebenarnya adalah \ my \ real \ path kan? Nah, begitulah tampilan dasar (root) LDAP, dengan seperangkat dc = elemen.

Tautan yang relevan: http://docs.oracle.com/cd/E19199-01/816-6400-10/lsearch.html

Marcelo
sumber
7
Itu tampak seperti desain membingungkan yang tidak perlu, tetapi penjelasan Anda memang masuk akal.
dirtside
1
Ya saya setuju. Penamaan root Anda juga terlihat seperti jalan bukanlah pilihan terbaik tapi saya kira itu pasti punya alasannya. Sekarang Anda tahu mengapa semua DN berakhir dengan serangkaian komponen dc =. =)
Marcelo