2011-05-13 29 views
6

Bir LDAP bağlantısı, bağlama ve arama yapan bir PHP betiğim var. Active Directory sunucularının çoğunda çok iyi çalışıyor, ancak müşterilerimizin bir sorunu var. Komut dosyası, ldap_bind'i denerkenPHP ldap - Güçlü (er) kimlik doğrulaması gerekiyor

hatalarını döndürür. Ben yapılan

Tüm aramalar iki olası problemlere beni yönetti: Ben LDAP_OPT_PROTOCOL_VERSION3 ayarlı zorunda

  1. - Ben ve önce yaptığımız, bu nedenle bu benim sorunum olamaz.
  2. AD sunucusu, SSL kimlik doğrulaması kullanacak şekilde yapılandırılmıştır; ancak istemcimiz, varsayılan bir Windows 2008 R2 sunucu yüklemesi olduğu ve kesin olarak SSL için varsayılan değer vermediği konusunda ısrar etmektedir.

Bu hatanın gerçekleşmesi için başka nedenler olabilir?

O SSL Active Directory sunucusu üzerinde gerekli GÜNCELLEME

...

+1

LDAPS kullanarak bağlanıyorsunuz: // ssl bağlantı noktasında?Eğer ldaps: // 'yı desteklediyseniz, PHP şifrelenmemiş bir bağlantıyı yapmaya çalışacaktır. –

+0

Jon Skarpeteig'in haklı olduğu bir nikel bahse girerim, açıkçası ldaps kullanana kadar aynı problemi yaşadım. SASL desteğinin – David

+0

olduğundan emin olmak için LDAP bölümünün altındaki phpinfo() öğesini kontrol edin: ldaps: // hakkında biliyorum ve yapılandırmak çok zor. Sertifikaları AD sunucusundan dışa aktarın, Linux makinesine kopyalayın, pem'e dönüştürün, openssl'i onları kullanmaya ikna edin ... Yani, ldaps: // kullanmıyorum ve bildiğim kadarıyla AD sunucusunun bilmediğini biliyorum. t güvenli kimlik doğrulama gerektirir, en azından bizim müşteri bize temel bir kurulum olduğunu söyler ... maalesef kendim ve her AD sunucusunda kontrol edemedim, ben yukarıda belirtilen dışında mükemmel çalışıyordu betik çalıştı. –

cevap

5

Bunu Active Directory sunucusu tarafından gerekli eğer ldaps:// kullanmak zorunda. Geçersiz sertifika yetkilisi ile ilgili bir sorun varsa, size php kodunda

putenv('LDAPTLS_REQCERT=never'); 

yayınlayarak pencerelerde geçerliliğini göz ardı edebilirsiniz. Problems with secure bind to Active Directory using PHP

: * nix size

TLS_REQCERT never 

diğer ortak sorunlar için, örnek kod çalışma için PHP cannot connect to LDAP Oracle Directory Server Enterprise Edition

benim yazı başvurabilir içerecek biçimde /etc/ldap.conf düzenlemeniz gerekir, sen bir göz olabilir

+0

LDAP sunucumda bir etki alanı yok. Ldaps: // 'kurabilir miyim? – Casper

+0

Güvenlik uyarısını kapatabilir ve ldap sunucusu içindeki verileri değiştirmek için 'ldap: //' kullanmaya devam edip edemeyeceğimi merak ediyorum. – Casper

1

Aynı sorun vardı ve benim bind_rdn içinde bir yazım hatası vardı gibi görünüyor, bu nedenle kimlik bilgilerinin doğru olduğundan emin olun.

0

kullanarak bir LDAP varlığına güncelleştirmeye çalışırsanız mesaj "gerekli Güçlü (er) kimlik" de görünür: haber vermeden

  • ldap_modify_batch

  • ldap_mod_replace
  • ldap_modify isteğe bağlı parametrelerle bağlama işlevi:

    string $bind_rdn = NULL [, string $bind_password = NULL 
    

    Bu kod çalışmaz:

    $ldap = ldap_connect($ldap_url); 
    ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3); 
    ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0); 
    
    $bind = ldap_bind($ldap); 
    
    $userdata=array(); 
    $userdata['userattribute'][0]='test'; 
    
    ldap_modify ($ldap, "cn=myuser,dc=example,dc=com", $userdata); 
    

    Bu kod çalışır işlevini bağlamak için farklı çağrı not:

    $ldap = ldap_connect($ldap_url); 
    ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3); 
    ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0); 
    
    $bind = ldap_bind($ldap,'cn=admin,dc=example,dc=com','secretpassword'); 
    
    $userdata=array(); 
    $userdata['userattribute'][0]='test'; 
    
    ldap_modify ($ldap, "cn=myuser,dc=example,dc=com", $userdata); 
    
    İlgili konular