RMLL 2013 - Build your LDAP management web interface with LinID Directory Manager

33
LinID Directory Manager Clément OUDOT RMLL 2013

description

Presentation of LinID Directory Manager, and how you can use it to build your own LDAP management web interface

Transcript of RMLL 2013 - Build your LDAP management web interface with LinID Directory Manager

Page 1: RMLL 2013 - Build your LDAP management web interface with LinID Directory Manager

LinID Directory Manager

Clément OUDOTRMLL 2013

Page 2: RMLL 2013 - Build your LDAP management web interface with LinID Directory Manager

2

Table of contents● LDAP Directories● LDAP graphical interfaces● LinID Directory Manager

Page 3: RMLL 2013 - Build your LDAP management web interface with LinID Directory Manager

3

Resume

Page 4: RMLL 2013 - Build your LDAP management web interface with LinID Directory Manager

4

Clément OUDOT● Engineer since 2003 at LINAGORA company● LinID Dream Team Manager: http://linid.org ● Founder of LDAP Tool Box project:

http://ltb-project.org ● Leader of LemonLDAP::NG project:

http://lemonldap-ng.org

Page 5: RMLL 2013 - Build your LDAP management web interface with LinID Directory Manager

5

LDAP directories

Page 6: RMLL 2013 - Build your LDAP management web interface with LinID Directory Manager

6

LDAP protocol● Defined by standards (RFC)● LDAPv2 in 1995, LDAPv3 in 1997● TCP/IP, LBER, ASN1 ● 9 core operations, and extended operations● Schema define object classes, attributes, syntaxes

and matching rules● Data organized hierarchically (tree)

Page 7: RMLL 2013 - Build your LDAP management web interface with LinID Directory Manager

7

Directory Information Tree

dc=linid,dc=org

ou=people ou=groupsou=structures

uid=coudot cn=admin

Page 8: RMLL 2013 - Build your LDAP management web interface with LinID Directory Manager

Entry / Attribute / Value

Attribute Attribute

AttributeAttribute

Entry

Attribute

Value

Value

Value

Page 9: RMLL 2013 - Build your LDAP management web interface with LinID Directory Manager

9

Interfaces

Page 10: RMLL 2013 - Build your LDAP management web interface with LinID Directory Manager

10

Administration tools● Command line interface (CLI):

● ldapsearch, ldapmodify● ldapvi● Perl scripts (Net::LDAP)

● Standalone clients:● Jxplorer, LDAP browser● Apache Directory Studio

● Web Interfaces:● phpLDAPadmin● web2ldap

Page 11: RMLL 2013 - Build your LDAP management web interface with LinID Directory Manager

11

Apache Directory Studio

Page 12: RMLL 2013 - Build your LDAP management web interface with LinID Directory Manager

12

LDAP directory management interfaces● In the proprietary world:

● Calendra Directory Manager (Calendra)● Meibo (Ilex)● Some Identity Manager (Oracle, Novell, etc.)

● In the free software world:● LDAP Account Manager● ldapSaisie● FusionDirectory (ex GOSA)● LinID Directory Manager● OpenIDM (ForgeRock)● Janua white pages

● 90% of deployments: self made applications

Page 13: RMLL 2013 - Build your LDAP management web interface with LinID Directory Manager

13

Main features● Screen modelling (HTML templates)● Specific displayer and editor for each attribute● Tag choice and internationalization● Authorization management with profiles● No data adaptation needed

Page 14: RMLL 2013 - Build your LDAP management web interface with LinID Directory Manager

14

LinID Directory Manager

Page 15: RMLL 2013 - Build your LDAP management web interface with LinID Directory Manager

15

History● Development started at UPMC in 2002. First version in

PHP, quickly rewritten in Java. The software is called MetaLDAP

● Open Source release in 2003, under the name InterLDAP

● Became an ObjectWeb project in 2006 inside the FederID project

● Creation of LinID in 2008, it becomes LinID Content Manager and then LinID Directory Manager

● The project is now hosted by Linagora and released under AGPLv3

Page 16: RMLL 2013 - Build your LDAP management web interface with LinID Directory Manager

16

Built with free software● LinID Directory Manager is a web framework

Web built upon:● Tapestry 5● Spring, Spring LDAP● Maven● Xstream● Rhino● Ehcache● jQuery, jQuery UI

Page 17: RMLL 2013 - Build your LDAP management web interface with LinID Directory Manager

17

Technical overview

Page 18: RMLL 2013 - Build your LDAP management web interface with LinID Directory Manager

18

Extended schema● Based on LDAP technical schema (object classes,

attributes)● Override some technical definitions (multi

valuation, mandatory/optional)● Add a lot of new definitions:

● Labels● Default value● Visibility in creation/consultation/research● Allowed value● Type of displayer/editor

Page 19: RMLL 2013 - Build your LDAP management web interface with LinID Directory Manager

