170 likes | 468 Views
Protokol LDAP. autor: Zdeněk Jonáš předmět: PSI mail: jonasz@dione.zcu.cz un: A01144. Osnova prezentace . Co je to LDAP Struktura databáze LDAP Základní funkce LDAP Programování v jazyce C Ukázka v jazyce PHP Zdroje a odkazy Závěr. Co je to LDAP.
E N D
Protokol LDAP autor: Zdeněk Jonáš předmět: PSI mail: jonasz@dione.zcu.cz un: A01144
Osnova prezentace • Co je to LDAP • Struktura databáze LDAP • Základní funkce LDAP • Programování v jazyce C • Ukázka v jazyce PHP • Zdroje a odkazy • Závěr
Co je to LDAP • LDAP - Lightweight Directory Access Protocol • Vyvinut na univerzitě Michiganu • Protokol pro čtení a správu adresářových služeb. • Primární využití: Získání dat o uživateli • Podpora zabezpečení SSL • Realizován nad TCP
Struktura databáze LDAP • Příklad uspořádání databáze
Základní funkce LDAP • Vyhledávání a navracení položek z adresářů • Přidání nových položek • Úpravu stávajících • Smazání položek • Přejmenování položek
Typy paketů LDAP • Application number Application • 0 BindRequest • 1 BindResponse • 2 UnbindRequest • 3 SearchRequest • 4 SearchResponse • 5 ModifyRequest
Typy paketů LDAP • 6 ModifyResponse • 7 AddRequest • 8 AddResponse • 9 DelRequest • 10 DelResponse • 11 ModifyRDNRequest • 12 ModifyRDNResponse • 13 CompareRequest • 14 CompareResponse • 15 AbandonRequest
Programování v jazyce C • Hlavičkový soubor #include <ldap.h> • Překlad nutno přeložit s parametrem: gcc ldap.c -L/usr/ldap/lib –lldap
Vytvoření handlu LDAP *ld; if ( (ld = ldap_init( HOSTNAME, PORT_NUMBER )) == NULL ) { perror( "ldap_init" ); return( 1 ); }
Anonymní připojení rc = ldap_simple_bind_s( ld, NULL, NULL ); if ( rc != LDAP_SUCCESS ) { fprintf(stderr, "ldap_simple_bind_s: %s\n", ldap_err2string(rc)); return( 1 ); }
Ukázka kódu v PHP $ldapServer = "ldap.zcu.cz"; $ldapPort = 389; $ldapBase = "ou=rfc2307,o=zcu,c=cz"; ## vlastni pripojeni k LDAP serveru $ds=ldap_connect($ldapServer, $ldapPort); if ($ds) { //use LDAPv3 as default to bind if (!ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3)) echo "Failed to set protocol version to 3";
Ukázka kódu v PHP //anonymous bind $r=ldap_bind($ds); $ldapFilter = "uid=jonasz"; $sr=ldap_search($ds,$ldapBase,$ldapFilter); $info = ldap_get_entries($ds, $sr); print_r($info); } else { echo "<h4>Unable to connect to LDAP server</h4>"; }
Program ldapsearch ldapsearch -x -h ldap.zcu.cz -b 'ou=rfc2307,o=zcu,c=cz' 'uid=jonasz' memberof version: 2 # filter: uid=jonasz # requesting: memberof # jonasz, Users, rfc2307, zcu, cz dn: uid=jonasz,ou=Users,ou=rfc2307,o=zcu,c=cz memberof: cn=stud-kat-kts,ou=Groups,ou=rfc2307,o=zcu,c=cz memberof: cn=students,ou=Groups,ou=rfc2307,o=zcu,c=cz memberof: cn=stud-kat-kfi,ou=Groups,ou=rfc2307,o=zcu,c=cz … # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
Odkazy na zdroje http://www2.dmi.columbia.edu/misc/docs/ Velmi dobré. http://www.root.cz/clanky/lehky-uvod-do-ldap/ http://www.fi.muni.cz/~kas/p090/referaty/2004-podzim/st/ldap.html http://www.tldp.org/HOWTO/LDAP-HOWTO/