Php domen icazəsi. Asılılıqlar, köməkçi funksiyalar

Bu bölmədə siz kataloq serverindən verilənləri necə axtarmaq və əldə etmək, həmçinin qeydləri əlavə etmək, dəyişdirmək və silmək yollarını öyrənəcəksiniz.

ldap_search()

resurs ldap_search (resurs_link_identifier, string base_dn, string filter [, massiv atributları [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])
Ldap_search() funksiyası link_identifier tərəfindən göstərilən kataloq serverinin axtarışı üçün güclü vasitə təklif edir. O, LDAP_SCOPE_SUBTREE dərinliyinə qədər axtarış edəcək, bu dəyər əvvəllər təqdim edilmiş ldap_set_option() funksiyası vasitəsilə təyin edilə bilər. Varsayılan olaraq, bu dəyər sonsuz dərinliyə və ya base_dn ilə müəyyən edilmiş ağacın bütün əhatə dairəsi üzrə axtarış etmək üçün təyin edilir. Əlaqəli verilənlər bazası sorğusuna ekvivalent olan axtarış filtri filtr parametri vasitəsilə ötürülür. Nəhayət, atributlar parametri vasitəsilə axtarış nəticələrində hansı atributların qaytarılacağını dəqiq təyin edə bilərsiniz. Qalan dörd parametr isteğe bağlıdır və buna görə də kosmosun maraqlarına uyğun olaraq, onlar haqqında daha çox öyrənmək üçün bunu sizə bir məşq kimi buraxıram. Bir nümunəyə nəzər salaq:

"; ) ldap_unbind($ad); ?> Nəticələrin nümunəsi aşağıdakı kimidir: Gilmore, Jason (Columbus) Shoberg, Jon (Columbus) Streicher, Martin (San Francisco) Wade, Matt (Orlando)

Bunların çoxu, atribut dəyərlərinə istinad edilən potensial qəribə üsul istisna olmaqla, çox güman ki, sadədir. Bütün atribut sətirləri son nəticədə çoxölçülü massivlərdir, hər bir atribut dəyərinə sıra nömrəsi, atribut adı və atribut massivi indeksi kombinasiyası ilə istinad edilir. Beləliklə, məsələn, istifadəçinin soyadının atribut adı olan "sn" kimi atributlar da indekslənmiş massivdir.

ldap_mod_add()

boolean ldap_mod_add(resurs linki_id, string dn, massiv girişi)
Kataloq serverinə qeydlərin əlavə edilməsi ldap_mod_add() funksiyası vasitəsilə həyata keçirilir. Yeni giriş sadəcə yeni cərgəni təşkil etmək üçün nəzərdə tutulan atribut/dəyər xəritələrindən ibarət massiv yaratmaqla əlavə edilir. Bu proses bəlkə də ən yaxşı şəkildə bir nümunə ilə izah olunur:

Bütün kataloq server tapşırıqlarında olduğu kimi, məcburi istifadəçinin hədəf məlumatı əlavə etmək üçün müvafiq icazələrə malik olduğundan əmin olun; əks halda xətalar baş verəcək.

ldap_mod_replace()

boolean ldap_mod_replace(resurs linki_id, string dn, massiv girişi)
Giriş atributlarının dəyişdirilməsi ldap_mod_replace() funksiyası vasitəsilə həyata keçirilir. O, tam olaraq ldap_add() kimi işləyir, dəyişdirmək istədiyiniz girişi müəyyən etmək üçün əlavə addım üçün qənaət edin. Bu, çox xüsusi bir dn-yə işarə etməklə həyata keçirilir. ldap_add() kimi həm etibarlı keçid identifikatoru, həm də aşağıdakılardan ibarət massiv yeniləmək istədiyiniz girişlər təmin edilməlidir. İstifadəçinin telefon nömrəsinin necə dəyişdiriləcəyini nümayiş etdirən bir nümunə, xüsusilə, çox xüsusi DN-yə diqqət yetirin (mənim xüsusi girişimə işarə edir).

Bütün kataloq server tapşırıqlarında olduğu kimi, məcburi istifadəçinin hədəf məlumatı dəyişdirmək üçün müvafiq icazələrə malik olduğundan əmin olun; əks halda gözlənilməz xətalar baş verəcək.

ldap_delete()

boolean ldap_delete(resurs link_id, string dn)
Əsas PHP LDAP funksiyaları ilə bağlı sorğumuzu tamamlamaq üçün ldap_delete(). Bu funksiya mövcud girişi silmək üçün istifadə olunur. Ldap_mod_replace() kimi, silinməni həyata keçirmək üçün çox xüsusi DN təmin edilməlidir. Aşağıdakı nümunə "Jason Gilmore" istifadəçi girişinin Active Directory-dən necə silinəcəyini nümayiş etdirir:

Bütün kataloq server tapşırıqlarında olduğu kimi, məcburi istifadəçinin hədəf məlumatı silmək üçün müvafiq icazələrə malik olduğundan əmin olun; əks halda gözlənilməz xətalar baş verəcək.

Veb vasitəsilə Active Directory axtarışı

Mən həmişə oxucuların dərhal öz ehtiyaclarına uyğunlaşa biləcəyi müvafiq nümunə ilə bir dərsliyi tamamlamağı xoşlayıram. Bu dərslikdə mən sizə ad, yer və ya telefon nömrəsi ilə axtarış edə bilən axtarış interfeysinin necə yaradılacağını göstərəcəyəm. Sizə lazım olan tək şey əlaqə dəyişənlərini və əsas DN-ni dəyişdirməkdir. Başlamaq üçün gəlin "search.html" kimi yadda saxlanacaq axtarış interfeysini yaradaq:

Axtarış meyarları:

Filtr:

Şəkil 1 bu axtarış formasının brauzerdə necə görünəcəyinə dair bir nümunə təqdim edir.

Şəkil 1. Active Directory Axtarış Forması

Sonra, biz axtarışa təsir edən məntiq yaratmalıyıq. Bu qısa kod biti burada göstərilir:

0) ( üçün ($i=0; $i<$entries["count"]; $i++) { echo "

Ad: ".$entries[$i]["displayname"]."
"; echo "Telefon: ".$entries[$i]["telephonenumber"]."
"; echo "E-poçt: ".$entries[$i]["mail"]."

"; ) ) başqa ( əks-səda "

Heç bir nəticə tapılmadı!

"; ) ldap_unbind($ad); ?>

Siz ya yuxarıdakı skriptdən ibarət fayla işarə edərək axtarış interfeysində göstərilən əməliyyat təyinatını dəyişə bilərsiniz, ya da onu axtarış interfeysi ilə eyni faylda birləşdirə və icranı işə salmaq üçün isset() və if şərtindən istifadə edə bilərsiniz. axtarış göndərmə düyməsi sıxıldığı halda. Əlbəttə ki, belə bir skripti yerləşdirməzdən əvvəl bəzi əlavə məlumatların yoxlanılması meyarlarını əlavə etmək istərdiniz. Şəkil 2 axtarış nəticələrinin nümunəsini təqdim edir.

Şəkil 2. Axtarış nəticələri

Nəticə

Baxmayaraq ki, PHP uzun müddətdir ki, veb proqramlar hazırlamaq üçün mənim əsas dilimdir, mən Perl-i proqramçının alət dəstinin ayrılmaz hissəsi hesab etdim. Kataloq serverləri ilə işləyərkən bu hiss fərqli deyil. Buna görə də, növbəti məqalə Perl/LDAP əsaslarına həsr edilmişdir. Bu məqalədə olduğu kimi, bütün nümunələr Microsoft-un Active Directory-yə xasdır, baxmayaraq ki, siz onları istənilən kataloq serverinin tətbiqinə asanlıqla tətbiq edə bilməlisiniz. Biz həmin məqaləni statik keşlənmiş faylların necə yaradılacağını nümayiş etdirən bir nümunə ilə tamamlayacağıq. Perl skripti və CRON (və ya Windows Task Scheduler) istifadə edərək veb əsaslı istifadəçi qovluqları.

Sualları və şərhləri salamlayıram! Mənə e-poçt göndərin [email protected]. Mən həmçinin Microsoft və Açıq Mənbə texnologiyalarını birləşdirən təcrübələriniz haqqında daha çox eşitmək istərdim!

Müəllif haqqında

W. Jason Gilmore (http://www.wjgilmore.com/) Fisher Business College üçün İnternet proqram tərtibatçısıdır. O, qarşıdan gələn PHP 5 və MySQL: Novice to Pro, Apress tərəfindən 2004-cü ildə nəşr olunacaq kitabın müəllifidir. Onun işi hesablama sənayesinin bir çox aparıcı nəşrlərində, o cümlədən Linux Magazine, O"Reillynet, Devshed, Zend.com və Webreview həm də A Programmer's Introduction to PHP 4.0 (453pp., Apress) kitabının müəllifidir. Həmkarı Jon Shoberg ilə birlikdə o, Linux jurnalında dərc olunan aylıq "Açıqda" sütununun həmmüəllifidir.

IT Solutions Builder BİZNESİNİZİ İrəliyə Hərəkət ETMƏK ÜÇÜN TOP IT RESURSLARI

Drupal asanlıqla müxtəlif vəzifələri, o cümlədən müəyyən mürəkkəbliyin müəssisə həllərini həyata keçirmək üçün universal bir vasitə adlandırıla bilər.
Elə olur ki, mən əsasən Drupal-dan müəssisədə, içəridə istifadə edirəm İntranet olan şəbəkə Active Directory. Və tam olaraq
şəbəkəmizin infrastrukturundan istifadə edin, minimum proqram saytlarda və xidmətlərdə Active Directory icazəsidir və burada Drupal problemləri var
Xeyr, Yüngül Kataloq Giriş Protokolu (LDAP) modulu sayəsində.
Bu yazıda onun mənim mühitimdə necə konfiqurasiya olunduğunu sizə xəbər vermək istəyirəm və bəlkə kimsə məqaləni faydalı tapacaq.

Beləliklə, dərhal deyim ki, bu modulun köməyi ilə aşağıdakıları təmin edə bilərsiniz:
1. Şəbəkənizdə LDAP icazəsi (mənim vəziyyətimdə ondan istifadə olunur Active Directory Microsoft-dan)
2. Başdan-ayağa avtorizasiyanı qurun (istifadəçi avtomatik olaraq əməliyyat sistemi hesabı ilə daxil olduqda)
3. Sayta daxil ola bilən və girə bilməyənlərə girişi məhdudlaşdırın.
4. Hesab atributlarını sinxronlaşdırın Active Directory saytda istifadəçi profili sahələri ilə və əksinə.
5. Hesaba girişinizi dəyişdikdən sonra veb-saytda hesabınızın yenilənməsi Active Directory(adətən işçinin soyadını dəyişdirdikdən sonra baş verir - giriş eyni şəkildə dəyişir)
6. İstifadəçinin müəyyən qrupda yerləşməsindən asılı olaraq saytda onun rolunun təyin edilməsi Active Directory

Çünki Mən hələ də Drupal 7-nin aktiv istifadəçisiyəm, ona görə də onun nümunəsindən istifadə edərək bütün təlimatları verəcəyəm, amma yenə də əyləncə üçün Drupal 8-i işə salanda,
sonra anladım ki, modul Drupalın 7-ci versiyası ilə demək olar ki, eynidir.

Modul məlumatlarını, eləcə də onların asılılıqlarını özümüzə kopyalayaq CtoolsEntity API. Modullar səhifəsində aşağıdakı modulları aktivləşdiririk:

  1. LDAP Doğrulama
  2. LDAP Avtorizasiyası (istifadəçinin Active Directory qruplarında yerləşdiyi yerə əsasən sayta və ya sayt rollarına girişi məhdudlaşdırmaq lazımdırsa, əlavə modul)
  3. LDAP Authorization - Drupal Rolları (yuxarıda təsvir olunan modula əlavə)
  4. LDAP Serverləri
  5. LDAP SSO (modul isteğe bağlıdır, əgər sizə başdan-ayağa avtorizasiyaya ehtiyacınız yoxdursa və ya veb server bunun üçün konfiqurasiya edilənə qədər onu quraşdıra bilməzsiniz)
  6. LDAP İstifadəçi Modulu

Qeyd etmək lazımdır ki, modul PHP parametrlərinizdə quraşdırılmayıbsa, modul quraşdırılmayacaq php_ldap. Buna görə də, onu əvvəlcədən quraşdırın və mühitinizin xüsusiyyətlərinə uyğun olaraq konfiqurasiya edin.

Modul uğurla quraşdırıldıqdan sonra onun burada yerləşən parametrlərinə keçək admin/config/insanlar/ldap

Modul parametrləri 4 nişana bölünür: Parametrlər, Serverlər, İstifadəçi, Doğrulama, Səlahiyyət

Birinci tab hesab parollarının şifrələnməsi üsulunu konfiqurasiya edir Active Directory Drupal daxilində.

Təcrübəmdə bundan istifadə etmirəm, ona görə də dərhal ikinci nişana keçirəm Serverlər. Və burada daha ətraflı danışacağıq.
Nişanda saytda istifadə olunacaq bütün yaradılmış LDAP avtorizasiya serverləri göstərilir, standart olaraq bu siyahı boşdur və biz düyməni istifadə edə bilərik LDAP Server Konfiqurasiyasını əlavə edin yeni server yarada bilərsiniz.
Server yaratma səhifəsi bir neçə bloka bölünür, onların hər birinə nəzər salaq:

Bağlantı parametrləri

Bu server konfiqurasiyası üçün maşın adı. - yaradılan serverin faktiki maşın adı. Mən adətən zəng edirəm aktiv_kataloq
Ad ** - serverin başqa adı, mən də deyirəm aktiv_kataloq
**Aktivdir
- qutunu işarələyin, beləliklə yaradılan server konfiqurasiyasına imkan verin
LDAP Server növü- mənim vəziyyətimdə mən seçirəm Active Directory
LDAP serveri- mənim vəziyyətimdə Active Directory serverinin yerləşdiyi domen adı və ya IP ünvanı ad.zv
LDAP portu- Mən onu standart olaraq tərk edirəm 389 , bizdə də eynidir
Start-TLS istifadə edin- Qutunu işarələmirəm, çünki... biz şifrələmədən istifadə etmirik
LDAP Referallarını izləyin- Mən də təyin etmirəm, baxmayaraq ki, bu parametrin nə üçün lazım olduğunu hələ də tam başa düşməmişəm

Bingind üsulu

Axtarışlar üçün bağlama metodu (istifadəçi obyekti və ya onların qrup üzvlüyünü tapmaq kimi)
Başqa sözlə, sual istifadəçinin varlığını axtarmaq, onun atributlarını oxumaq və s. üçün Active Directory serverinə necə, kimin adından qoşulacaq.
Mənanın təsvirində olduğu kimi, birinci variantdan istifadə edirəm Xidmət Hesabı Bağlamasıən yaxşı təcrübə kimi.
Məhz, serverə qoşulma qovluqları və Active Directory strukturunu oxumaq hüququ olan Active Directory-də əvvəlcədən yaradılmış xüsusi hesabdan baş verəcəkdir.
Aşağıdakı bu seçimi seçərkən, xidmət hesabınızın giriş və şifrəsini sahələrdə göstərməlisiniz Anonim axtarış üçün DNAnonim olmayan axtarış üçün parol

Verilənlər bazasından mövcud parolu silin. Xidmət Hesabının Bağlanmasından uzaqlaşarkən bunu yoxlayın- maddə yuxarıda təsvir edilən metodumuza aid deyil, ona görə də qutunu işarələmirik.

LDAP istifadəçisi ilə Drupal istifadəçi əlaqəsi

LDAP istifadəçiləri, qruplar və digər girişlər üçün əsas DN-lər- bütün istifadəçilərin Active Directory-də yerləşdiyi əsas DN, mənim vəziyyətimdə təyin etdim DC = reklam, DC = zv. Bu parametrdə Active Directory serverinizin sistem administratorları ilə məsləhətləşmək daha yaxşıdır
AuthName atributuAccountName atributu- istifadəçi girişinin və hesab adının saxlandığı atribut, adətən onlar eyni olmalıdır və əksər hallarda göstərilir samaccountname, çünki default olaraq giriş Active Directory-də yerləşir
E-poçt atributu- mənim vəziyyətimdə istifadəçinin poçt qutusunun yerləşdiyi atribut poçt. Qeyd etmək lazımdır ki, Drupal üçün bu sahə tələb olunur, çünki Drupal-da poçt qutusu olmayan istifadəçi ola bilməz, buna görə də sizin mühitinizdə poçt qutusu olmayan istifadəçilərin olması ehtimalı varsa, şablondan istifadə edərək poçt qutusunu doldurmaq üçün aşağıdakı sahədən istifadə etməlisiniz və ya daha sonra biz başqa tabda digər tərəfdən bu parametrə qayıdın.
E-poçt şablonu- poçt qutularınız, məsələn, girişlə eyni olduqda və ya Active Directory-də bir neçə istifadəçi atributundan ibarət olduqda istifadə olunan poçt qutusu şablonu. Buna görə də, onu sadəcə atribut nişanlarından tərtib edə bilərsiniz.
Miniatür atributu- mənim vəziyyətimdə Drupal-da istifadəçinin profil şəklinə sonradan yükləmək üçün istifadəçinin şəklini (ikili) ehtiva edən bir atribut miniatür Şəkil
Davamlı və Unikal İstifadəçi ID Atributu- Active Directory istifadəçisi üçün heç vaxt dəyişməyəcək unikal atribut. O, məsələn, girişinizin istifadəçinin soyadı və baş hərfləri olduğu hallarda istifadə olunur və əgər birdən istifadəçi soyadını dəyişibsə və sonra onun loqini dəyişdirilibsə, növbəti dəfə Drupal üçün sayta daxil olduqda, o, defolt olaraq yeni istifadəçi kimi və Drupal yeni hesab yaradacaq (əlbəttə ki, poçt qutusu da dəyişdirilmək şərti ilə, çünki eyni qalsa, Drupal poçt qutusu münaqişəsi barədə məlumat verəcək və yeni giriş yaratmayacaq). Buna görə də bu sahə unikal açar rolunu oynayır və istifadəçi sayta daxil olanda ilk baxışdan baxılacaq, hətta o, loginini dəyişsə belə, Drupal əvvəlcə bu atributdan istifadə edərək onu tapacaq, sonra isə ondan istifadə edərək saytla əlaqə yaratmaq üçün istifadə edəcək. Active Directory istifadəçisi və nəticədə Drupal saytında öz girişini yeniləyin. Mənim vəziyyətimdə belədir obyektsid
Davamlı və Unikal İstifadəçi ID Atributunun ikili dəyəri varmı? - Gənə qoyuram, çünki obyektsid binar sistemdə saxlanılır.

Heç vaxt belə bir vəzifə ilə qarşılaşacağımı düşünməzdim, amma gözəl günlərin birində daxili istifadə üçün korporativ portal yaratmaq zərurəti yarandı. Təşkilatın bir domeni və bu domendə bir dəstə istifadəçisi var. Müəssisələr yaratmamaq (istifadəçilər üçün yeni hesablar yaratmamaq) əlbəttə ki, gözəl olardı, amma bir şəkildə domenə qoşulmaq olardı.

Əvvəlcə uzun beyin fırtınası oldu və biz bu portalı hazırlamaq üçün nədən istifadə edəcəyimizə qərar verdik - ya əl ilə PHP və ya ASP-də, ya da hansısa hazır yüksək ixtisaslaşmış məhsuldan istifadə edib ondan istifadə edək. Baxmayaraq ki, bu məhsul pulsuz olmalıdır. Təbii ki, xüsusi olaraq korporativ portal üçün ağlabatan pulsuz bir həll tapılmadı və bütün bunları əl ilə yazmaq üçün xüsusi bir istək yox idi, fikir yarandı - "bəlkə Joomla?"

Əvvəlcə onlar bu fikri basdırmağa çalışdılar, çünki bu, "sərin deyildi", lakin bunu müzakirə etdikcə, tərəzi Joomla-nın xeyrinə bir o qədər çox oldu. Kanıtlanmış, geniş yayılmış və tamamilə pulsuzdur. Qərar vermək üçün yalnız bir şey qalır - Joomla-nı Active Directory ilə necə əlaqələndirmək olar. Bir az zəhmət tələb etsə də, mümkün olduğu ortaya çıxdı.

Mən bu qədər sadə həqiqətləri, məsələn, Joomla-nı yerli hostda necə quraşdırmaq və sair, düz mətləbə qədər təsvir etməyəcəyəm.

Mərhələ 1 - PHP.ini faylının redaktə edilməsi

Xəttin şərhini ləğv etməlisiniz:

extension=php_ldap.dll

Bu, Joomla-ya LDAP protokolundan istifadə edərək Active Directory domeni ilə qarşılıqlı əlaqə yaratmağa imkan verən bir kitabxanadır.

Mərhələ 2 - "LDAP Authorization" plagininin qurulması

Plugin menecerinə gedirik və onların arasında “LDAP Authorization” axtarırıq, onu aktivləşdiririk.

Fərz edək ki, domenimiz domain.local adlanır, domen nəzarətçisinin ünvanı 192.168.0.1-dir.

Plugin parametrlərində aşağıdakı parametrləri etməlisiniz (ən azı mənim üçün belə işlədi :)

Parametr Mənası Şərh
Ev sahibi 192.168.0.1 Domen nəzarətçisinin IP ünvanı
Liman 389 toxunma
LDAP3-ü işə salın
TLS yerinə yetirin YOX
İstiqamətləndirmələri izləyin YOX
Avtorizasiya üsulu Snap və tapın Uğurlu avtorizasiyadan sonra Joomla öz daxili hesabını yaradacaq, sonra bu və ya digər giriş qrupuna yerləşdirilə bilər. Təəssüf ki, Joomla istifadəçi qruplarını Active Directory-dən çıxara bilmir. Bunu etmək üçün bir yol tapsanız, məqalənin şərhlərində paylaşın!
Əsas DN dc=domen,dc=yerli Domeni səviyyələrə bölürük və hər səviyyədən əvvəl dc=... yazırıq, aralarında boşluq yoxdur, yalnız vergüllər var.
Axtarış sətri sAMAccountName= Məsələləri qeyd edin!
Xüsusi DN boş buraxın
Bağlantı istifadəçi adı Bu e-poçt ünvanı spam botlardan qorunur. Onu görmək üçün JavaScript-i aktiv etməlisiniz. Domain Administrator Adı
Bağlantı parolu qwerty123 Buna görə domen administrator parolu
Xəritə: Tam adı ekran adı İstifadəçi adı saytda necə göstəriləcək
Xəritə: E-poçt poçt eyni şey - e-poçt
Xəritə: İstifadəçi ID uid istifadəçi ID

Parametrləri saxlayırıq, saytı açırıq və daxil olmağa çalışırıq. Bu halda, domen istifadəçi adını daxil edin olmadan@domain.local - hər şey işləməlidir!

Mən nüansların çoxunun proqram versiyalarından asılı olduğundan şübhələnirəm. Hər halda, bütün bunlar aşağıdakı serverdə sınaqdan keçirildi:

  • Veb server - Xampp 5.6.15 (PHP 5.6.15)
  • Joomla 3.6.3
  • Windows Server 2008 R2 Domain Controller

26/10/2016 əlavə edildi

Qəribəlik diqqət çəkdi- Joomla domen girişi Exchange e-poçt ünvanına uyğun gəlməyən istifadəçilərə icazə vermək istəmir. Daxil olmağa çalışarkən xəta mesajı görünür:

Xəbərdarlıq

Sizin saytın məhdud ərazilərinə girişiniz yoxdur.

Bu problemin həlli hələ də tapılmayıb. Bunun öhdəsindən necə gələcəyinizi bilirsinizsə, şərhlərdə paylaşın.