Bibliothek der Helmut-Schmidt-Universität Hamburg Virtual Directory Attribute für den IdP aus heterogenen Quellen AAI Forum im Rahmen der Betriebstagung des DFN Berlin, 26.10.2010 Ulrich.Hahn@hsu-bibliothek.de
Virtual Directories vs. Metadirectories am Beispiel: Penrose VD Server Konfiguration Schemaerweiterung Quellen Attribute für eduperson
Metadirectories Aufbau eines eigenen Directories Konsolidierung in neuem Schema Synchronisierung Datenbestände, fortlaufend Produkte von Novell, Microsoft, Hitachi, Oracle Opensource: SUN, GANYMEDE2 von arlut.utexas.edu Virtual Directories keine Änderungen bestehender Strukturen "internal view" hohe Flexibilität beim "external view" Schemaänderung sofort Datenänderungen sofort Produkte, Opensource: myvd, Penrose,
Penrose Virtual Directory Java RMX GUI: Penrose Studio Konfiguration in XML Dateien Standalone, als Tomcat Webapp oder embedded bietet SUN, Apache, oder OpenLDAP als LDAP Server Schemata erweiterbar (Vorsicht: zweimal!) "Federation Server" synchronisiert NIS und LDAP (no DB Source) Penrose wird von RedHat gehosted, Identyx - Penrose Supporter gehört seit 2008 zu RedHat Link: Penrose Use Cases
Schemaerweiterung eduperson Attribute stehen in den Quellen nicht zur Verfügung 1. Upload der eduperson.schema im GUI 2. Dient der Pflege der Konfiguration 3. Einfügen von services/opends/config/schema/eduperson.ldif Stellt das Schema für den LDAP Server zur Verfügung bzw. in den LDAP Service der Wahl n.b.: Ohne Kommentarzeilen!
Java RMX GUI: Penrose Studio
Penrose Studio
file:connections.xml <connection name="ads1anon"> <adapter-name>ldap</adapter-name> <parameter> <param-name>java.naming.security.credentials</param-name> <param-value></param-value> </parameter> <parameter> <param-name>java.naming.provider.url</param-name> <param-value>ldap://ads1/</param-value> </parameter> <parameter> <param-name>java.naming.security.principal</param-name> <param-value></param-value> </parameter> </connection> <connection name="lbsdb"> <adapter-name>jdbc</adapter-name> <parameter> <param-name>driver</param-name>
file:connections.xml <connection name="lbsdb"> <adapter-name>jdbc</adapter-name> <parameter> <param-name>driver</param-name> <param-value>net.sourceforge.jtds.jdbc.driver</param-value> </parameter> <parameter> <param-name>url</param-name> <param-value>jdbc:jtds:sybase://bibfire:2025/lbsdb</param-value> </parameter> <parameter> <param-name>user</param-name> <param-value>lbs</param-value> </parameter> <parameter> <param-name>password</param-name> <param-value>xxxxx</param-value> </parameter> </connection>
file:sources.xml <source> <source-name>ads1</source-name> <field name="cn"> <variable>uid</variable> </field> </source> <source> <source-name>borrower</source-name> <field name="borrower_bar"> <variable>ads1.cn</variable> </field> </source>
file:directory.xml <entry dn="uid=...,dc=hsu-hh,dc=de"> <entry-class>org.safehaus.penrose.directory.dynamicentry</entryclass> <oc>eduperson</oc> <oc>inetorgperson</oc> <oc>organizationalperson</oc> <oc>person</oc> <oc>top</oc> <at name="uid" rdn="true"> <variable>rzemail.library_number</variable> </at> <at name="edupersonprincipalname"> <expression>edupersonprincipalname=rz.samaccountname+"@hsuhh.de";</expression> </at>
file:directory.xml Beispiel: konstante Attribute <at name="edupersonaffiliation"> <constant>member</constant> </at> <at name="l"> <constant>hamburg</constant> </at> <at name="c"> <constant>de</constant> </at>
file:directory.xml Beispiel: Attribute aus Variablen <at name="uid" rdn="true"> <variable>library2rzuser.library_number</variable> </at> <at name="cn"> <variable>rz.displayname</variable> </at> <at name="memberof"> <variable>rz.memberof</variable> </at>
file:directory.xml Beispiel: Attribute aus Berechnungen "Expression" <at name="edupersonprincipalname"> <expression> edupersonprincipalname=rz.samaccountname+"@hsu-hh. de"; </expression> </at>
file:directory.xml Beispiel: Attribute aus Berechnungen "Expression" <at name="edupersonaffiliation"> <expression foreach="rz.memberof" var="sm">if ((void==sm) (null==sm)) return; if(sm.contains("_profs")) return "faculty"; if(sm.startswith("cn=alum")) return "alum"; if(sm.startswith("cn=gaststud")) return "student"; if(sm.startswith("cn=sb_")) return void; if(sm.startswith("cn=no_group")) return "staff"; [..] return "library-walk-in";</expression> </at>
file:directory.xml Beispiel: Attribute aus Berechnungen "Expression" <at name="edupersonaffiliation"> <expression foreach="borrower.borrower_status" var="bs"> if((void==bs) (null==bs)) return "void"; if(5==bs)return "member"; if(0<bs)return; return "library-walk-in"; </expression> </at>
Penrose VD myvd Entwicklung / Zukunft nightly build vom 12/2009 jüngster Stand 2008? GUI Penrose Studio - Java RMX - Eclipse based - Quelltext? OpenSource, Java, OpenSource, Java, "Inserts" individuell Features Id Federation "Management" Directory Migration Routing: bind,read,write,(update) Chains Dokumentation Tutorials, fertige Beispiele Skeleton zur Erzeugung eigener Inserts
Vielen Dank! Fragen? Zum Weiterklicken: Penrose Virtual Directory MyVD LDAP Virtual Directory Ganymede 2.0 http://penrose.safehaus.org http://www.heise. de/kiosk/archiv/ix/2009/3/142 http://www.wiso-net.de/webcgi? START=A60&DOKV_DB=ZECO&DOKV_NO=PMGI200902194 3&DOKV_HS=0&PP=1 http://myvd.sourceforge.net/ http://tools.arlut.utexas.edu/gash2/ http://www.usenix. org/event/lisa98/full_papers/abbey/abbey.pdf Dieser Vortrag http://ub.hsu-hh.de/go/pen10