Kimlik bilgileri geçiyor, tünel yükselmeye başlıyor ve ardından oturum parola hakkında değil grup hakkında bir mesajla başarısız oluyor. Bu birleşim hatayı LDAP eklentisinin işinin ikinci yarısına yerleştirir: bağlama ve parola denetimi başarılı oldu, ardından gelen üyelik kararı olmadı. İki yarı da aynı yapılandırma bloğundan okur, bu yüzden bir yerdeki düzeltme diğerini dokunulmadan bırakabilir. Adımı adlandıran günlük satırından başlayın, rastgele test ettiğiniz hesaptan değil.

Reddi bir yetkilendirme yanıtı olarak görün

Eklenti bir hizmet bağlaması yapar, hesabı arar, verilen parolayı doğrular ve ardından o hesabın izin verilen bir gruba ait olup olmadığını sorar. Bunlar dört ayrı işlemdir ve yalnızca sonuncusu gruplarla ilgilidir. Bu nedenle başarılı bir bağlamadan sonra gelen ret, istemci genel bir kimlik doğrulama hatası gösterse bile parola hakkında hiçbir şey söylemez. Yapılandırmayı değiştirmeden önce eklentinin günlük düzeyini yükseltmek, bu dördünü çıktıda ayıran şeydir.

Grup değerlendirmesinin kendisini arayın. Hiç grup sorgusu görünmediğinde yetkilendirme bloğuna ulaşılmıyor demektir, bu da genellikle bir yönergenin onu sahiplenen bloğun dışında durduğu veya zorunlu bir seçeneğin eksik olduğu anlamına gelir. Sorgu görünüp hiçbir şey döndürmediğinde, uç nokta ya da filtre sizin kastettiğinizden farklı bir soruyu yanıtlıyordur.

Üyeliğin filtrede mi yoksa grup bloğunda mı yaşadığına karar verin

Desteklenen iki biçim vardır ve bunları karıştırmak, çalışan bir yapılandırmanın çalışmayı bırakma yoludur. Birincisi kullanıcı nesnesinde bir öznitelik isteyerek üyeliği kullanıcı aramasına iter; ikincisi kullanıcı aramasını olduğu gibi bırakır ve eklentinin grup nesnesini sonradan aramasını sağlar. Her kurulum için birini seçin ve hangisini seçtiğinizi yazın.

<Authorization>
    BaseDN       "OU=People,DC=example,DC=org"
    SearchFilter "(&(sAMAccountName=%u)(memberOf=CN=VPN Access,OU=Groups,DC=example,DC=org))"
    RequireGroup false
</Authorization>

Bu biçimde her şeye filtre karar verir, bu yüzden RequireGroup false olmalıdır, aksi halde eklenti filtrenin hiç söz etmediği bir grup nesnesini aramaya gider. Filtredeki öznitelik kullanıcı nesnesinde bulunmalı ve doldurulmuş olmalıdır; gruplar iç içe geçtiğinde bu garanti edilmez.

Diğer biçim aramayı basit tutar ve ardından bir grup araması ekler. Grup nesnesi açıkça adlandırılır ve eklenti kullanıcıyı dizinin o grup için döndürdüğü üyelerle karşılaştırır. Kullanıcı filtresinde hiçbir şey değişmez, bu da grubu başka bir ekibin yönettiği durumda bu biçimi denetlemeyi kolaylaştırır.

<Authorization>
    BaseDN       "OU=People,DC=example,DC=org"
    SearchFilter "(sAMAccountName=%u)"
    RequireGroup true
    Group        "CN=VPN Access,OU=Groups,DC=example,DC=org"
</Authorization>

Kör nokta ortaktır: basit bir üyelik karşılaştırması iç içe grupları açmaz, bu yüzden erişimi üst gruptan gelen hesap başarısız olurken konsol üyeliği hâlâ gösterir. Active Directory grupta member özniteliğini sunar, diğer şemalar uniqueMember kullanır ve yanlış özniteliğe işaret etmek hata yerine boş sonuç döndürür.

Grup nesnesini barındıran bir uç nokta seçin

