Pain-free ldap scenarios

  • View
    103

  • Download
    1

Embed Size (px)

DESCRIPTION

 

Transcript

  • 1. Plone Conference 2010BristolPain-free ldap scenariosFlorian Friesdorf Munich, Germany 2010-10-28 Creative Commons Namensnennung-Keine kommerzielle Nutzung- Page 1 of 26 Keine Bearbeitung 3.0 sterreich Lizenz

2. Overview What is LDAP and how do users and groups look in there The current stack of libraries for LDAP in Plone Our goal and principles Our tools Current status Outlook Creative Commons Namensnennung-Keine kommerzielle Nutzung- Page 2 of 26 Keine Bearbeitung 3.0 sterreich Lizenz 3. LDAP, a tree basically an object database tree structure every object has attributes every object may have children slow in writing, but fast in searching indices for selected attributesCreative Commons Namensnennung-Keine kommerzielle Nutzung- Page 3 of 26 Keine Bearbeitung 3.0 sterreich Lizenz 4. LDAP, a tree every object has objectClasses defining possible attributes attributes children (optional) schemas define objectClasses and attributeTypes three scopes: BASE: the entry itself ONELEVEL: all children of the entry SUBTREE: the entry and everything beneath Creative Commons Namensnennung- Keine kommerzielle Nutzung-Page 4 of 26 Keine Bearbeitung 3.0 sterreich Lizenz 5. Example LDAP userdn: uid=hagbard,o=LDD uid: hagbard objectClass: person cn: Hagbard Celine sn: Celine userPassword: haileris password normally encrypted Creative Commons Namensnennung-Keine kommerzielle Nutzung- Page 5 of 26 Keine Bearbeitung 3.0 sterreich Lizenz 6. Groups in LDAP membership information on the group OpenLDAP (core.schema) membership information on the user membership information on both, redundant ActiveDirectory, OpenLDAP (optional) membership information on both, not redundant POSIX: OpenDirectory, OpenLDAP (nis.schema) Creative Commons Namensnennung- Keine kommerzielle Nutzung- Page 6 of 26Keine Bearbeitung 3.0 sterreich Lizenz 7. Membership info on groupdn: cn=lieferickson,o=LDD cn: lieferickson objectClass: groupOfNames member: uid=hagbard,o=LDD member: uid=howard,o=LDD Creative Commons Namensnennung- Keine kommerzielle Nutzung-Page 7 of 26 Keine Bearbeitung 3.0 sterreich Lizenz 8. Membership info on userdn: uid=hagbard,o=LDD uid: hagbard objectClass: person cn: Hagbard Celine sn: Celine userPassword: haileris memberOf: cn=lieferickson,o=LDDCreative Commons Namensnennung-Keine kommerzielle Nutzung- Page 8 of 26 Keine Bearbeitung 3.0 sterreich Lizenz 9. Membership info on both non-redundant dn: uid=hagbard,o=LDD objectClass: posixAccount uidNumber: 17 gidNumber: 42 dn: cn=lieferickson,o=LDD objectClass: posixGroup gidNumber: 42 memberUID: 91 memberUID: 113 Creative Commons Namensnennung-Keine kommerzielle Nutzung- Page 9 of 26 Keine Bearbeitung 3.0 sterreich Lizenz 10. Current LDAP stackand related python-ldap, dataflake.ldapconnection, dataflake.cache PloneLDAP / LDAPMultiPlugins / LDAPUserFolder PlonePAS / PluggableAuthServices plone.app.ldap PASGroupsFromLDAP (posix groups based on bda.ldap) Creative Commons Namensnennung-Keine kommerzielle Nutzung-Page 10 of 26 Keine Bearbeitung 3.0 sterreich Lizenz 11. python-ldap,dataflake.connection dataflake.cache low-level python ldap library basic connection management ldapadd, ldapdelete, ldapmodify, passwd search, authenticate synchronous and asynchronous operation dataflake: enhanced connection management/caching unicode instead of utf-8Creative Commons Namensnennung- Keine kommerzielle Nutzung- Page 11 of 26 Keine Bearbeitung 3.0 sterreich Lizenz 12. PloneLDAP, LDAPMultiPlugins, LDAPUserFolder LDAPUserFolder acl_users implementation of former times builds on dataflake.ldapconnection/cache LDAPMultiPlugins PAS plugins specific to ActiveDirectory and OpenLDAP,no posix support (OpenDirectory) uses LDAPUserFolder to access LDAP PloneLDAP wrapper for LDAPMultiPluginsCreative Commons Namensnennung-Keine kommerzielle Nutzung- Page 12 of 26Keine Bearbeitung 3.0 sterreich Lizenz 13. PlonePAS PluggableAuthServices PASGroupsFromLDAP PluggableAuthServices (PAS) acl_users implementation nowadays supports plugins for users, groups, rols, properties,session management PlonePAS massive monkey patch for PAS aware of PloneLDAP, monkey patching it if present PASGroupsFromLDAP support for posix groups, parallel to ldapmp Creative Commons Namensnennung- Keine kommerzielle Nutzung-Page 13 of 26Keine Bearbeitung 3.0 sterreich Lizenz 14. plone.app.ldap genericSetup profile to wrap installation of all above plone control panel integration for configuration of default setups baseDN uid attribute, rdn attribute, for everything else ZMI, with potential for conflict Creative Commons Namensnennung-Keine kommerzielle Nutzung-Page 14 of 26 Keine Bearbeitung 3.0 sterreich Lizenz 15. Current LDAP stack wrap-up too many packages with no clear borders close to zero test coverage (except dataflake packages) caching on 5 levels PAS LDAPMultiPlugins LDAPUserFolder dataflake.cache python-ldap too complexCreative Commons Namensnennung-Keine kommerzielle Nutzung-Page 15 of 26 Keine Bearbeitung 3.0 sterreich Lizenz 16. GoalMake LDAP simple: for the developer for the inegrator for the system administrator Creative Commons Namensnennung- Keine kommerzielle Nutzung- Page 16 of 26 Keine Bearbeitung 3.0 sterreich Lizenz 17. Principles (LDAP) usermanagement is not specific to plone and should be realized independent of plone minimal code for plone integration no ZMI loadable presets for default setups support whatever LDAP supports ldap is a tree, so should our abstraction of it be full test coverageCreative Commons Namensnennung- Keine kommerzielle Nutzung-Page 17 of 26Keine Bearbeitung 3.0 sterreich Lizenz 18. Our approach enhancement of python-ldap Node-based tree representation (bda.ldap/zodict) Node-based user management (bda.ldap), independent of plone glue code PAS plugin, just for API translation Plone integration (generic setup, config views) bfg user management UI, also based on the node-based user managementCreative Commons Namensnennung- Keine kommerzielle Nutzung- Page 18 of 26 Keine Bearbeitung 3.0 sterreich Lizenz 19. The nodes python shell (bda.ldap fun) LDAPNode with attributes and children ONELEVEL vs. SUBTREE AliasedNodespace User/group node adapter User/group folder node adapter Creative Commons Namensnennung- Keine kommerzielle Nutzung-Page 19 of 26Keine Bearbeitung 3.0 sterreich Lizenz 20. Plone integration PAS plugin that maps PAS plugin API to the API of the outside user management API (bda.ldap) generic setup profile to install the plugin plone control panel views for persistent configuration how to connect to ldap how to find users and how to create one how to find groups and how to create one Creative Commons Namensnennung- Keine kommerzielle Nutzung-Page 20 of 26Keine Bearbeitung 3.0 sterreich Lizenz 21. bda.bfg.ugm repoze.bfg application to manage users one dedicated application to manage users for multiple plone sites enable users for sites assign to global groups assign to site specific groups define global roles per site first stage suitable for up to 2000 users Creative Commons Namensnennung-Keine kommerzielle Nutzung- Page 21 of 26Keine Bearbeitung 3.0 sterreich Lizenz 22. bda.bfg.ugm node-based data model (bda.ldap) node-based application model direct rendering of UI on nodes new form library (yafowil) Creative Commons Namensnennung- Keine kommerzielle Nutzung-Page 22 of 26Keine Bearbeitung 3.0 sterreich Lizenz 23. Statusbda.ldap ldap node fully functional ldap filter abstraction fully functional aliasing of attribute names fully functional user node adapter fully functional group node adapter work in progressCreative Commons Namensnennung-Keine kommerzielle Nutzung-Page 23 of 26 Keine Bearbeitung 3.0 sterreich Lizenz 24. bda.pasldap bda.plone.ldap bda.bfg.app bda.pasldap users readonly for hardcoded config bda.plone.ldap plugin installation fully functional users readonly for hardcoded config configuration views work in progress bda.bfg.ugm work in progressCreative Commons Namensnennung- Keine kommerzielle Nutzung- Page 24 of 26 Keine Bearbeitung 3.0 sterreich Lizenz 25. Outlook user management via bfg application + full plone support (end of 2010) group management via bfg application + full plone support (February 2011) no schedule group in group support further backends (sql) adapt UI too seriously many usersCreative Commons Namensnennung-Keine kommerzielle Nutzung- Page 25 of 26Keine Bearbeitung 3.0 sterreich Lizenz 26. The End Questions AnswersDiscussions Creative Commons Namensnennung- Keine kommerzielle Nutzung- Page 26 of 26 Keine Bearbeitung 3.0 sterreich Lizenz