SlideShare a Scribd company logo
Build your LDAP Web Interface
with LinID Directory Manager
Clément OUDOT
Table of contents
LDAP graphical interfaces
LinID Directory Manager

2
Resume

3
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

4
Interfaces

5
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

6
Apache Directory Studio

7
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

8
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

9
LinID Directory Manager

10
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

11
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

12
Technical overview

13
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

14
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>

15
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

16
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>

17
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

18
Demonstration

19
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

20
Example: UPMC

21
Example: Agriculture French Ministry

22
Example: LinID OBM Manager

23
Example: LinID OpenLDAP Manager

24
Almost the end...

25
Thanks
Special thanks to:
– LDAPCon!
– Company LINAGORA
– All LiniD developers

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

26
Thanks!

More Related Content

PDF
Do The Right Thing! How LDAP servers should help LDAP clients
PDF
A Backend to tie them all?
ODP
Fusiondirectory: your infrastructure manager based on ldap
PDF
Building Open Source Identity Management with FreeIPA
PDF
Distributed Virtual Transaction Directory Server
PDF
Bridging the gap: Adding missing client (security) features using OpenLDAP pr...
PDF
Fortress Open Source IAM on LDAPv3
PDF
How AD has been re-engineered to extend to the cloud
Do The Right Thing! How LDAP servers should help LDAP clients
A Backend to tie them all?
Fusiondirectory: your infrastructure manager based on ldap
Building Open Source Identity Management with FreeIPA
Distributed Virtual Transaction Directory Server
Bridging the gap: Adding missing client (security) features using OpenLDAP pr...
Fortress Open Source IAM on LDAPv3
How AD has been re-engineered to extend to the cloud

What's hot (20)

PDF
Give a REST to your LDAP directory services
ODP
Open source identity management 20121106 - apache con eu
PDF
Spring Ldap
PDF
Directories for the REST of Us: REST to LDAP in OpenDJ 2.6
PDF
Update on the OpenDJ project
PPTX
Databasecentricapisonthecloudusingplsqlandnodejscon3153oow2016 160922021655
PDF
Building Restful Applications Using Php
PPT
Mime Magic With Apache Tika
PDF
The RDBMS You Should Be Using
PPTX
Webinar: MongoDB 2.6 New Security Features
PPT
Document Databases & RavenDB
PPTX
Introduction to RavenDB
PPTX
Rest overview briefing
PDF
Ldap introduction (eng)
PPTX
OpenIDM - Flexible Provisioning Platform - April 28 Webinar
PPTX
Securing Your MongoDB Deployment
PPTX
Survey of restful web services frameworks
PPTX
Beyond the Basics 4 MongoDB Security and Authentication
PDF
Talent42 2014 Sam Wholley -
PPTX
Introduction to Node (15th May 2017)
Give a REST to your LDAP directory services
Open source identity management 20121106 - apache con eu
Spring Ldap
Directories for the REST of Us: REST to LDAP in OpenDJ 2.6
Update on the OpenDJ project
Databasecentricapisonthecloudusingplsqlandnodejscon3153oow2016 160922021655
Building Restful Applications Using Php
Mime Magic With Apache Tika
The RDBMS You Should Be Using
Webinar: MongoDB 2.6 New Security Features
Document Databases & RavenDB
Introduction to RavenDB
Rest overview briefing
Ldap introduction (eng)
OpenIDM - Flexible Provisioning Platform - April 28 Webinar
Securing Your MongoDB Deployment
Survey of restful web services frameworks
Beyond the Basics 4 MongoDB Security and Authentication
Talent42 2014 Sam Wholley -
Introduction to Node (15th May 2017)
Ad

Similar to Build your LDAP Web Interface with LinID Directory Manager (20)