URL eklentinin hangi dizine soracağını belirler ve 389 bağlantı noktasındaki bir etki alanı denetleyicisi yalnızca kendi adlandırma bağlamı için yanıt verir. 3268 bağlantı noktasındaki genel katalog tüm orman için yanıt verir, salt okunur ve kısmi bir öznitelik kümesiyle. Hesaplar bir etki alanındayken VPN grubu başkasındaysa, tek etki alanı sorgusu kullanıcıyı bulup üyeliği yine de kaçırabilir. URL'yi katalog bağlantı noktasına taşımanın reddi çözdüğü durum budur ve insanların aşırı genelleme yaptığı durum da budur.

Kısmi öznitelik kümesi sınırdır: kataloğun tutmadığı bir öznitelik üzerinde filtreleme yapılamaz, bu yüzden aynı değişiklik bir kurulumu çalıştırıp diğerinin boş dönmesine yol açabilir. Blok yeniden yazılmadan önce uç noktanın gerçek kullanıcı ve grup için gerçekte ne döndürdüğünü doğrulayın. Yönlendirmeler ve TLS yine ayrı konulardır, çünkü bir yönlendirmenin izlenmesi gerekir ve TLS isteyen bir uç noktanın eşleşen güven dosyalarına ihtiyacı vardır.

Hesap durumunu ve arama kapsamını kendi alanlarında tutun

Devre dışı bayrağı gruba değil filtreye aittir. Active Directory'de bu userAccountControl özniteliğinin ikinci bitidir ve bu koşul olmadan geçerli parolalı devre dışı bir hesap kimlik doğrular, ardından grup adımında başarısız olur; bu da yetkilendirme hatası gibi görünür. Arama kapsamı temel DN'ye aittir, çünkü etki alanı kökünden başlamak daha yavaştır ve kapsamak istediğiniz kuruluş biriminin dışındaki nesnelerle eşleşebilir.

Bağlama hesabının haklarını da dar tutun. Geniş dizin hakları yanlış yapılandırılmış bir filtreyi başarılı bir sorguya dönüştürür ve biri hesabı denetleyene kadar hatayı gizler. Üyeliği dizinin kendisinde değiştirin, asla yerel bir istisna listesinde değil, böylece erişimi kaldırmak için hesabı devre dışı bırakmak yeterli olur. Grubu başka bir ekip yönetiyorsa, üzerine filtre yazmadan önce doldurdukları öznitelik üzerinde anlaşın.

Sonucu üç hesapla kanıtlayın

Yapılandırmayı üç kimliğe karşı çalıştırın: izin verilen bir üye, grubun dışında geçerli bir hesap ve devre dışı bırakılmış bir hesap. Üçü de reddedilirse bağlama ya da grup sorgusu bozuktur; üçü de kabul edilirse hiçbir grup koşulu uygulanmıyordur. Karma sonuç, yapılandırmanın önemsediğiniz durumları ayırt ettiğini kanıtlayan tek sonuçtur.

Eklentiyi suçlamadan önce aynı üç yanıtı doğrudan dizinden okuyun. İlk sorgu filtrenin bağlı olduğu grup özniteliğini, ikincisi hesap denetimi değerini gösterir. Kendi temel DN'niz, hesabınız ve uç noktanızla değiştirin:

ldapsearch -H ldap://dc01.example.org:3268 -x -D "[email protected]" -W -b "DC=example,DC=org" "(sAMAccountName=alice)" memberOf
ldapsearch -H ldap://dc01.example.org:3268 -x -D "[email protected]" -W -b "DC=example,DC=org" "(sAMAccountName=bob)" userAccountControl

memberOf boş dönen bir kullanıcı dizin gerçeğidir, eklenti hatası değildir ve devre dışı bırakıldıktan sonra hâlâ kimlik doğrulayan bir hesap, filtrenin hesap denetimi koşulunu kaçırdığı anlamına gelir. Önce o kanıtı düzeltin, sonra üç hesaplı testi yeniden çalıştırın. Başarısız adımı adlandıran günlük satırını yapılandırma değişikliğinin yanında tutun, böylece sıradaki kişi aramayı yinelemeden yetkilendirmeyi kimlik doğrulamadan ayırabilsin.

İlgili makaleler