%default 1 area 100 100, back "cyan", fore "black", size 10 %tab 1 size 5, vgap 40, prefix " ", icon box "blue" 50 %default 2 size 7, vgap 10, prefix " " %default 3 size 2, bar "gray70", vgap 10 %deffont "code" xfont "courier-medium-r" %deffont "normal" xfont "times-medium-r" %page %charset "iso8859-1" %nodefault %back "cyan" %center, size 9, fore "black" %size 10 %font "normal" LDAP-Benutzung mit Java+Tomcat und Python+Zope %vgap 10 %size 5 Holger Blasum, Andreas Meisl, 1.3.6.1.4.1.14212 %size 7 %image "image/siegel.png" %left %page X.500 und LDAP %size 5 X.500 Verzeichnisdienst hierarchisches Datenmodell 1988 von CCITT (ITU)/ISO verabschiedet verwendet DAP LDAP lightweight - abgespeckte Variante U Michigan, V2 als RFC 1777 Beispiele: OpenLDAP, eDirectory, Active Directory %left %page RFC 1777 %center, image "image/rfc1777.png" %page %left LDAP läuft über TCP %size 5 Schichten: TCP/IP->ASN.1/BER-Kodierung->LDAP-Anwendung %center, image "image/ldapethereal.png" %page %left Anwendung %size 5 Anwendungsfall: Fakultät bietet Wahlpflichtkurse an diese werden einmal im Semester von den Studierenden gewählt %center, image "image/browser.png" %page %left Sandkasten %center, image "image/repview.png" %size 3 %left Alternativ: %font "code" ldapsearch -vLx "ou=subldap, ou=user, o=novell" -h www.nldap.com "(objectclass=*)" > subldap.ldif %font "normal" %size 5 %page LDIF-Datei %size 2 %left %font "code" %filter "cat conf/nldapcom/repositoryldif.txt" %endfilter %font "normal" %page LDAP-Klienten: Installation %size 5 Java: www.blackdown.org, 1.4.1 Java LDAP Klassen vom Java Novell Developer Kit -> ldap.jar Python: www.python.org, 2.1.3 python-ldap 2.0.0pre06 (sourceforge) OS: Server: eDirectory auf Netware 5.1 Klient: Debian Woody (GNU) Linux 2.4.19 i686 %page Kurse anschauen: Python %size 3 %font "code" %filter "cat src/standalone/ListCourses.py" %endfilter %font "normal" %size 6 %pause %size 3 %font "code" %filter "cat src/standalone/ListCourses.out.txt" %font "normal" %endfilter %size 6 %page Kurse anschauen: Java %size 3 %font "code" %filter "cat src/standalone/ListCourses.java" %font "normal" %endfilter %size 6 %page Kurse anschauen: Jython %size 3 %font "code" %filter "cat src/standalone/ListCourses.jy" %font "normal" %endfilter %size 6 %page Performance %size 3 %font "code" %filter "cat src/standalone/timings.txt" %endfilter %font "normal" %size 6 %page Einschreibungsdaten ändern %size 3 %font "code" %filter "cat src/standalone/Register.py" %font "normal" %endfilter %font "normal" %size 4 Gegenstück: Ersetze MOD_ADD durch MOD_DEL %page Abstraktionsebene %size 5 %font "code" ChangeManager.py >>> import ChangeManager >>> c = ChangeManager.ChangeManager() >>> couses = c.getCourseList() %font "normal" %page %nodefault Präsentationsschicht %back "white" %size 5 Zope (2.5.1) %center %image "image/zopewahl.png" %left index.html ruft doGet auf. %page Tomcat %size 5 Version (4.1.18 von jakarta.apache.org) Verwendet als Servlet Container %size 5 Konfiguration in: server.xml web.xml (pro Webapp) webapps.policy (Debian) %page TLS/SSL %center %image "image/ssl1.png" %left %size 5 Protokoll SSL: entwickelt von Netscape TLS: IETF Working Group %page TLS Handshake (1) %center %image "image/ssl2.png" %left %page TLS Handshake (2) %size 3 %font "code" %filter "cat cert/ssldumprefined1.txt" %endfilter %font "normal" %size 5 %page TLS Handshake (3) %size 4 %font "code" %filter "cat cert/ssldumprefined2.txt" %font "normal" %endfilter %size 5 %page LDAP-Server-Zertifikat %center %image "image/cert.png" %left %page %size 3 %font "code" %filter "cat cert/viewldapservercert.txt" %endfilter %font "normal" %size 4 %page CA-Zertifikat-Export %center %image "image/instca.png" %left %page Client: Python %size 3 %font "code" %filter "cat src/standalone/RegisterSSL.py" %endfilter %size 5 %font "normal" Beachte: python: openldap-tls, java: keystore %page Ergebnisse %size 5 Zugänglichkeit von eDir / NDS: - Besonderheit: userPassword - Gruppen: (8.6.1) member -> (8.6.2) uniqueMember - keine Transaktionen (Nachteil gegenüber DirXML, NJCL) %page Java vs Python %size 3 %left %font "code" Apache (ohne LDAP): 25-35 Transaktionen/Sek. Apache+Java+Tomcat (ohne SSL): 10-12 Transaktionen/Sek. Apache+Zope+Python (ohne SSL): 10-12 Transaktionen/Sek. Apache+Java+Tomcat (mit SSL): 3,2 Transaktionen/Sek. Apache+Zope+Python (mit SSL): 3,2 Transaktionen/Sek. Apache+Zope+Python (mit SSL, als Prod)10-12 Transaktionen/Sek. %font "normal" %size 5 %left Performance, gemessen mit siege (400 gleichz Nutzer für 60 Sek.) initialer Überhang für JVM verliert sich wesentlich schlechter (2 bis 8 mal) mit Tomcat 4.0.6 Interface search python-ldap: search gibt hash von listen JLDAP: com.novell.ldap.AttributeSet %page TLS/SSL Schnittstelle für Python und Zope %size 5 TLS/SSL kann via python-ldap von Zope-Komponenten ("Produkten") benutzt werden z.B. LDAPUserFolder, CMFUserFolder, ZopeLDAP %page Verzeichnisse vs Datenbanken %size 5 Unsere Anwendung ist Grenzfall: bestehendes Repository kann verwendet werden keine Schema-Erweiterung -> Verzeichnisimplementation möglich %page Vielen Dank ! %size 5 URL: http://www.blasum.net/wri/comp/net/7appl/ldap/ %page LDAP-Patente (petition.eurolinux.org) %center %image "image/pat.png"