LDAP search filter nedir; nasıl okunur?
Kısa cevap
LDAP search filter, directory'de hangi nesnelerin eşleşeceğini tanımlayan ifadedir (RFC 4515). Her koşul parantez içinde (attribute=değer) biçiminde yazılır; birden çok koşul önek işleçle birleştirilir: VE için (&(objectClass=user)(mail=*)), VEYA için (|(uid=ali)(mail=ali@company.com)), DEĞİL için (!(objectClass=computer)). * tek başına "attribute'u olan her nesne", bir değerin içinde ise "herhangi bir metin" anlamına gelir. Okurken önce dıştaki işleç, sonra içindeki koşullar okunur. TR7 AGS'de LDAP türündeki Authentication Provider'da kullanıcı araması için Search Filter Type Custom seçilip Custom Search Filter yazılır, grup araması Group Filter ile yapılır, girişi belirli bir grupla sınırlamak için Bind Restriction Filter kullanılır. Yönetim kullanıcıları için LDAP Settings ekranındaki LDAP Bind Restriction Filter, Base DN altında yapılan kullanıcı aramasına VE ile eklenir; parantezsiz yazılırsa parantez kendiliğinden eklenir.
TR7'de Nerede Kullanılır
| Nerede | Alan / etiket | Ne için |
|---|---|---|
| AGS → Authentication → Authentication Providers (LDAP, Search and Bind) | Search Filter Type: Auto (varsayılan) / Custom; Custom Search Filter | Kullanıcının directory'de bulunması; kullanıcı adı Smart Variable ile yazılır, ör. (sAMAccountName=%AGS_USER_INPUT(username)) |
| Aynı form (LDAP) | Group Filter (varsayılan (&(objectClass=group)(member=…)), kullanıcının DN'i ile) | Kullanıcının üye olduğu grupların bulunması |
| Aynı form (LDAP) | Bind Restriction Filter | Kullanıcı arama filtresiyle birleştirilerek girişin sınırlanması (ör. (memberOf=CN=VPN Users,CN=Groups,DC=example,DC=com)) |
| Settings → User Management → LDAP Settings | LDAP Bind Restriction Filter | Yönetim girişinin belirli bir grupla sınırlanması; Base DN tanımlıyken uygulanır |
İşleçler
| İşleç | Anlamı | Örnek |
|---|---|---|
& | VE: içindeki bütün koşullar | (&(objectClass=user)(department=IT)) |
| | VEYA: koşullardan en az biri | (|(uid=ali)(mail=ali@company.com)) |
! | DEĞİL: koşulun tersi | (!(objectClass=computer)) |
=* | Attribute'u olan her nesne | (mail=*) |
* (değer içinde) | Herhangi bir metin | (cn=Ali*) |
>=, <= | Büyük-eşit, küçük-eşit | (uidNumber>=1000) |
İç içe örnek: (&(objectClass=user)(|(department=IT)(department=Security))(mail=*)) "IT ya da Security biriminde olan ve e-posta adresi tanımlı kullanıcı nesneleri" demektir.
Sık Karıştırılan Noktalar
- "Filtre SQL gibi yazılır." LDAP filtresinde işleç koşullardan önce gelir ve her koşul ayrı parantez içindedir;
AND,ORgibi sözcükler kullanılmaz. - "Grup adı filtrede kısa adıyla yazılır."
memberOfgibi attribute'larda grubun tam DN'i yazılır (LDAP'ta DN (Distinguished Name) ve Base DN nedir?). - "Bind restriction filter tek başına yönetim girişini sınırlar." LDAP Settings'te filtre, Base DN altında yapılan kullanıcı aramasına eklenir; Base DN boşsa bu arama yapılmadığından filtre de uygulanmaz. Filtreyle sınırlama için Base DN de tanımlanır.
Dokümantasyonda nasıl yapılır
