70
Lightweight Directory Access protocol (LDAP) Projektování distribuovaných systémů Lekce 16 Ing. Jiří ledvina, CSc.

Lightweight Directory Access protocol (LDAP)

  • Upload
    wes

  • View
    53

  • Download
    0

Embed Size (px)

DESCRIPTION

Lightweight Directory Access protocol (LDAP). Projektování distribuovaných systémů Lekce 16 Ing. Jiří ledvina, CSc. Agenda. Motivace Pochopení LDAP Informační struktura Jména Funkce a operace Bezpečnost Model protokolu Mapování na transportní služby Protokol kódování Diskuse. - PowerPoint PPT Presentation

Citation preview

Page 1: Lightweight Directory Access protocol (LDAP)

Lightweight Directory Access protocol (LDAP)

Projektování distribuovaných systémů

Lekce 16

Ing. Jiří ledvina, CSc.

Page 2: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 2

Agenda

Motivace Pochopení LDAP

Informační struktura Jména Funkce a operace Bezpečnost

Model protokolu Mapování na transportní služby Protokol kódování Diskuse

Page 3: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 3

Adresáře

Off-line adresáře – telefonní seznamy, … On-line adresáře – udržované v elektronické podobě a také

přístupné v elektronické podobě Vlastnosti on-line adresářů

Dynamické Vkládání, mazání, aktualizace záznamů

Flexibilní Ukládání různých typů informací Text, video, audio, certifikáty, … Informace o nastavení aplikace

Zabezpečené ACL – Access Control List – práva přístupu uživatelů

Personalizovatelné Možnost uchovat specifické informace pro jednoho uživatele

Page 4: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 4

Typy adresářů podle použití

Aplikační adresáře (IBM Lotus Notes, …) Vlastní systém ukládání záznamů, orientované na aplikaci

Adresáře síťových OS Microsoft Active Directory (LDAP, Kerberos, CIFS – Common

Interface File Systém) Novell Directory Services NIS – Network Information Services (SUN)

Účelové adresáře DNS

Univerzální standardizované adresáře X.500, LDAP

Page 5: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 5

Adresářové služby a databáze

Databáze jsou složitější Složité dotazy Propojení mnoha tabulek Možnost realizace transakcí Srovnatelný poměr mezi čtením a ukládáním dat Velká režie

Adresářové služby Jednoduché dotazy Převládá čtení nad zápisy Nepožadují transakční zpracování Decentralizované uložení informace Možnost replikací

Page 6: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 6

Motivace a vývoj

Zvyšování spolehlivosti síťových zařízení Potřeby v informacích

Funkčnost Jednoduchost použití Administrace Konzistentní organizace Integrita Důvěrnost

Page 7: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 7

X.500

X.500 standard. CCITT 1988 Refer ISO 9594 – X.500-X.521 of 1990

Page 8: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 8

Základní prvky X.500

DIT – Directory Information Tree Adresářový strom Hierarchická struktura Listy obsahují informaci (data) Uzly uvnitř stromu informační vazby

DN – Distinguished Name Jméno použité pro rozlišení informace (od kořene stromu) Sestává z relativních DN (RDN) – rozlišení v podstromu (větvi

stromu)

Page 9: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 9

DN a RDN

Page 10: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 10

X.500

Organizace položek adresáře do hierarchického stromu Výkonné prostředky pro vyhledávání Často používán pro propojení nekompatibilních systémů Používá DAP pro komunikaci klientů a serverů DAP (App. Layer) požaduje celý OSI zásobník Příliš obtížné pro malé aplikace Mnoho informací uloženo na mnoha serverech včetně

replik

Page 11: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 11

X.500

Síťová aplikace typu server/klient DUA – Directory User Agent DSA – Directory Server Agent

Předpokládá připojení klienta k libovolnému serveru, který má vazby na X.500 servery Klientovi se databáze jeví jako kompaktní (obdoba DNS) Princip modifikace informace tam, kde vzniká Dotazování mezi X.500 servery (různé způsoby dotazování)

