COM kullanarak PHP / IIS Nereden Active Directory Grup Üyeliği Okumak İçin Nasıl?

4 Cevap php

Ben aşağıdaki kodu vardır:

$bind = new COM("LDAP://CN=GroupName,OU=Groups,OU=Division,DC=company,DC=local");

Ben bir komut isteminden çalıştırdığınızda, bu iyi çalışır. IIS / PHP / ISAPI altında çalıştığında, bu barfs.

Fatal error: Uncaught exception 'com_exception' with message 'Failed to create COM object `LDAP://CN=...[cut]...,DC=local':
An operations error occurred. ' in index.php
Stack trace:
  #0 index.php: com->com('LDAP://CN=...')
  #1 {main} thrown

IIS, Windows kimlik doğrulaması (hayır sindirmek, hiçbir temel, yok anonim) için yapılandırılmış ve ben komut istemine olarak aynı kullanıcı olarak bağlıyorum. Ben IIS çetere veya eventlog herhangi belirli hataları bulamıyor.

Bu egzersiz temel amacı benim komut dosyası, kullanıcı kimlik bilgilerini tutmak ve aktif dizine geçmek için IIS kimlik dayanarak imtina etmektir. Ben aynı şeyi gerçekleştirmek için LDAP kullanabilirsiniz anlamak, ama bildiğim kadarıyla kimlik geçti olamaz.

Belki de ben ASP noktasına çalıştığımda almak hata ile ilgili bir şekilde bulunmaktadır. (Ben şu anda kadar arıyorum ki) hatası 80072020 olsun.

Olay günlükleri sıradan bir şey gösterir. Hiçbir uyarıları, hatalar yok. Tam güvenlik denetimi (güvenlik politikası her öğe üzerinde başarı ve başarısızlık) etkin, ve ben web sayfası karşı kimlik doğrulaması her kullanıcı için Windows başarılı oturumları gösterir (bekleniyor.)

4 Cevap

IIS Windows kimlik doğrulaması kullanarak konum beri, Windows olay günlüğüne bazı güvenlik olayları olabilir. Ben Güvenlik Olaylar yanı sıra uygulama olayları için olay günlüğünü kontrol ve izinleri konularda her türlü isabet eğer görecekti.

Temelde sadece LDAP aracılığıyla AD iletişim konum beri Ayrıca, ... sen PHP için bir yerel LDAP kütüphane yerine COM kullanarak içine görünebilir.

Muhtemelen php.ini uzantısı etkinleştirmeniz gerekir. Muhtemelen bakarak değer.

Şimdi çalışıyor gibi görünüyor.

Ben Active Directory bilgisayar nesnesi için "heyeti için bu bilgisayarı güven" sağladı. Normalde IIS hem sizi doğrulamak ve akabinde etkin heyet güven olmadan (Active Directory sorgulamak için bir etki alanı denetleyicisine benim durumumda) ağ üzerinden sizi taklit edemez.

Sindirmek bir kimliğe bürünme belirteci olarak kullanmak güvenilir değil çünkü sadece özet kimlik doğrulaması NTLM veya diğer bazı Kerberos kullanarak değil, kimlik doğrulama oluyor emin olmak gerekir.

Bu benim PHP ve ASP komut hem de sabit.

lauth_ldap adında fonksiyonu için bak: LDAP kullanmak istiyorsanız Evet, ben, biz Maia MailGuard için kullanılacak LDAP kimlik doğrulama kodu sizi işaret edelim

Ben ldap sürüm 3 gerektirdiğini düşünüyorum, bu yüzden ldap için bu parametreyi ayarlamak zorunda. Parolanızı doğrulamak için, ldap sunucusunun kimliğini doğrulamak izin ldap bağlama işlevini kullanın.

Ben AD / COM / IIS uzman değilim, ama bu izinleri bir sorun olabilir. örneğin IUSR_bilgisayaradı kullanıcı dizini içinde geçerli erişimi yok, ya da belirli bir kullanıcı olarak bağlayıcı değil mi?

Benim için alarm zili bu komut satırından ok çalışır (örneğin izinleri ile çalışan) ancak IIS (örn. değil izinleri) başarısız gerçektir.