19

Extended schema <entry> <string>givenName</string> <attributedefinition> <attributeName>givenName</attributeName> <type>string</type> <oid>2.5.4.42</oid> <description>&apos;RFC2256: first name(s) for which the entity is known by&apos;</description> <largeLabel xml:lang="en">Givenname</largeLabel> <largeLabel xml:lang="fr">Prénom</largeLabel> <printLabel xml:lang="en">Givenname</printLabel> <printLabel xml:lang="fr">Prenom</printLabel> <shortLabel xml:lang="en">Givenname</shortLabel> <shortLabel xml:lang="fr">Prénom</shortLabel> <precedence>15</precedence> <possibleValues> <null/> </possibleValues> <visible>true</visible> <multiValued>false</multiValued> <mandatory>true</mandatory> <filtrable>true</filtrable> <chosenInList>false</chosenInList> <operators> <operator>CONTAINS</operator> </operators> <shownAtCreation>true</shownAtCreation> </attributedefinition> </entry>

Page 20: RMLL 2013 - Build your LDAP management web interface with LinID Directory Manager

20

Authorization● Authorization is based on:

● Relation between current user and target entry● Attributes concerned● Type of operation

● The relation is expressed trough LDAP Query Language, a specific syntax to query LDAP directories almost like SQL databases

Page 21: RMLL 2013 - Build your LDAP management web interface with LinID Directory Manager

21

Authorization <bean id="localadmin_users_manage" class="org.linid.dm.authorization.lql.LqlTextRule" scope="prototype"> <property name="name" value="localadmin_users_manage" /> <property name="description" value="Manage users" /> <property name="module" value="" /> <property name="relation"> <value><![CDATA[ ldap.read( principalDN, "ssoRoles=${ldap.role.localadministrator.dn}"); ]]></value> </property> <property name="targetDn" value="${ldap.user.dn}" /> <property name="rights" value="Wd" /> <property name="attributes"> <list> <value>uid</value> <value>cn</value> <value>sn</value> <value>givenName</value> <value>telephoneNumber</value> <value>facsimileTelephoneNumber</value> <value>departmentNumber</value> <value>o</value> <value>ou</value> <value>mail</value> <value>ssoRoles</value> <value>ssoLogonHours</value> <value>userPassword</value> <value>photo</value> <value>entry</value> </list> </property> </bean>

Page 22: RMLL 2013 - Build your LDAP management web interface with LinID Directory Manager

22

LinID Directory Manager sample● A demonstration application is provided with the

framework● It includes an in-memory directory (OpenDJ) with

the following accounts:● jdoe/secret : super administrator● jsmith/secret : local administrator● jbar/secret : user

● Run in Tomcat, Jetty● Launch it from the sources:

$ mvn -Popends jetty:run

Page 23: RMLL 2013 - Build your LDAP management web interface with LinID Directory Manager

23

Demonstration

Page 24: RMLL 2013 - Build your LDAP management web interface with LinID Directory Manager

24

How to build your own application● Know what you want:

● Which data should be managed in the interface● Who can do what

● Import the sample application in Eclipse● Generate the extended schema with the script

eschemaGenerator.pl● Prepare your fingers to edit XML: Spring

configuration, extended schema, authorization rules

● Redesign the templates

Page 25: RMLL 2013 - Build your LDAP management web interface with LinID Directory Manager

25

Example: UPMC

Page 26: RMLL 2013 - Build your LDAP management web interface with LinID Directory Manager

26

Example: Agriculture French Ministry

Page 27: RMLL 2013 - Build your LDAP management web interface with LinID Directory Manager

27

Example: LinID OBM Manager

Page 28: RMLL 2013 - Build your LDAP management web interface with LinID Directory Manager

28

Example: LinID OpenLDAP Manager

Page 29: RMLL 2013 - Build your LDAP management web interface with LinID Directory Manager

29

Almost the end...

Page 30: RMLL 2013 - Build your LDAP management web interface with LinID Directory Manager

30

18-19 November - PARIS

http://www.ldapcon.org

Page 31: RMLL 2013 - Build your LDAP management web interface with LinID Directory Manager

31

Thanks● Special thanks to:

● RMLL/LSM and their organizers● Company LINAGORA● All LiniD developers

● Keep in touch:● Identica: @coudot● Twitter: @clementoudot @LinID_FOSS ● IRC: KPTN #LinID@freenode● Web: http://linid.org

Page 32: RMLL 2013 - Build your LDAP management web interface with LinID Directory Manager

32

Questions?

Page 33: RMLL 2013 - Build your LDAP management web interface with LinID Directory Manager

Thanks for your attention

http://www.linid.org

Logiciels et services Open Source80 rue Roque de Fillol l 92800 PUTEAUXTel : 0810 251 251 l Fax : +33 1 46 96 63 64www.linagora.com