Protokol pro komunikaci klient/server – DAP (Directory Access Protocol

Protokol pro komunikaci mezi servery (? SAP – Server Access protocol)

Page 12: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 12

Přechod DUA X.500 na LDAP

X.500 – (DAP + OSI) - standardizace ITU 1980 LDAP – (TCP/IP) – 1993

Tim Howes (University of Michigen) Steve Kille (Isode Limited) Wengyik Yeong (Performance Systems

LDBP Lightweight Directory Browsing Protocol ASN.1 + LBER

Lightweight BER (zjednodušení zpracování při zachování transparentnosti reprezentace dat

BER, ale textuální reprezentace

Page 13: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 13

Přechod DUA X.500 na LDAP

Původně představa vytvoření brány mezi jednoduchým klientem a protokolem DAP (komunikace DUA/DSA)

Později náhrada této brány vlastním serverem + úložištěm dat

Komunikace DAP nahrazena LDAP Nyní protokol LDAP verze 2 nebo 3

Page 14: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 14

LDAP Server

Page 15: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 15

Adresářový strom a adresářová struktura

Page 16: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 16

Co je to LDAP? Lightweight Directory Access Protocol Používá se pro přístup k informaci a pro její úpravu v

adresářích budovaných na X.500 model Specifikace definuje obsah zpráv přenášených mezi

klientem a serverem. Zahrnuje operace pro vytváření a ukončování spojení

se serverem

Page 17: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 17

Pochopení LDAP Zjednodušená varianta k DAP Používá TCP/IP zásobník místo zásobníku

ISO/OSI Některé funkce zjednodušuje a jiné vynechává

… K reprezentaci dat používá řetězce místo DAP

notace ASN.1

Page 18: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 18

Komponenty LDAP

Standardizovaný přístup k adresářovým službám Zahrnuje 4 modely Komponenty

LDIF – LDAP Data Interchange Format Standardizovaný formát pro výměnu dat (BER, LBER)

LDAP server LDAP klient

LDAP API – rozhraní pro vývoj vlastních aplikací C, PERL, Java, CGI, …

Page 19: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 19

LDAP schéma

Množina definic pravidel nad adresářovým stromem Definuje třídy objektů (objectclass) Definuje množinu povinných a nepovinných atributů Definuje jednotlivé atributy

Page 20: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 20

Příklad - OID organizace

objectclass ( 1.3.6.1.4.1.98546.1.2.1 NAME 'exampleObject' DESC 'example.org objects' SUP top AUXILIARY MUST displayName MAY uniqueIdentifier )

Page 21: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 21

Příklad - OID organizace

objectclass ( 1.3.6.1.4.1.98546.1.2.1 NAME 'exampleObject' DESC 'example.org objects' SUP top AUXILIARY MUST displayName MAY uniqueIdentifier )

objectclass ( 1.3.6.1.4.1.98546.1.2.2 NAME 'examplePerson' DESC 'example.org people' SUP exampleObject AUXILIARY MAY ( personalTitle $ ou ))

objectclass ( 1.3.6.1.4.1.98546.1.2.3 NAME 'exampleGroup' DESC 'example.org group' SUP top STRUCTURAL MUST displayName MAY ( member $ description $ owner ))

Page 22: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 22

Příklad adresářové položky (LDIF)

dn: cn=John Doe,dc=example,dc=com cn – uzel RDNdc – rodičovské DN

dn – Domain Name, dc – Domain Component, cn – Canonical Name

cn: John Doe givenName: John atributsn: Doe atributtelephoneNumber: +1 888 555 6789 telephoneNumber: +1 888 555 1232 mail: [email protected] manager: cn=Barbara Doe,dc=example,dc=com objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: person objectClass: top

Page 23: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 23

LDAP

Informační struktura Struktura informace uložená v LDAP adresáři

Jmenná struktura Jak je informace uložena a pojmenována.

Funkční struktura a operace Popisuje jak mohou být operace prováděny nad informacemi

uloženými v LDAP adresáři Bezpečnost

Popisuje jak může být informace chráněna před neautorizovaným přístupem

Page 24: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 24

LDAP uložení informace

Page 25: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 25

LDAP uložení informace

Každý atribut je popsán typem/syntaxí a hodnotou Může definovat jak se budou hodnoty chovat během operací

prohledávání adresářů Syntax může být: bin, ces, cis, tel, dn, atd.

bin – binární informace ces – case exact string (directory string), při porovnávání rozlišuje

malá/velká písmena tel – telefonní číslo, reprezentace jako řetězec, mezery jsou ignorovány dn – rozlišující jméno (distinguished name) Generalized time – rok, měsíc, den a čas reprezentovány jako

tisknutelný řetězec Postal address – poštovní adresa s řádky oddělenými znakem ‘$’

Page 26: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 26

Rozumné strukurální třídy dle RFC

Není třeba vymýšlet vlastní třídy Lépe je využít to, co je hotové a kombinovat Případně rozšiřovat existující třídy o vlastní atributy

Page 27: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 27

Obecné atributy LDAP

Atribut, aliassyntax

popis příklad

commonName, cn cis Obecné jméno položky John Smith

Surname, sn cis Příjmení osoby Smith

telephoneNumber tel Telefonní číslo 123-456-789

organizationalUnitName, ou

cis Jméno organizace UWB

owner dnDN osoby vlastnící položku

cn=John Smith,o=UWB, c=cz

organization, o cis Jméno organizace UWB

jpegPhoto bin Foto v JPEG formátuSmithova fotografie

Page 28: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 28

LDAP uložení informace

Každá položka popisuje objekt (Class) Osobu, server, zařízení, atd.

Příklad položky: InetOrgPerson(cn, sn, ObjectClass)

Příklad atributů: cn (cis), sn (cis), telephoneNumber (tel), ou (cis), owner

(dn), jpegPhoto (bin)

Page 29: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 29

Identifikátory objektů

Globální OID Unikátní v celém světě ID globálních objektů přidělovány centrální autoritou (IANA) OID vychází ze záznamu tečkovou notací (čísla, jména) OID = 1.3.6.1.4.1.x

x je přípona, kterou přiděluje IANA ZČU má přiděleno číslo 11433 Další podskupiny si organizace určuje sama

Page 30: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 30

Soubor informací o objektech

Záznamy – informace o objektech Objektová třída – množina atributů Atributy jsou popsány vlastnostmi Mohou nabývat jednu nebo více hodnot Forma reprezentace dat (syntaxe) – RFC 2252 Definují sadu pravidel Atributy mají jedinečný prefix (tečková notace)

Page 31: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 31

Syntaxe některých typů

Název OID Popis

binary 1.3.6.1.4.1.1466.115.121.1.5 BER/DER

boolean 1.3.6.1.4.1.1466.115.121.1.7 boolean hodnota

distinguishedName 1.3.6.1.4.1.1466.115.121.1.12 DN

directoryString 1.3.6.1.4.1.1466.115.121.1.15 UTF-8 řetězec

IAString 1.3.6.1.4.1.1466.115.121.1.26 ASCII řetězec

Integer 1.3.6.1.4.1.1466.115.121.1.27 celé číslo

Name and Optional 1.3.6.1.4.1.1466.115.121.1.34 DN plus UID

Numeric String 1.3.6.1.4.1.1466.115.121.1.36 číselný řetězec

OID 1.3.6.1.4.1.1466.115.121.1.38 object identifier

Page 32: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 32

Pravidla shody

Název OID Typ Popis

objectIdentifierMatch 2.5.13.0 shoda OID

distinguishedNameMatch 2.5.13.1 shoda DN

caseIgnoreMatch 2.5.13.2 shoda velikost a mezery nerozlišuje

caseIgnoreOrderingMatch 2.5.13.3 uspořádání velikost a mezery nerozlišuje

caseIgnoreSubstringsMatch

2.5.13.4 uspořádání velikost a mezery nerozlišuje

caseExactMatch 2.5.13.5 shoda velikost rozlišuje, mezery ne

caseExactOrderingMatch 2.5.13.6 uspořádání velikost rozlišuje, mezery ne

caseExactSubstringsMatch 2.5.13.7 podřetězec velikost rozlišuje, mezery ne

booleanMatch 2.5.13.13 shoda boolean

Page 33: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 33

Aliasy

Page 34: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 34

Atributy

Mají definován Typ hodnoty Povolené operace Definované také pomocí OID

Mohou být Uživatelské – definované uživatelem Operační – obsahují systémové informace

Page 35: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 35

Definice atributu dle RFC2252AttributeTypeDescription = "(" whspnumericoid whsp ; Identifikátor Typu atributu[ "NAME" qdescrs ] ; Název používaný typem atributu[ "DESC" qdstring ] ; Popis[ "OBSOLETE" whsp ][ "SUP" woid ] ; Odvození od jiného typu atributu[ "EQUALITY" woid ; Název pravidla shody pro shodu[ "ORDERING" woid ; Název pravidla shody pro porovnání[ "SUBSTR" woid ] ; Název pravidla shody pro podřetězec[ "SYNTAX" whsp noidlen whsp ] ; OID syntaxe[ "SINGLE-VALUE" whsp ] ; Standardně vícehodnotové[ "COLLECTIVE" whsp ] ; Standardně not collective[ "NO-USER-MODIFICATION" whsp ]; Standardně modifikovatelné

uživatelem[ "USAGE" whsp AttributeUsage ]; Standardně userApplicationswhsp ")"

Page 36: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 36

LDAP jména

DN skládá se ze sekvence relativních DN cn=John Smith,ou=Austin,o=IBM,c=US

Directory Information Tree (DIT) Vytváří se podle geografických nebo organizačních

schémat Aliases: podobné stromům Aliases mohou odkazovat na uzly stromu, které nejsou

listy

Page 37: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 37

LDAP jména Schema

Definuje povolené třídy objektů Definuje kde jsou uloženy Definuje jaké mají atributy (objectClass) Definuje které atributy jsou volitelné (objectClass) Definuje typ/syntaxi každého atributu (objectClass)

LDAP schema musí být čitelné klientem

Page 38: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 38

LDAP příklady jmen

atribut alias

CommonName CN

LocalityName L

StateorProvinceName ST

OrganizationName O

OrganizationalUnitName OU

CountryName C

StreetAddress STREET

domainComponent DC

Userid UID

Page 39: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 39

LDAP funkce a operace Ověřování

BIND/UNBIND – připojení/odpojení ABANDON – opuštění – zrušení operace

Dotazování Search - vyhledání Compare entry - porovnání

Opravy Add an entry – přidání položky Delete an entry (pouze listy stromu, ne aliasy) – zrušení

položky Modify an entry, Modify DN/RDN (jméno, relativní jméno) –

modifikace položky nebo jména položky

Page 40: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 40

Komunikace klient/server Klient vytváří relaci se serverem (BIND)

Podle DNS jména/IP adresy a portu Bezpečnost

Ověřování založené na ID uživatele a heslu Anonymní připojení – implicitní práva přístupu Podpora Kerbera a šifrování

Klient provádí operace Read/Update/Search SELECT X,Y,Z FROM PART_OF_DIRECTORY

Klient ukončuje relaci (UNBIND) Klient může relaci přerušit (ABANDON)

Page 41: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 41

Operace BIND/UNBIND/ABANDON

Požadavek obsahuje verzi LDAP, jméno pod kterým se chce klient připojit, typ ověřování Jednoduché – anonymní, jednoduché nešifrované heslo Kerberos v4 k LDAP serveru (krbv42LDAP) Kerberos v4 k DSA serveru (krbv42DSA)

Server odpovídá indikací stavu UNBIND: ukončuje relaci

UnbindRequest ::= [APPLICATION 2] NULL

ABANDON: MessageID to abandon

Page 42: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 42

Operace vyhledávání a porovnávání Požadavek zahrnuje

baseObject: an LDAPDN Scope: kolik úrovní stromu má být prohledáváno derefAliases: zpracování aliasů sizeLimit: max počet vrácených položek timeLimit: max čas prohledávání attrsOnly: vrací typy atributů nebo také jejich hodnoty Filter: podmínky které mají být splněny při prohledávání Attributes: seznam atributů, ke kterým se hledá odpověď

Čtení i výpis seznamu je realizován jako vyhledávání Porovnání: podobné vyhledávání, ale vrací true/false

Page 43: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 43

Parametry vyhledávání

Base – prohledávání podle DN (strom, podstrom) Size – maximální počet položek Attributes – seznam atributů, které se mají vrátit Attrsonly –

true – hodnoty/atributy False – pouze seznam atributů

Scope – hloubka prohledávání Time – maximální doba prohledávání Search_filter – omezení prohledávání na specifické

atributy nebo jejich hodnoty “objectclass = *” “cn=novak*”

Page 44: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 44

Rozsah prohledávání

Base Omezeno pouze na základní objekt Informace o uživatelích

One level Omezeno pouze na následující úroveň (potomky) Informace o členech organizace

Subtree Prohledání celého podstromu

Page 45: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 45

Filtrování, operátory filtrování

Vyhledají se objekty podle DN a rozsahu vyhledávání V dalším kroku je možné vytvořit podmnožinu podle

zadaných kritérií filtrování Jednoduché operace

Logické &, |, ! Relační

~= - přibližně stejné >= - větší nebo rovno <= - menší nebo rovno * - libovolné

Page 46: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 46

Filtrování, operátory filtrování

Příklady (objectClass=název objektu) (cn=Josef P*) (|(uid=novak)(uid=patek)) (&(|(uid=Petr)(uid=Pavel))(objectclass=person))

Page 47: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 47

LDAP URL

RFC 4516 ldap://host:port/DN?atributy?scope?filter?extensions Host – jméno nebo adresa LDAP serveru Port – síťový port DN – jméno použité jako základ pro prohlrdávání Atributy – seznam atributů oddělených čárkou Scope – rozsah prohledávání (base, one, sub) Filter – filtr prohledávání (RFC4515) – objectClass=*

Page 48: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 48

LDAP URL

ldap://foo.bar.com/dc=bar,dc=com ldap://argle.bargle.com/dc=bar,dc=com??sub?uid=barney ldap://ldap.bedrock.com/dc=bar,dc=com?cn?sub?uid=barney ldap://ldap.zcu.cz:389/uid=ledvina, ou=Users, ou=rfc2307, o=zcu,

c=cz??base?(objectClass=*)

Scope Base One Sub

Page 49: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 49

Příklad výpisu Softerra LDAP Browser 2.5

#-------------------------------------------------------------------------------# This file has been generated on 04.15.2008 at 11:33 from ldap.zcu.cz:389# by Softerra LDAP Browser 2.5 (http://www.ldapbrowser.com)#-------------------------------------------------------------------------------version: 1dn: uid=ledvina,ou=Users,ou=rfc2307,o=zcu,c=czobjectClass: personobjectClass: organizationalPersonobjectClass: inetOrgPersonobjectClass: posixAccountobjectClass: pleiadesPerson

Page 50: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 50

Příklad výpisu Softerra LDAP Browser 2.5

uid: ledvinauidNumber: 1330gidNumber: 100givenName: JiriloginShell: /bin/tcshhomeDirectory: /users/l/ledvina/homemail: [email protected]: Jiri LEDVINAsn: LEDVINA

Page 51: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 51

Příklad výpisu Softerra LDAP Browser 2.5

memberof: cn=acl$linux_kiv,ou=Groups,ou=rfc2307,o=zcu,c=czmemberof: cn=acl$linux_public,ou=Groups,ou=rfc2307,o=zcu,c=czmemberof: cn=acl$tacacs,ou=Groups,ou=rfc2307,o=zcu,c=czmemberof: cn=dbadmin,ou=Groups,ou=rfc2307,o=zcu,c=czmemberof: cn=staff,ou=Groups,ou=rfc2307,o=zcu,c=czmemberof: cn=users,ou=Groups,ou=rfc2307,o=zcu,c=czmemberof: cn=fav,ou=Groups,ou=rfc2307,o=zcu,c=czmemberof: cn=kiv,ou=Groups,ou=rfc2307,o=zcu,c=czmemberof: cn=teachers,ou=Groups,ou=rfc2307,o=zcu,c=czuserPassword: {crypt}*

Page 52: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 52

Operace ADD/MODIFY/DELETE

Operace ADD Entry: LDAPDN Seznam artributů a jejich hodnot (nebo množina hodnot)

Operace MODIFY Používá se k přidání, rušení a modifikaci atributů Požadavek obsahuje

Object: LDAPDN Seznam modifikací (atomické provedení)

Add, Delete, Replace Operace DELETE

Object: LDAPDN Operace MODIFY RDN: LDAPDN, newRDN, DEL_FLAG

Page 53: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 53

LDAP zprávy

LDAPMessage (MessageID unique)

Page 54: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 54

LDAP zprávy

LDAPString ::= OCTET STRING LDAPDN ::= LDAPString RelativeLDAPDN ::= LDAPString AttributeValueAssertion ::=

Sequence {attributeType attributeValue,

attributeValue attributeValue

} attributeType ::= LDAPString attributeValue ::= OCTET STRING

Page 55: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 55

LDAP zprávy

LDAP Result Chyby

Truncated DIT RDN sequence is sent

noSuchObject aliasProblem invalidDNSyntax isLeaf etc.

Page 56: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 56

Bezpečnost LDAP

Současná verze LDAP podporuje Heslo v textové podobě Ověřování KERBEROS v 4 SASL – Simple Authentication and Security Layer (RFC4422)

Prostředek pro ověřování a zajištění bezpečných dat v Internetu

Odstranění ověřovacích mechanizmů z aplikací Využití libovolného ověřovacího mechanizmu

podporovaného SASL v libovolné aplikaci Nabízí též data security layer (integrita a důvěrnost dat)

Page 57: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 57

Mechanizmus SASL

Protokol pracující s výzvami a odpověďmi Definuje následující mechanizmy:

EXTERNAL - ověřování zahrnuto implicitně (IPsec, TLS) ANONYMOUS – neautorizovaný přístup PLAIN – jednoduché ověřování prostým textem – heslem OTP – jednorázové heslo – nahrazen SKEY SKEY – mechanizmus SKEY – rekurzivní generování hesla CRAM-MD5 – jednoduchá výměna výzva-odpověď založená na HMAC-

MD5 DIGEST-MD5 - jednoduchá výměna výzva-odpověď pomocí HTTP

založená na MD5, podpora bezpečného přenosu dat NTLM – ověřovací mechanizmus NT LAN Manager GSSAPI – ověřování Kerberos V prostřednictvím GSSAPI, podpora

bezpečného přenosu dat.

Page 58: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 58

Mechanizmus GSSAPI

Generic Security Services Application Program Interface API pro přístup k bezpečnostním službám IETF standard Poskytuje 45 knihovních volání Podpora C, Java, C# Předpokládá architekturu klient/server

Page 59: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 59

Bezpečnost LDAP

Bezpečnost založená na modelu připojování (BIND) LDAPv1 - heslo LDAPv1,2,3 – Kerberos LDAPv3 - SASL Navrhováno TLS (Transport Layer Security)

Založeno na SSL v3 (Netscape)

Page 60: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 60

Bezpečnost LDAP

Bez ověřování Základní ověřování

DN a heslo Otevřený text nebo kódování BASE64

SASL (RFC 4422) Parametry: DN, mechanism, credentials Zajišťuje vzájemné ověřování Případné dohadování o šifrování dat ldap_sasl_bind() (ver3 call) Ldap://<ldap_server>/?supportedsaslmechanisms

Page 61: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 61

Bezpečnost LDAP

LDAP a SASL s SSL/TLS

Page 62: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 62

Bezpečnost LDAP

Ověřování SSL/TLS

Page 63: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 63

LDAP protokol (klient/server)

Klient aktivuje komunikaci se serverem Klient posílá serveru požadavek Server požadavek zpracuje Server vrací odpověď nebo chybu

Server zpracovává požadavky asynchronně

Page 64: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 64

Spolupráce klient/server

Page 65: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 65

Mapování na transportní služby

LDAP používá spolehlivý přenos dat (TCP) TCP

LDAPMessage PDU mapována na TCP stream LDAP naslouchá na portu 389

Connection Oriented Transport Service (COTS) LDAP PDU mapováno přímo na T-Data

Page 66: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 66

Kódování protokolových prvků

Pro kódování zpráv se používá BER (Basic Encoding Rules)

BER definováno v Abstract Syntax Notation One (ASN.1)

BER má velkou režii Omezení na zvýšení efektivity

Pevná délka kódovaných položek Bitové řetězce i řetězce oktetů jsou kódovány pouze v

základní podobě.

Page 67: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 67

Implementace LDAP

C Library API LDAPv2 - RFC 1823 ‘The LDAP API’ LDAPv3 – RFC

Java JNDI LDAP v3 používá UTF-8 kódování Existuje brána LDAP HTTP Existuje brána LDAP X.500 (ldapd)

Page 68: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 68

LDAP v2

RFC 1777: LDAP v1 RFC 1778: The String Representation of Standard

Attribute Syntaxes RFC 1779: A String Representation of Distinguished

Names RFC 1959: An LDAP URL Format RFC 1960: A String Representation of LDAP Search

Filters

Page 69: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 69

Verze 2 versus Verze 3

Referrals Server který nemá k dispozici požadovaná data může odkázat

klienta na jiný server.

Bezpečnost Rozšířené ověřování s využitím Simple Authentication and

Security Layer (SASL)

Internacionalizace Podpora národních abeced – kódování UTF-8.

Rozšiřitelnost Nové typy objektů a operací mohou být definovány dynamicky a

schémata publikována standardním způsobem

Page 70: Lightweight Directory Access protocol (LDAP)

14.4.2008 Projektování distribuovaných systémů (72 stran) 70

Implementace

PHP (podpora Apache) Java JNDI (Java Naming Directory Interface) OpenLDAP – server, klient, API TinyLDAP Softerra LDAP browser Luma LDAP browser LDAP Explorer Tool GAWOR LDAP browser/editor