PDF
RMLL 2013 - Build your LDAP management web interface with LinID Directory Man...
PDF
LDAP Applied (EuroOSCON 2005)
PDF
Ldap 121020013604-phpapp01
PPTX
Software Development with PHP & Laravel
PDF
[HKDUG] #20161210 - BarCamp Hong Kong 2016 - What's News in PHP?
PDF
Do you know what your Drupal is doing Observe it! (DrupalCon Prague 2022)
ODP
Asian Spirit 3 Day Dba On Ubl
PDF
How to Build a Custom Plugin in Rundeck
ODP
Knolx session
ODP
Drupal Theme Development - DrupalCon Chicago 2011
PPTX
Drupal 8 preview_slideshow
PDF
Mini-Training: Redis
PPT
Red Hat Certified engineer course
PDF
01 html-introduction
PPTX
Automating Your Workflow with Gulp.js - php[world] 2016
PDF
NLP Project Full Circle
PPTX
Créer et gérer une scratch org avec Visual Studio Code
PPTX
Holy PowerShell, BATman! - dogfood edition
PPTX
Power shell training
ODP
Best practices tekx
RMLL 2013 - Build your LDAP management web interface with LinID Directory Man...
LDAP Applied (EuroOSCON 2005)
Ldap 121020013604-phpapp01
Software Development with PHP & Laravel
[HKDUG] #20161210 - BarCamp Hong Kong 2016 - What's News in PHP?
Do you know what your Drupal is doing Observe it! (DrupalCon Prague 2022)
Asian Spirit 3 Day Dba On Ubl
How to Build a Custom Plugin in Rundeck
Knolx session
Drupal Theme Development - DrupalCon Chicago 2011
Drupal 8 preview_slideshow
Mini-Training: Redis
Red Hat Certified engineer course
01 html-introduction
Automating Your Workflow with Gulp.js - php[world] 2016
NLP Project Full Circle
Créer et gérer une scratch org avec Visual Studio Code
Holy PowerShell, BATman! - dogfood edition
Power shell training
Best practices tekx
Ad

More from LDAPCon (10)

PDF
Benchmarks on LDAP directories
PDF
Synchronize AD and OpenLDAP with LSC
PDF
LDAP Development Using Spring LDAP
PDF
What's New in OpenLDAP
PDF
What makes a LDAP server running fast ? An bit of insight about the various b...
PDF
Manage password policy in OpenLDAP
PDF
OpenLDAP configuration brought to Apache Directory Studio
PDF
Making Research "Social" using LDAP
PDF
eSCIMo - User Provisioning over Web
PDF
IAM to IRM: The Shift to Identity Relationship Management
Benchmarks on LDAP directories
Synchronize AD and OpenLDAP with LSC
LDAP Development Using Spring LDAP
What's New in OpenLDAP
What makes a LDAP server running fast ? An bit of insight about the various b...
Manage password policy in OpenLDAP
OpenLDAP configuration brought to Apache Directory Studio
Making Research "Social" using LDAP
eSCIMo - User Provisioning over Web
IAM to IRM: The Shift to Identity Relationship Management

Recently uploaded (20)

DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPTX
Spectroscopy.pptx food analysis technology
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PPTX
sap open course for s4hana steps from ECC to s4
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PPT
Teaching material agriculture food technology
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PPTX
Cloud computing and distributed systems.
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Empathic Computing: Creating Shared Understanding
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Encapsulation theory and applications.pdf
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
Machine Learning_overview_presentation.pptx
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
The AUB Centre for AI in Media Proposal.docx
Diabetes mellitus diagnosis method based random forest with bat algorithm
Spectroscopy.pptx food analysis technology
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
sap open course for s4hana steps from ECC to s4
Assigned Numbers - 2025 - Bluetooth® Document
Teaching material agriculture food technology
Review of recent advances in non-invasive hemoglobin estimation
gpt5_lecture_notes_comprehensive_20250812015547.pdf
Cloud computing and distributed systems.
Advanced methodologies resolving dimensionality complications for autism neur...
Empathic Computing: Creating Shared Understanding
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Encapsulation theory and applications.pdf
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
20250228 LYD VKU AI Blended-Learning.pptx
Machine Learning_overview_presentation.pptx
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...

Build your LDAP Web Interface with LinID Directory Manager

  • 1. Build your LDAP Web Interface with LinID Directory Manager Clément OUDOT
  • 2. Table of contents LDAP graphical interfaces LinID Directory Manager 2
  • 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 4
  • 6. 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 6
  • 8. 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 8
  • 9. 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 9
  • 11. 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 11
  • 12. 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 12
  • 14. 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 14
  • 15. 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> 15
  • 16. 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 16
  • 17. 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> 17
  • 18. 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 18
  • 20. 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 20
  • 23. Example: LinID OBM Manager 23
  • 26. Thanks Special thanks to: – LDAPCon! – Company LINAGORA – All LiniD developers Keep in touch: – Identica: @coudot – Twitter: @clementoudot @LinID_FOSS – IRC: KPTN #LinID@freenode – Web: http://linid.org 26