11. Sesja Linuksowa Usªuga katalogowa na przykªadzie OpenLDAP Jakub Juszczakiewicz 1 / 20 Jakub Juszczakiewicz Usªuga katalogowa na przykªadzie OpenLDAP
Co to jest usªuga katalogowa? Baza danych Przynajmniej cz ±ciowo obiektowa Hierarchiczna Opisuje relacje pomi dzy u»ytkownikami sieci i zasobami 2 / 20 Jakub Juszczakiewicz Usªuga katalogowa na przykªadzie OpenLDAP
Co to jest LDAP i OpenLDAP? LDAP Lightweight Directory Access Protocol Protokóª bazuj cy na X.500 Równie»: nazwa usªugi katalogowej wykorzystuj ca protokóª TCP/IP OpenLDAP Otwarta implementacja protokoªu LDAP Dost pna na licencji OpenLDAP Public License Zawiera serwer usªug, zestaw bibliotek i klientów. 3 / 20 Jakub Juszczakiewicz Usªuga katalogowa na przykªadzie OpenLDAP
Co potra OpenLDAP? Uwierzytelnia Przechowywa informacje obiektowe w zorganizowanej formie Replikowa swoj zawarto± Szyfrowa poª czenia przez SSL: LDAPS/StartTLS Inne... 4 / 20 Jakub Juszczakiewicz Usªuga katalogowa na przykªadzie OpenLDAP
Jak wygl da hierarchia? Adresy, DN: Distinguished Name Bazowy: dc=ldap,dc=11,dc=sesja,dc=linuksowa,dc=pl Jednostka organizacyjna: ou=people,dc=ldap,dc=11,dc=sesja,dc=linuksowa,dc=pl U»ytkownik: uid=siewca,ou=people,dc=ldap,dc=11,dc=sesja,dc=linuksowa,dc=pl Atrybuty (przykªady) UID - User Identier CN - Common Name SN - Surname OU - Organizational Unit O - Organization DC - Domain Component 5 / 20 Jakub Juszczakiewicz Usªuga katalogowa na przykªadzie OpenLDAP
OID - Object IDentier http://www.alvestrand.no/objectid/1.3.6.1.4.1.html 1.3.6.1.4.41520.... 1.3.6.1.4.41520 - Jakub Juszczakiewicz 1.3.6.1.4 - Internet Private 1.3.6.1 - OID assignments from 1.3.6.1 - Internet 1.3.6 - US Department of Defense 1.3 - ISO Identied Organization 1 - ISO assigned OIDs Top of OID tree 6 / 20 Jakub Juszczakiewicz Usªuga katalogowa na przykªadzie OpenLDAP
Narz dzia i biblioteki Zestaw narz dzi konsolowych phpldapadmin Apache Directory Studio TM Biblioteki w: C Perl Java Python Ruby inne... 7 / 20 Jakub Juszczakiewicz Usªuga katalogowa na przykªadzie OpenLDAP
Filtry Przykªady ( (sn=jakub)(givenname=jakub)) (&(sn=juszczakiewicz)(givenname=jakub)) (objectclass=*) (objectclass=posixaccount) 8 / 20 Jakub Juszczakiewicz Usªuga katalogowa na przykªadzie OpenLDAP
Dodawanie wpisu r cznie $ ldapadd -D 'cn=admin,dc=siewca,dc=net,dc=pl' -W \ > -f mail-add.ldif dn: uid=test,ou=people,dc=siewca,dc=net,dc=pl objectclass: top objectclass: person objectclass: accounts objectclass: mailalias sn: Test cn: Test isvalid: TRUE serviceaccount: mail mailacceptinggeneralid: test@juszczakiewicz.net maildrop: test@siewca.net.pl uid: test 10 / 20 Jakub Juszczakiewicz Usªuga katalogowa na przykªadzie OpenLDAP
Modykacja $ ldapmodify -D 'cn=admin,dc=siewca,dc=net,dc=pl' \ > -W -f mail-mod.ldif dn: uid=siewca,ou=people,dc=siewca,dc=net,dc=pl add: mailacceptinggeneralid mailacceptinggeneralid: mgrinz.sieffcus@siewca.net.pl 12 / 20 Jakub Juszczakiewicz Usªuga katalogowa na przykªadzie OpenLDAP
Zmiana hasªa $ ldappasswd -S -D 'cn=admin,dc=siewca,dc=net,dc=pl' \ > 'uid=non-exists,ou=people,dc=siewca,dc=net,dc=pl' -W 14 / 20 Jakub Juszczakiewicz Usªuga katalogowa na przykªadzie OpenLDAP
PHP-LDAP <?php // $ d s i s a v a l i d l i n k i d e n t i f i e r f o r a d i r e c t o r y s e r v e r // $ p e r s o n i s a l l o r p a r t o f a p e r s o n ' s name, eg " Jo " $dn = "o=my Company, c=us" ; $ f i l t e r =" ( ( sn=$ p e r s o n ) ( givenname=$ p e r s o n ) ) " ; $ j u s t t h e s e = a r r a y ( " ou ", " sn ", " givenname ", " m a i l " ) ; $ s r=l d a p _ s e a r c h ( $ds, $dn, $ f i l t e r, $ j u s t t h e s e ) ; $ i n f o = ldap_get_entries ( $ds, $ s r ) ; echo $ i n f o [ " c o u n t " ]. " e n t r i e s r e t u r n e d \n" ;?> róªo: http://www.php.net/manual/en/function.ldap-search.php 16 / 20 Jakub Juszczakiewicz Usªuga katalogowa na przykªadzie OpenLDAP
Python-LDAP >>> import l d a p >>> l = l d a p. i n i t i a l i z e ( ' l d a p : / / l o c a l h o s t : 1 3 9 0 ' ) >>> l. s e a r c h _ s ( ' ou=t e s t i n g, dc=s t r o e d e r, dc=de ', l d a p. SCOPE_SUBTREE, ' ( cn=f r e d ) ', [ ' cn ', ' m a i l ' ] ) [ ( ' cn=fred F e u e r s t e i n, ou=t e s t i n g, dc=s t r o e d e r, dc=de ', { ' cn ' : [ ' Fred F e u e r s t e i n ' ] } ) ] >>> r = l. s e a r c h _ s ( ' ou=t e s t i n g, dc=s t r o e d e r, dc=de ', l d a p. SCOPE_SUBTREE, ' ( o b j e c t C l a s s = ) ', [ ' cn ', ' m a i l ' ] ) >>> f o r dn, e n t r y i n r : >>> p r i n t ' P r o c e s s i n g ', r e p r ( dn ) >>> h a n d l e _ l d a p _ e n t r y ( e n t r y ) róªo: http://www.python-ldap.org/doc/html/ldap.html#example 18 / 20 Jakub Juszczakiewicz Usªuga katalogowa na przykªadzie OpenLDAP
Integracja z usªugami http://ldap.11.sesja.linuksowa.pl /phpldapadmin - 192.168.1.50 /jenkins - 192.168.1.51 /redmine - 192.168.1.52 /trac (apache) - 192.168.1.53 /drupal - 192.168.1.54 19 / 20 Jakub Juszczakiewicz Usªuga katalogowa na przykªadzie OpenLDAP
Dzi kuj za uwag Pytania? 20 / 20 Jakub Juszczakiewicz Usªuga katalogowa na przykªadzie OpenLDAP