Bonnes ID ~ Clément Oudot

Aller au contenu | Aller au menu | Aller à la recherche

mercredi, avril 30 2014

Mon RT sur #mixit14

J'ai eu la chance de pouvoir assister avec mes collègues de @linagora aux deux jours de conférence MixIT, quatrième édition. Très orientée développeur, cette conférence reste toutefois accessible à des gens comme moi, qui ne savent pas quel camp choisir dans la guerre entre java 8 et scala, ou entre javascript et javascript (et qui finalement ne s'en portent pas plus mal).

Petit résumé rapide, personnel et non représentatif de ces deux journées de mélange des Intra-Techniques à Lyon, à la façon micro-blogging (désactivez AdBlock pour en profiter pleinement).

Et si ce n'était que le début ?

@ploum présente les nouvelles révolutions introduites par certaines start-ups et imagine leur impact sur notre société. Certains sont déjà visibles, comme les appels à l'international : qui utilise désormais le téléphone alors que des applications comme Skype sont là ? Mais au-delà ce des exemples concrets, @ploum se met à imaginer les révolutions possibles pour notre société, sur la monnaie, la démocratie. Comme dit Patrick, et si on se donnait rendrez-vous dans 10 ans ? On verra bien comment les développeurs auront conquis le monde.

Des petits pas vers le Continuous Delivery

Retour d'expérience du site lesfurets.com par @dbaeli et son collègue. Le site en GWT et est mis en production très régulièrement (62 mises en production depuis début janvier, donc en 4 mois). Chaque fonctionnalité est mise en production dès qu'elle est prête, pas de date de release prévue à l'avance, c'est la méthode Kanban (travail en flux).

Looking at the future of User Interfaces in Sci-Fi

@vtourraine nous parle des films et séries de science fiction qui ont influencé le dessin de nos interfaces graphiques actuelles. On retrouve en effet dans beaucoup de films des idées futuristes aujourd'hui bien concrètes : google glass, écrans tactiles, smart watch, etc. D'autres idées par contre resteront certainement dans les cartons, comme l'utilisation de ses bras pour déplacer des fenêtres, utilisé par Tom Cruise dans Minority Report : 10 minutes d'utilisation et on ressent déjà les premiers inconvénients physiques.

Lightning talks

Plusieurs conférences éclairs dont celle de @dgageot, sur son défi de bloguer une fois par jour.

Le lean stratup complet autour d'une petite mousse

@1petitemousse, c'est une petite boîte grenobloise qui a eu l'idée géniale de vendre des coffrets de dégustation de bière. Mais pour en arriver là, il a fallu passer par différentes étapes de construction du projet, et pour cela, ils ont utilisé la méthode Lean startup : hypothèse / mesure / conclusion.

La confiance dans un monde sous surveillance

L'actualité montre de nombreuses failles dans les systèmes de sécurité, le dernier en date étant heartbleed. Stephen présente la fonctionnement de PGP et son implémentation libre GnuPG. En particulier les différentes étapes permettant de faire signer sa clé, au travers généralement de signing party, dont l'objectif est de tisser une toile de confiance : le web of trust.

Fin du jour 1 et soirée

I want to be an efficient developer

@waxzce est CEO de Clever Cloud et nous explique la valeur d'un développeur, et comment le rendre plus efficace. La première règle, voire la seule règle, est que le développeur soit heureux. Un développeur heureux code mieux et plus efficacement. Et pour être heureux, le développeur doit pouvoir travailler où il veut, et comme il veut (choix des outils, déploiement simple, etc.) Les informations entre développeurs doivent être partagées, et donc écrites.

Le web est la plateforme (mobile)

Mozilla défend un Web libre et ouvert. Pour contrer les monopoles de Google et Apple sur le monde mobile, Mozilla propose de faire du Web la nouvelle plateforme mobile. Pour cela HTML 5 évolue afin de concurrencer les applications natives. Firefox héberger également une « marketplace » pour faciliter l'installation d'applications, mais les applications pourront être disponibles directement sur le web, sans intermédiaire. Pour les développeurs, utiliser HTML5 permettra d'avoir des applications qui tournent sur toutes les plate-formes.

La culture du programmeur

@morlhon nous donne son point de vue sur ce qu'est un programmeur.Software Craftmanship : mouvement pour la qualité du logiciel, état d'esprit. Le processus est aussi important que la technique, et vice-versa. Programmer, ça s'apprend. Pour recruter un programmeur, faites le programmer. Un programmeur doit apprendre tout le temps. William Asup : juge qui a géré le conflit entre Oracle et Google. Pas technique, il a pris une décision en regardant de plus près le code incriminé dans la bataille juridique (par exemple, la fonction rangeCheck).

Fin

Je n'ai pas parlé de toutes les sessions auxquelles j'ai assisté, mais il y avait beaucoup de sujets très intéressants.

L'organisation était au top, bravo à @mixit_lyon !

mardi, avril 1 2014

Rachat de LemonLDAP::NG par Facebook : une nouvelle opportunité pour la fédération des identités

La nouvelle fait grand bruit dans les couloirs d'Internet, et pour cause : le rachat du logiciel LemonLDAP::NG par Facebook est une étape importante pour la diffusion de la fédération d'identités au grand public.

La protection de la vie privée est notre priorité

C'est ce qu'à déclaré M.Z. lors de la conférence de presse donnée cette nuit sur le canal IRC #lemonldap-ng chez Freenode.

Avec l'adoption de SAML 2 et l'acceptation par Facebook du format de NameID persistant, les utilisateurs pourront lier leur compte Facebook à leur fournisseur d'identité sans communiquer leur identifiant principal

De ses dires, l'argument principal du rachat de ces technologies est la grande attention qu'on mis les concepteurs du protocole SAML à garantir la vie privée sur Internet, tout en garantissant une meilleure expérience utilisateur sur la navigation entre les différents services.

LemonLDAP::NG va être réécrit en Hack afin de faciliter l'intégration du module SP dans Facebook

Une API REST pour SAML

Que les développeurs se rassurent, Facebook promet des innovations, et en particulier la fourniture d'API REST pour SAML2 afin d'ajouter une couche de service au-dessus de SOAP et des échanges standards par GET et POST.

Un bouton Like permettra dans votre compte Facebook d'autoriser un ou plusieurs IDP, garantissant ainsi un haut niveau de sécurité.

La force de nos innovations sociales avec la robustesse de XML security transformera vos assertions SAML en véritables clés de connexions 2.0. Ce sera simple comme montrer votre anatomie sur Skype mais sans que la NSA puisse vous regarder.

Mon Service Public en ligne de mire

M.Z. profite de l'actualité politique pour signer un accord avec le site Mon Service Public, premier portail SAML 2 des citoyens français. Facebook deviendra bientôt l'un des service de l'administration électronique, au même titre que la CAF ou Pajemploi.

mercredi, février 5 2014

Sortie de LemonLDAP::NG 1.3.2

Enfin un article sur la version 1.3 de LemonLDAP::NG, il était temps!

Nouvelle version majeure

En effet, une nouvelle version majeure, la version 1.3, est sortie à l'automne 2013. Comme toute version majeure, elle apporte son lot de nouvelles fonctionnalités.

Autant t'y fier

LemonLDAP::NG est connu pour posséder de nombreuses méthodes d'authentification, comme LDAP, OpenID, CAS, SAML (voir la liste complète)

La version 1.3 apporte de nouvelles méthodes :

  • Active Directory : il est désormais possible de s'interfacer directement avec Active Directory, sans passer par une configuration avancée du module LDAP. La changement de mot de passe dans Active Directory est également supporté
  • Google : Utilisation du protocole OpenID pour s'authentifier sur Google
  • Facebook : Utilisation des API Facebook (OpenID et OAuth) pour s'authentifier sur Facebook
  • BrowserID : Le framework d'authentification, en JS, poussé par la fondation Mozilla
  • WebID : Authentification par certificat client, conçu par le W3C

Faste c'est géant

Le portail LemonLDAP::NG peut désormais être publié comme une application FastCGI, ce qui permet de meilleures performances, et le support d'autres serveurs Web, comme Nginx.

Le support du Handler sur Nginx est en cours d'étude, et devrait être disponible pour la prochaine version majeure.

Cape chat

Il est désormais possible d'activer un captcha sur le formulaire d'authentification et sur le formulaire de réinitialisation de mot de passe. Mais si vous êtes allergiques, ce n'est pas obligé.

CLI qui claque

Il existait déjà la possibilité de modifier la configuration en console via un éditeur de texte (commande lmConfigEditor), il est désormais possible de le faire en ligne de commande (CLI) : lemonldap-ng-cli.

Alias virtuels

Vous possédez de nombreux hôtes virtuels avec les même règles d'accès et en-têtes ? Vous pouvez à présent les nommer en alias d'un hôte principal dans LemonLDAP::NG, afin d'éviter la duplication de configuration.

Je n'aime pas lire

Si vous ne voulez pas lire tout ce qui est marqué au-dessus (oh non, c'est trop tard ?), vous pouvez regarder la conférence animée par David COUTADEUR en novembre dernier à la conférence OW2.

Deux versions mineures

Depuis la sortie la 1.3.0 en novembre 2013, deux versions mineures ont été publiées, dont la 1.3.2 aujourd'hui.

Ces versions fournissent essentiellement des correctifs sur les nouvelles fonctionnalités (captcha, CLI), mais également quelques améliorations sur SAML, le backend d'authentification DBI ou encore Multi (enchaînement de plusieurs modules d'authentification)

Futur

LINAGORA et la Gendarmerie Nationale collaborent pour travailler sur la prochaine version majeure. Les travaux actuels concernent principalement de la réécriture de code (Handler, Portail) afin de faciliter sa maintenance, mais il y aura également quelques changement visibles, comme un nouveau thème basé sur Bootstrap, donc compatible avec les périphériques mobiles.

samedi, septembre 14 2013

Sortie de LemonLDAP::NG 1.2.5

Fin août est sortie une nouvelle version mineure de la branche 1.2 de LemonLDAP::NG : la version 1.2.5.

Cette version apporte quelques correctifs intéressants :

  • Mise à jour des variables d'environnement dans la cage Safe à chaque requête, afin que les règles basées sur ces variables d'environnement soient bien évaluées
  • Application des règles d'affichage des thèmes sur chaque page : ces règles d'affichage sont une nouveauté de la version 1.2, et permettent d'afficher un thème en fonction de critères (adresse IP de provenance, etc.). Ce thème est désormais appliqué également sur la page d'erreur et sur la page de réinitialisation de mot de passe
  • Amélioration des performances de l'explorateur de session avec le module Apache::Session::Browseable. Ce module est un interface du module Apache::Session permettant de gérer des index.

La liste complète des changements est visible ici: http://jira.ow2.org/secure/ReleaseN...

N'oubliez donc pas de mettre votre installation à jour !

Cette version devrait être la dernière de la branche 1.2.5. L'équipe travaille désormais activement sur une version 1.3, avant d'entamer d'ici la fin de l'année un travail de fond sur l'amélioration du code des couches internes du logiciel.

jeudi, juillet 11 2013

La 4ème conférence internationale sur LDAP aura lieu cette année à Paris !

La LDAPCon est une conférence internationale sur LDAP et les sujets relatifs à la gestion des identités (approvisionnement, autorisation, fédération, etc.) Elle a lieu tous les deux ans dans différents pays, et cette année c'est en France !

ldapcon_2013_logo_line_date.png

La conférence se tient sur deux jours, les 18 et 19 novembre. Elle sera en anglais, événement international oblige.

L'entrée est payante (250€) mais un prix spécial est disponible jusqu'au 15 septembre. Dépêchez-vous, les places sont limitées ! Vous pouvez les acheter dès aujourd'hui sur EventBrite.

L'appel à conférences est ouvert et n'attend que votre contribution, n'hésitez pas à soumettre un sujet sur votre utilisation de la gestion des identités : http://www.ldapcon.org/#cfp

Enfin, la conférence cherche des sponsors, si cela intéresse votre organisation, transmettez-lui la présentation des formules de sponsoring de l'événement : http://ldapcon.org/ldapcon_2013_spo....

ldapcon_2013_logo_square_date.png

Toutes les informations sur la conférence sont disponibles sur le site web : http://ldapcon.org.

En espérant vous voir nombreux cet automne à Paris !

jeudi, mai 30 2013

OpenLDAP et l'overlay "constraint" : augmentez la qualité des données de votre annuaire

Enlarge your quality

Un annuaire LDAP n'est pas une base de données : les données d'un annuaire sont organisées de manière hiérarchique et respectent un schéma définissant les classes d'objet et attributs autorisés, en plus des syntaxes et règles de comparaison associées aux attributs.

Ces éléments permettent déjà d'assurer une certaine maîtrise de la qualité des données, par exemple :

  • Forcer la présence d'attributs dans une entrée en rendant ces attributs obligatoires pour la classe d'objet de l'entrée
  • Contrôler que la valeur saisie est un DN en définissant la syntaxe de l'attribut comme DistinguishedName

Toutefois, ces vérifications peuvent s'avérer insuffisantes et autoriser des valeurs incohérentes dans l'annuaire LDAP.

Un manager exemplaire

Prenons l'exemple de l'attribut manager : il permet de définir le supérieur hiérarchique d'une personne. Sa définition technique est la suivante :

olcAttributeTypes: ( 0.9.2342.19200300.100.1.10 NAME 'manager' DESC 'RFC127
 4: DN of manager' EQUALITY distinguishedNameMatch SYNTAX 1.3.6.1.4.1.1466.115
 .121.1.12 )

Comme les créateurs de LDAP font bien les choses, la syntaxe de cet attribut est un DN (1.3.6.1.4.1.1466.115.121.1.12), ce qui semble assez logique puisque l'on renseignera comme valeur le DN d'une autre entrée dans l'annuaire. Ainsi, impossible de définir la valeur suivante :

manager: Bill Gates

Par contre, cette valeur sera correcte :

manager: CN=Bill Gates,CN=users,DC=Microsoft,DC=com

Correcte syntaxiquement peut-être, mais fonctionnellement ?

En tant qu'utilisateurs émérites d'un annuaire LDAP, nous sommes en droit d'exiger plus de contrôle, par exemple :

  • Que l'entrée existe dans l'annuaire
  • Qu'elle fasse soit située dans la branche des utilisateurs
  • Qu'elle possède la classe d'objet inetOrgPerson
  • Qu'elle soit dans le même département ou structure
  • ...

Travaillons sous la contrainte

OpenLDAP possède un système de greffons nommé overlay. Chaque overlay permet l'activation d'une fonctionnalité, comme par exemple la gestion des groupes dynamiques (voir l'article dédié).

Pour notre problématique du jour, nous allons nous intéresser à l'overlay constraint. Cet overlay doit être compilé pour pouvoir être chargé, c'est le cas si vous utilisez les RPMs de LDAP Tool Box.

L'overlay constraint permet d'ajouter des contraintes sur les valeurs des attributs. Comme tout overlay, il n'agit que sur les opérations LDAP, et ne corrigera donc pas les données déjà enregistrées, cet overlay retournera par contre un message d'erreur si une opération LDAP modifie une valeur non compatible avec les règles déclarées (code d'erreur 19 - CONSTRAINT_VIOLATION).

Il existe cinq types de contraintes :

  • regex : comparaison de la valeur avec une expression régulière
  • size : taille maximale de la valeur (nombre de caractères)
  • count : nombre maximum de valeurs
  • uri : les valeurs doivent correspondre à une recherche LDAP interne
  • set : utilisation des capacités des sets des ACLs OpenLDAP

Le champ d'application de ces contraintes peut-être restreint à l'aide d'une recherche LDAP interne (clause restrict).

Les doigts dedans

Maintenant que les présentations sont faites, voyons comment implémenter nos contraintes.

La création de l'overlay doit se faire dans le backend cn=config. Vous pouvez utiliser la ligne de commande, un navigateur LDAP, ou (et je vous le conseille bien entendu), LinID OpenLDAP Manager.

En LDIF, cela donne par exemple :

dn: olcOverlay={3}constraint,olcDatabse={1}bdb,cn=config
objectClass: olcConfig
objectClass: olcConstraintConfig
objectClass: olcOverlayConfig
objectClass: top
olcOverlay: {3}constraint

Reste à définir ensuite les contraintes en tant que telles, dans l'attribut olcConstraintAttribute.

Commençons par le plus simple : la valeur de l'attribut manager doit correspondre à une entrée existante de l'annuaire :

olcConstraintAttribute: manager uri ldap:///dc=example,dc=com?entrydn?sub?(objectClass=*)

Si on souhaite que cette entrée soit explicitement un utilisateur (présence dans la branche ou=users, et avec la classe inetOrgPerson) :

olcConstraintAttribute: manager uri ldap:///ou=users,dc=example,dc=com?entrydn?sub?(objectClass=inetOrgPerson)

Peut-être qu'en fait cette contrainte ne doit être appliquée que pour les entrées de la branche ou=users, dans ce cas :

olcConstraintAttribute: manager uri ldap:///ou=users,dc=example,dc=com?entrydn?sub?(objectClass=inetOrgPerson) restrict "ldap:///ou=users,dc=example,dc=com??sub?(objectClass=*)"

Je pense que vous avez saisi le concept.

Set épatant

Avant de terminer, voyons une règle un peu plus complexe : il faut que le manager de l'utilisateur appartienne au même service que lui. En considérant que le service d'un utilisateur est défini dans son attribut departmentNumber, on utilisera alors la règle suivante :

olcConstraintAttribute: manager set "this/departmentNumber & this/manager/departmentNumber" restrict "ldap:///ou=users,dc=example,dc=com??sub?(objectClass=*)"

On mesure ici la puissance des sets d'OpenLDAP, créés initialement pour définir des ACLs complexes, et très utiles ici pour la définition de contraintes.

À très bientôt pour de nouveaux articles sur les configurations avancées d'OpenLDAP !

jeudi, mai 16 2013

Utiliser un thème alternatif jQuery UI avec Tapestry jQuery

Hello java world

Une fois n'est pas coutume, je quitte le monde Perl pour parler de nos développements sur LinID et en particulier sur notre framework java LinID Directory Manager.

linid_logo.png

Ce framework est basé sur Tapestry 5 et permet de créer des interfaces web de gestion d'annuaire LDAP sans réinventer la roue. En effet, il possède un framework d'autorisation permettant de modéliser les droits d'accès aux entrées et aux attributs à travers l'interface, un schéma enrichi permettant de décrire comment un attribut sera visualisé et édité, et un certain nombre de composants comme des listes de sélection basées sur des recherches LDAP, des afficheurs de DN, de dates, etc.

tapestry.png

Afin d'améliorer le rendu graphique de l'application, nous avons intégré jQuery et jQuery UI grâce au module tapestry5-jquery fourni par nos amis de Ganf of Tapestry 5 (GoT5).

Cet article explique comment utiliser ce module, et que faire quand le thème graphique fourni par défaut ne vous convient pas.

Au début c'est facile

Oui, tout est expliqué sur le site du module tapestry5-jquery. La première étape consiste à modifier son fichier pom.xml pour charger la dépendance :

<dependency>
<groupId>org.got5</groupId>
<artifactId>tapestry5-jquery</artifactId>
<version>3.3.5</version>
</dependency>

Et en gros, voilà, on a ensuite accès dans son code Tapestry aux widgets jQuery UI. Par exemple dans l'application de démonstration de LinID Directory Manager, on utilise le widget dialog pour la confirmation de la suppression d'une entrée (fichier ActionBar.tml) :

	<t:if t:test="canDelete">
		<li>
			<span   title="${message:general.delete-label}">
			
			<t:jquery.dialoglink t:id="deleteDialog" t:dialog="delete-${dnHash}">
			<img src="${asset:context:layout/images/delete.gif}" alt="${message:general.delete-label}" />
			<span class="menumessage">${message:general.delete-label}</span>
			</t:jquery.dialoglink>
			
			</span>
			
			<t:jquery.dialog 
				t:clientId="delete-${dnHash}"
				t:params="deleteDialogParams"
				title="${message:general.delete-label}">
			
			<p>${message:confirm.deleteuser}</p>
			<a t:type="actionlink" t:id="delete" t:context="entryDn" t:mixins="jquery/button" t:params="literal:{icons:{primary:'ui-icon-circle-check'}}">
			${message:general.confirm-label}
			</a>

			</t:jquery.dialog>
			
		</li>
	</t:if>

Thème pas ?

Le thème jQuery UI fourni par défaut est lightness, avec une dominante orange. Nous utilisons ce thème dans LinID OpenLDAP Manager (application web de configuration d'OpenLDAP), mais pour l'application de démonstration, le thème jQuery UI smoothness est plus adapté (voir le theme roller de jQuery UI).

Pour utiliser ce thème, il faut d'abord le télécharger sur le site de jQuery UI, en demandant un bundle pour la version legacy (1.9). En effet, tapestry5-jquery n'inclus que le thème lightness, et se base sur jQuery 1.8.24.

Une fois l'archive jQuery téléchargée, prendre le répertoire smoothness situé dans CSS et le copier dans la webapp LinID, par exemple dans le répertoire layout.

Ensuite, comme indiqué plus, il faut récupérer le fichier CSS pour la version 1.8.24. On peut utiliser pour cela Google CDN. Le lien pour télécharger le CSS: http://ajax.googleapis.com/ajax/lib....

On remplace les CSS de l'archive jQuery UI par celui téléchargé, et il reste à indiquer dans la webapp d'utiliser le nouveau thème. Pour cela dans le fichier AppModule.java, on ajoute dans contributeApplicationDefaults :

configuration.add(JQuerySymbolConstants.JQUERY_UI_DEFAULT_THEME, "${linid.jqueryui.path}");

Et on renseigne la variable linid.jqueryui.path dans le fichier configuration.properties :

# Jquery UI theme
#linid.jqueryui.path=classpath:org/got5/tapestry5/jquery/themes/ui-lightness/jquery-ui.css
linid.jqueryui.path=context:layout/smoothness/jquery-ui.css

Et voilà le résultat :

Affichage_des_informations_20130516-162951.png

vendredi, avril 26 2013

Sortie de LemonLDAP::NG 1.2.4

Une nouvelle version de LemonLDAP::NG est sortie le 23 avril 2013 : la version 1.2.4.

Cette version sera l'une des dernières de la branche 1.2, l'équipe travaillant désormais sur la version 1.3. Elle ne comporte que quelques correctifs :

  • Suppression de certains logs de debug dans le backend de configuration LDAP
  • Meilleure gestion des logs de l'interface du backend de configuration
  • Correction d'un bug empêchant l'utilisation du backend Multi avec un # dans le nom des modules
  • Correction des problèmes d'encodage dans les POD des modules Perl

Les notes de publications sont visibles ici, et cette nouvelle version est téléchargeable ici.

Pensez à mettre à jour votre installation !

lundi, avril 1 2013

LemonLDAP::NG version entreprise sera en Java

La communauté du logiciel libre LemonLDAP::NG a longtemps hésité avant de prendre cette décision, mais cette dernière semble être la meilleure option pour faciliter l'implantation de LemonLDAP::NG dans le monde des entreprises : LemonLDAP::NG Pro Special Edition sera en Java ou ne sera pas.

Un échange de bons procédés avec Oracle

La version entreprise de LemonLDAP::NG sera développée en partenariat avec Oracle, qui fournira des extensions dédiées dans sa JVM (Je Vous Méprise). Les avantages sont clairs pour le produit :

  • Formulaire d'enregistrement avant de télécharger le logiciel, permettant d'établir une cartographie réaliste des utilisateurs
  • Paquets RPM binaires avec validation de la licence avant l'installation
  • Console d'administration en Java natif (nécessite un serveur X)
  • Utilisation d'une base de données Oracle pour le stockage de la configuration et des sessions (implémentation de triggers propriétaires à la clé)

Ceci n'est qu'un juste de retour des choses envers la société Oracle qui par sa conduite exemplaire a permis la migration vers le logiciel libre de nombreuses sociétés.

Des contraintes d'exploitation connues des entreprises

Pour déployer la version entreprise, il faudra disposer d'un serveur d'application JEE avec support EJB 3.0. Cela permet aux entreprises ayant investi dans des piles logicielles Java complètes de les rentabiliser au maximum.

On note d'ailleurs que LemonLDAP::NG sera diffusé sous forme d'EAR en plus des RPMs Oracle afin de complexifier le processus d'installation, trop simple avec la version communautaire (apt-get install lemonldap-ng ou yum install lemonldap-ng). Ainsi, les professions de chefs de projet et architectes J2EE seront valorisées.

Afin de faire tourner cette nouvelle version, des actions manuelles sur la base de données et sur les paramètres bas-niveau du système d'exploitation seront nécessaires quotidiennement. Elles nécessiteront le passage par une interface graphique, empêchant ainsi toute automatisation, et donc le maintien d'un certain nombre d'emplois informatiques.

Relance du marché du matériel informatique

La version entreprise de LemonLDAP::NG sera basée sur les fonctionnalités de la version communautaire, avec les améliorations suivantes :

  • Formulaire d'authentification sous forme d'applet java
  • Utilisation de frames dans l'interface utilisateur
  • Support de IE 5.5 et Mozaic

Ces améliorations sont aussi accompagnées de contraintes matérielles supplémentaires. Ainsi pour le support de 100 utilisateurs, il faudra prévoir :

  • 16 Go de RAM
  • 4 cœurs
  • 60 Go d'espace disque

On déconseillera la virtualisation afin de permettre aux entreprises d'investir dans du matériel performant directement fabriqué en Asie par des informaticiens en devenir.

Support de Microsoft Windows et autres

Enfin ! se diront les lecteurs assidus de la presse informatique spécialisée dans les technologies peu novatrices. La version entreprise de LemonLDAP::NG étant en Java, elle sera directement disponible pour les plate-formes professionnelles et sécurisées comme Windows Server, AIX et Solaris.

Fonctionnalité spéciale pour nos amis des plates-formes Windows, une version ASP du Handler LemonLDAP::NG nativement disponible sous IIS. Le cookie ne sera néanmoins compatible que pour Internet Explorer. L'authentification Active Directory sera également améliorée, avec la fourniture d'une sur-couche d'une sur-couche d'une sur-couche de la fenêtre d'authentification des postes de travail Windows, compatible Vista.

Disponibilité en 2014

La première version entreprise sera disponible en 2014, avec une version majeure tous les deux ans. Une version mineure sortira tous les 6 mois, incluant les correctifs de sécurité nécessaires à l'exposition du service sur Internet. Les processus de mises à jour seront industrialisés afin d'occuper prestataires et sous-traitants sur la gestion des régressions fonctionnelles. Les API évolueront également en profondeur afin de laisser la part belle aux développeurs.

Malgré ces innovations de taille, la version communautaire continuera d'être maintenue, en Perl sous GNU/Linux, pour les amateurs et les bricoleurs. Nous espérons toutefois que vous adhérerez rapidement à la version entreprise afin de rentrer dans les rangs de l’homogénéité informatique.

lundi, mars 25 2013

LDAP Synchronization Connector en mode 2.0

Des nouvelles pas très fraîches...

En effet, la version 2.0 de LSC est sortie en juillet 2012, il y a plus de 8 mois. Je profite de la sortie la semaine dernière de la version 2.0.2 (deuxième version mineure de la branche 2.0) pour présenter ce projet très bien connu des administrateurs LDAP qui savent installer des logiciels java, donc globalement inconnu...

LSC et toi tu le sais pas ?

Commençons par le début, c'est quoi LSC ? LSC signifie LDAP Synchronization Connector, ce qui devient plus significatif sur son utilité : c'est un moteur de synchronisation LDAP.

LSC permet de synchroniser des fichiers plats (CSV), des bases de données et des annuaires, dans les deux sens. Il s'agit d'une vraie synchronisation avec une phase de comparaison des données sources et des données cibles afin de calculer les modifications à appliquer sur la destination.

LSC permet par exemple de synchroniser une base de données RH avec son annuaire d'entreprise, de synchroniser OpenLDAP et Active Directory (et avec quelques subtilités, en incluant les mots de passe), de générer des mots de passe Samba, d'importer des fichiers CSV dans un annuaire ou encore de pousser des données LDAP dans une bases de données.

LSC ne propose pas d'interface graphique, tout se fait comme au siècle dernier, à la main, mais rassurez-vous il s'agit bien d'une technologie très évoluée !

LSC strikes back

La nouvelle version n'est pas une version 2.0 de complaisance, les évolutions depuis la version 1.2 sont assez significatives. Les plus importantes sont les suivantes :

  • Modification du format de configuration (fini le fichier de properties java, place au XML)
  • Support de la synchronisation au fil de l'eau avec un annuaire compatible SyncRepl en source
  • Script de démarrage et d'arrêt
  • Nouveaux scripts de supervision avec gestion des données de performances (oh les beaux graphiques)
  • Bases de données en destination
  • Support de groovy

La configuration en XML peut sembler un choix discutable, mais elle a le mérite de clarifier le paramétrage du connecteur et de permettre une meilleure séparation des informations de connexion et de la définition des tâches de synchronisation.

De plus, un validateur permet facilement de s'assurer que la configuration est consistante avant de lancer le connecteur.

La documentation en ligne détaille toutes les balises qui peuvent être utilisées.

Test me if you can

Vous n'êtes pas convaincu ? D'avance vaincu ? Allons, le plus simple est de tester. LSC propose un tutoriel très simple permettant de synchroniser un fichier CSV dans un annuaire LDAP OpenDJ.

Et comme vous m'êtes sympathiques, voici ce tutoriel en français.

Première étape, télécharger LSC. Là c'est très simple, il suffit d'aller sur la page de téléchargement. On suppose que vous avez java en version 6 minimale installée sur votre poste ou votre serveur de test.

Installer LSC :

$ unzip lsc-core-2.0*-dist.zip
$ cd lsc-2.0*

Maintenant on se rend dans le dossier du tutoriel :

$ cd sample/hsqldb

Le fichier sample.csv contient les données que nous allons synchroniser dans l'annuaire. Si, si, vous pouvez vérifier.

Ces données doivent être importées dans la base de données interne (HSQLDB) :

$ bin/lsc-sample --import sample.csv

À présent, lancer l'annuaire de démonstration dans une autre console (la commande ne rend pas la main) :

$ bin/lsc-sample --start-ldap-server

Puis lancer la synchronisation depuis la première console :

$ bin/lsc-sample --run

Et voilà, les données sont synchronisées. Si vous ne me croyez pas, ouvrez un navigateur LDAP sur l'annuaire de test, supprimez des données et relancez la synchronisation.

Et pour d'autres tests, vous pouvez également modifier le fichier CSV d'entrée. Dans ce cas il faut penser à le réinsérer dans la base avec :

$ bin/lsc-sample --import sample.csv

Voilà, LSC fini

Vous savez désormais qu'il existe une solution de remplacement pour tous vos scripts maison en Perl, Ruby, ou pire PHP qui synchronisent vos données entre votre annuaire et le reste du monde. Je ne peux que vous inviter à rejoindre la communauté et nous aider à améliorer le produit ou la documentation !

mardi, février 19 2013

LemonLDAP::NG 1.2.3 : Soleil !

Le 8 février dernier est sortie la version 1.2.3 de LemonLDAP::NG. Prévue à l'origine pour n'être qu'une version corrective de la branche 1.2, de nombreux bugs et améliorations ont été inclus dans cette version, ce qui explique sa sortie tardive (6 mois après la version 1.2.2). Panorama de ces changements.

logo_lemonldap-ng.png

Les signatures SAML au cœur du cyclone

En décembre, une alerte de sécurité a été diffusée concernant le traitement des signatures SAML dans LemonLDAP::NG (CVE-2012-6426), problème corrigé dès le 18 décembre sur le SVN du projet.

Concrètement, la vérification des signatures était désactivée par défaut lors de la réception des messages et la fonction chargée de vérifier ensuite la signature n'était pas effective (mauvais appel de fonction de la librairie Lasso).

Si vous travaillez donc avec le protocole SAML dans une version inférieur à 1.2.3, la mise à jour est chaleureusement conseillée pour revenir à une situation au beau fixe.

Cette version apporte de plus certaines améliorations sur SAML, comme le support des NameID transient, un meilleur log des échanges SAML et la compatibilité de l'IDP SAML avec une authentification CAS.

Soleil Orage Averse Pluie

Le support de SOAP a été amélioré :

Le ciel est tombé sur l'en-tête X-Forwarded-For

Jusqu'ici, la gestion de l'en-tête X-Forwarded-For n'était pas évident. Cette en-tête est gérée par les proxys et permet de connaître l'adresse IP d'origine d'une requête HTTP, donc l'IP du client.

Avant la version 1.2.1, l'activation de la gestion de cette en-tête inscrivait l'IP dans une variable spécifique de la session ($xForwardedForIpAddr), laissant l'IP standard dans la variable $ipAddr. Hors, même s'il est possible d'utiliser la variable $xForwardedForIpAddr dans des règles, dans d'autres endroits du code, $ipAddr est forcément utilisé (par exemple dans les logs, ou dans les modèles HTML des mails envoyés).

Cette gestion a été revue, désormais si l'option X-Forwarded-For est activée dans LemonLDAP::NG, alors la variable de session $ipAddr prendra cette valeur, ce qui s'appliquera donc à toutes les fonctions utilisant cette variable.

De plus, depuis la version 1.2.3, pour éviter que la valeur de cette en-tête soit modifiée manuellement par les utilisateurs, une règle de sécurité est apparue pour n'accepter cette en-tête que depuis certaines IP (en l'occurrence les adresses IP des proxys s'ils existent).

Accalmie sur les rejeux de formulaire

Les rejeux de formulaire sont une fonctionnalité assez marginale, permettant de transformer des requêtes GET en POST, utilisant comme données POST des informations de la session de l'utilisateur. En utilisant la fonction de sauvegarde du mot de passe en session, cela permet donc de faire du SSO sur des applications mal écrites propriétaires.

Plusieurs bugs ont été corrigés pour rendre cette fonction plus opérationnelle :

Toutefois, cette fonctionnalité reste assez peu avancée, et il est préférable d'utiliser les modes standards de SSO (en-tête HTTP, CAS, SAML, ...).

Séance d'UV pour le portail

Le portail est la partie visible de LemonLDAP::NG, là où les utilisateurs s'authentifient, changent leur mot de passe et voient les applications auxquelles ils sont accès.

Comme le physique c'est important, la version 1.2.3 apporte deux nouveautés dans ce domaine :

D'hiver

D'autres améliorations diverses ont été faites :

Après la pluie

À présent que vous êtes convaincus qu'il faut absolument installer cette nouvelle version, courrez la télécharger, ou mettez à jour via vos distributions préférées !

L'équipe du projet LemonLDAP::NG travaille déjà sur la version 1.3. N'hésitez pas à venir nous prêter main forte !

lundi, janvier 7 2013

Astuce OpenLDAP : Des groupes dynamiques ? Jamais sans tri des valeurs !

Dynamique de groupe

Les groupes dynamiques en LDAP sont une fonctionnalité très intéressante, permettant de lister les membres d'un groupe par rapport à un filtre LDAP, ce qui évite de maintenir la liste des membres de manière statique.

Par exemple :

dn: cn=test,ou=groups,dc=example,dc=com
objectClass: groupOfURLs
objectClass: top
cn: test
memberURL: ldap:///ou=users,dc=example,dc=com??one?(description=*test*)

Ce groupe contiendra toutes les entrées de la branche ou=users,dc=example,dc=com possédant test dans l'attribut description.

Au vert lait

Dans OpenLDAP, les groupes dynamiques ne sont pas activés par défaut, il faut pour les utiliser charger l'overlay dynlist. Et pour utiliser la classe d'objet groupOfURLs, il faut également charger un schéma.

Cela peut-être fait simplement dans cn=config avec le LDIF suivant :

dn: cn=dyngroup,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: dyngroup
olcObjectIdentifier: {0}NetscapeRoot 2.16.840.1.113730
olcObjectIdentifier: {1}NetscapeLDAP NetscapeRoot:3
olcObjectIdentifier: {2}NetscapeLDAPattributeType NetscapeLDAP:1
olcObjectIdentifier: {3}NetscapeLDAPobjectClass NetscapeLDAP:2
olcObjectIdentifier: {4}OpenLDAPExp11 1.3.6.1.4.1.4203.666.11
olcObjectIdentifier: {5}DynGroupBase OpenLDAPExp11:8
olcObjectIdentifier: {6}DynGroupAttr DynGroupBase:1
olcObjectIdentifier: {7}DynGroupOC DynGroupBase:2
olcAttributeTypes: {0}( NetscapeLDAPattributeType:198 NAME 'memberURL' DESC 'I
 dentifies an URL associated with each member of a group. Any type of labeled 
 URL can be used.' SUP labeledURI )
olcAttributeTypes: {1}( DynGroupAttr:1 NAME 'dgIdentity' DESC 'Identity to use
  when processing the memberURL' SUP distinguishedName SINGLE-VALUE )
olcAttributeTypes: {2}( DynGroupAttr:2 NAME 'dgAuthz' DESC 'Optional authoriza
 tion rules that determine who is allowed to assume the dgIdentity' EQUALITY a
 uthzMatch SYNTAX 1.3.6.1.4.1.4203.666.2.7 X-ORDERED 'VALUES' )
olcObjectClasses: {0}( NetscapeLDAPobjectClass:33 NAME 'groupOfURLs' SUP top S
 TRUCTURAL MUST cn MAY ( memberURL $ businessCategory $ description $ o $ ou $
  owner $ seeAlso ) )
olcObjectClasses: {1}( DynGroupOC:1 NAME 'dgIdentityAux' SUP top AUXILIARY MAY
  ( dgIdentity $ dgAuthz ) )

dn: olcOverlay=dynlist,olcDatabase={1}bdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcDynamicList
olcOverlay: dynlist
olcDlAttrSet: {0}groupOfURLs memberURL uniqueMember

Comme vous êtes des lecteurs avisés, vous aurez noté qu'on peut utiliser d'autres classes d'objet que groupOfURLs, puisque cela dépend de la configuration de l'overlay dynlist (attribut olcDlAttrSet). Pour plus de détails, voir la page de manuel de l'overlay dynlist (man slapo-dynlist).

Tri sélectif

Cet overlay fonctionne bien sur des petits volumes mais les performances s'écroulent dès le le groupe dynamique doit contenir plusieurs milliers d'utilisateurs.

Le secret réside dans l'option sortvals (olcSortVals dans cn=config) qui active le tri des valeurs sur certains attributs. D'après le manuel :

       olcSortVals <attr> [...]
              Specify  a  list  of  multi-valued attributes whose values will always be maintained in sorted order. Using
              this option will allow Modify, Compare, and filter evaluations on these attributes  to  be  performed  more
              efficiently.  The  resulting  sort  order  depends on the attributes' syntax and matching rules and may not
              correspond to lexical order or any other recognizable order.  This setting is only allowed in the  frontend
              entry.

Dans notre cas, nous allons trier les valeurs de l'attribut uniqueMember :

dn: olcDatabase={-1}frontend,cn=config
changetype: modify
add: olcSortVals
olcSortVals: uniqueMember

Dès l'application de ce paramètre, l'affichage de groupes dynamiques de plusieurs milliers d'utilisateurs ne prendra que quelques secondes !

mardi, septembre 25 2012

Sortie de LemonLDAP::NG 1.2.2

Une nouvelle version mineure de LemonLDAP::NG est sortie la semaine dernière, c'est l'occasion pour présenter les évolutions qui on eu lieu depuis la sortie de la version majeure 1.2 en juin dernier.

Une première version mineure (1.2.1) a été publiée en juillet, avec les changements principaux suivants :

  • Correction d'un bug critique empêchant les groupes LDAP d'être enregistrés en session.
  • Correction de l'inclusion des modèles HTML pour l'envoi des mails.
  • Modification de la gestion de l'IP "X-Forwarded-For" : auparavant, la valeur de l'en-tête était stockée dans une clé de session séparée, désormais, si l'option "Utiliser X-Forwarded-For" est activée, la valeur du champ IP de la session est remplacée par la valeur de l'en-tête. Cela permet une meilleure prise en compte de cette option lors de la navigation dans l'explorateur de sessions, et pour l'affichage de l'historique de connexion.
  • Ajout compatibilité CSS3 dans les modèles graphiques.

La seconde version mineure (1.2.2) sortie il y a quelques jours apporte les changements suivants :

  • Meilleure gestion du cross domain avec les cookies sécurisés
  • Plusieurs correctifs sur le backend Multi, permettant son utilisation par SOAP, et le chainage de plusieurs annuaires LDAP utilisant des paramètres de connexion différents
  • Nouveau web service pour supprimer des notifications

La liste complète des changements est accessible sur la forge du projet :

Il est donc vivement recommandé de mettre à jour votre version de LemonLDAP::NG si ce n'est pas déjà fait.

mercredi, juin 20 2012

Sortie de LemonLDAP::NG 1.2

Cette semaine est sortie une nouvelle version majeure de LemonLDAP::NG : la version 1.2.0. Annoncée et attendue depuis plusieurs mois (voir la présentation donnée au FOSDEM), elle est enfin disponible et propose de nombreuses améliorations.

logo_lemonldap-ng.png

LemonLDAP::NG est un logiciel de WebSSO, contrôle d'accès et fédération des identités. Ses principales fonctionnalités sont :

  • Portail d'application, affichant dynamiquement les applications autorisées
  • Réinitialisation du mot de passe par un challenge par mail
  • Interface d'administration Web
  • Explorateur de sessions
  • Notifications
  • Support de nombreux moyens d'authentifications (LDAP, SQL, certificat SSL, Kerberos, etc.)
  • Support des protocoles CAS, OpenID et SAML
  • Propagation de l'identité par en-têtes HTTP, variables d'environnement ou rejeu de formulaires
  • Identification des URLs à protéger par expressions régulières

On met le paquet

Tout d'abord avant d'entrer dans le détail des nouveautés, on peut noter que LemonLDAP::NG est désormais empaqueté pour les distributions suivantes :

  • Debian Squeeze
  • RHEL/CentOS 5
  • RHEL/CentOS 6
  • Mageia Caudron

Rien de plus simple donc pour installer ou mettre à jour LemonLDAP::NG que d'utiliser les outils standards des distributions comme apt-get, yum ou urpmi.

Une fonction historique

L'une des évolutions majeures de la 1.2 est l'historique des connexions. Cet historique permet de stocker les dates des dernières authentifications réussies et échouées. La raison de l'échec est également conservée.

Ces informations sont d'abord visibles par les administrateurs dans l'explorateur de sessions, car elles sont chargées lors de l'ouverture de la session SSO depuis la session persistante de l'utilisateur.

Il est ensuite possible de configurer LemonLDAP::NG pour présenter ces informations à l'utilisateur :

  • Par un onglet dédié dans le portail des applications
  • Par une case à cocher affichant ces informations avant redirection vers l'application protégée

Authentication_portal_1340022292201.png

Le nombre d'authentifications conservées dans l'historique est lui aussi paramétrable, pour les authentifications réussies comme pour les authentifications échouées.

Docteur qui ?

La question qui revient le plus souvent de la part des personnes installant pour la première fois LemonLDAP::NG est : "Où sont les utilisateurs ?"

doctor_who_logo.jpg

LemonLDAP::NG n'est pas un annuaire LDAP ou un référentiel autre permettant de créer, modifier ou supprimer des comptes utilisateurs. Il s'appuie au contraire sur des référentiels existants dans l'entreprise (LDAP, base de données) ou externes via des protocoles de fédération d'identités (OpenID, SAML, ...)

Seulement il assez facile de comprendre la frustration ressentie lorsque l'on installe LemonLDAP::NG et qu'il faille créer soi-même un référentiel d'identités et le configurer avant de pouvoir tester le WebSSO.

Relaxez-vous, la nouvelle version de LemonLDAP::NG arrive avec un module "Démonstration" configuré par défaut, qui fournit des comptes utilisateurs factices permettant d'ouvrir une session et d'accéder aux applications de test. On peut ainsi installer et démarrer LemonLDAP::NG en quelques minutes.

NUP_102225_0127.jpg

Les comptes de test sont issus de la série Doctor Who :

  • Rose Tyler: rtyler/rtyler
  • Mickey Smith : msmith/msmith
  • Doctor Who: dwho/dwho

À noter que l'utilisateur "dwho" est le seul à avoir accès à l'interface d'administration et l'explorateur de sessions dans la configuration initiale.

Ne quittez pas, un agent va vous répondre

Des applications en maintenance, ça arrive même aux meilleurs. Si certaines organisations arrivent par des architectures en haute-disponibilité à éviter toute coupure de service lors de la mise à jour d'une application, ce n'est pas le cas pour tout le monde, et surtout parfois impossible pour certaines applications (schéma de base de données à modifier par exemple).

Dans ce cas, au lieu que les utilisateurs accédant à l'application se retrouvent avec des messages d'erreurs exotiques (et même s'ils ont été prévus 10 fois par mail qu'une opération de maintenance allait avoir lieu !), il est préférable de les rediriger vers une page dédiée expliquant que l'application est en maintenance.

Cette opération peut se faire en modifiant les configurations Apache, sur un ou plusieurs serveurs en fonction du déploiement de l'application, mais c'est souvent fastidieux et source d'erreurs.

La nouvelle version de LemonLDAP::NG propose désormais un mode maintenance qui permet de désactiver temporairement l'accès à une application. Il suffit d'activer cette option depuis l'interface d'administration, et automatiquement les utilisateurs sont redirigés vers une page d'erreur spécifique lorsqu'ils tentent de joindre l'application. La configuration de LemonLDAP::NG étant propagée à tous les nœuds des applications, ce mode s'applique directement sur ces nœuds, sans intervention nécessaire sur la configuration Apache.

De la flotte au menu

Petite nouveauté également, la possibilité d'ajouter un menu flottant sur les applications protégées. Ce menu est un module chargé dans la configuration Apache qui ajoute des éléments au DOM de la page à la volée. Il est donc non-intrusif sur les applications.

LemonLDAP__NG_sample_protected_application_1340022329086.png

Ce module est pour l'instant très simple et ne propose que 2 liens : retour à la page du portail ou déconnexion. Il est par contre facile de se créer son propre module en copiant le module d'origine.

Ave Radius

L'authentification Radius vient s'ajouter aux nombreux autres moyens d'authentification proposés par LemonLDAP::NG.

Un des intérêts de Radius est d'être compatible avec Google Authenticator, qui propose une méthode de double authentification : mot de passe et OTP (One Time Password). L'OTP est envoyé sur le téléphone mobile et permet donc de s'assurer que l'utilisateur est celui qui possède le mot de passe et le téléphone mobile associé au compte.

La communauté de l'année

Cette nouvelle version est le fruit d'un travail communautaire important, avec de nombreux bugs et patchs rapportés par les utilisateurs avancés de la solution :

  • Dominique Fournier
  • Emmanuel Lesouef
  • Erwan Le Gall
  • Gaultier Hubert
  • Quentin Jaboeuf
  • Mathieu Parent
  • Romain Vrignaud
  • Sébastien Bahloul
  • ulkesh

L'équipe principale du projet s'est également beaucoup investie, en particulier François-Xavier Deltombe qui a rejoint le projet l'année dernière. Merci donc à lui et aux autres membres de l'équipe : Xavier Guimard et Thomas Chemineau.

Enfin, petit clin d'œil à Sandro Cazzaniga qui a rejoint Linagora pour la période estivale et qui a empaqueté LemonLDAP::NG pour Mageia.

Speed dating

Pour venir découvrir en direct cette nouvelle version, rendez-vous aux prochains salons du libre :

Pour les malchanceux qui ne pourront venir, le lot de consolation :

mardi, juin 12 2012

Mémoriser la dernière authentification dans OpenLDAP

Big Brother is watching you

Bien, pour débuter cet article, la première question qui se pose est : pourquoi mémoriser la date de dernière authentification ?

Une des raisons pourrait être de tracer l'activité des utilisateurs, pour être certain qu'ils se connectent au système et qu'ils travaillent... Mais le vrai intérêt est plutôt inverse : cette date permet d'identifier les comptes qui sont obsolètes dans l'annuaire, par exemple qui n'ont pas été utilisés pour s'authentifier depuis plusieurs mois.

Pas si simple

On pourrait croire que cette information est simple à récupérer, surtout dans OpenLDAP, l'annuaire LDAP de référence.

Jusqu'à récemment, les seules solutions étaient d'analyser les logs systèmes (avec un niveau de log OpenLDAP à 256), ou de mettre en place l'overlay accesslog, qui stocke dans une base LDAP les opérations effectuées sur l'annuaire. Cette base devait alors être analysée pour retrouver la date de dernière authentification (opération BIND).

Les contributions, c'est bon

OpenLDAP est avant tout un logiciel libre avec une communauté active. Il existe dans le code source d'OpenLDAP un répertoire dédié aux contributions : ces modules ne sont pas maintenus par l'équipe principale du projet, mais assez matures pour être distribués avec le logiciel. Toutefois, cela signifie que si vous ne compilez pas explicitement ces modules, il ne seront pas disponibles pour votre installation OpenLDAP.

Parmi ces modules contribués, il y a l'overlay lastbind. Cet overlay a été écrit par Jonathan Clarke, ancien salarié de Linagora et l'un des fondateurs de la société Normation. Cet overlay permet de stocker dans l'attribut authTimestamp la date dernière authentification.

Assez parlé

Il est temps de passer aux travaux pratiques. Certains modules contribués sont désormais disponibles dans les RPMs fournis par le projet LDAP Tool Box. Le paquet en question s'appelle openldap-ltb-contrib-overlays et peut être téléchargé ici.

Une fois installé, on peu alors modifier la configuration d'OpenLDAP pour charger cet overlay :

# vi /usr/local/openldap/etc/openldap/slapd.conf

Tout d'abord, modifier le répertoire de chargement des modules, et charger le module :

modulepath      /usr/local/openldap/lib:/usr/local/openldap/libexec/openldap
moduleload      lastbind.so

On notera qu'on peut indiquer plusieurs répertoires pour le chargement des modules. Dans notre cas, le premier sert à charger le module password policy checker, et le second pour l'overlay lastbind.

Ensuite, il reste à instancier l'overlay au niveau de la base LDAP souhaitée :

overlay lastbind

Et c'est tout ! Pour les plus assidus, on pourra ajouter un paramètre de configuration, permettant de ne pas mettre à jour la date à chaque authentification, mais de limiter la précision à un certain nombre de secondes :

lastbind-precision 60

Bien entendu, l'overlay peut aussi être configuré par la branche cn=config.

Initialisation

Une fois l'overlay chargé et OpenLDAP redémarré, pour toute nouvelle authentification, une date sera stockée dans l'attribut authTimestamp, par exemple :

authtimestamp: 20120612073806Z

Seulement, il s'agit d'un attribut opérationnel, et il n'est donc pas possible de le modifier, ou de l'ajouter aux entrées qui n'en possèdent pas encore.

Enfin, rien n'est jamais impossible... OpenLDAP a implémenté le contrôle relax, qui permet d'effectuer des opérations d'administration sur les données, en particulier modifier des attributs opérationnels.

Par exemple, on peut créer le fichier LDIF suivant :

dn: uid=coudot,ou=users,dc=example,dc=com
changetype: modify
replace: authtimestamp
authtimestamp: 20120511144318Z

Et importer ce fichier dans l'annuaire :

$ ldapmodify -D cn=manager,dc=example,dc=com -W -e relax -f authtimestamp.ldif

Finalement, c'est simple, non ?

vendredi, mars 16 2012

Configuration Apache : du bon usage de RedirectMatch et de mod_proxy

La configuration d'un serveur HTTP d'Apache est une source d'occupation sans limite tellement les possibilités d'utilisation sont nombreuses. Ma casquette de développeur et intégrateur LemonLDAP::NG m'amène souvent à les explorer.

Dernière découverte en date, l'utilisation conjointe de RedirectMatch et mod_proxy.

RedirectMatch

La clause RedirectMatch permet de faire des redirections basées sur une expression régulière. Le cas d'utilisation le plus classique quand on fait un proxy vers une application hébergée dans un serveur JEE est de rediriger la racine / vers le répertoire de l'application /appli/ :

RedirectMatch ^/$ /appli/

mod_proxy

Le module mod_proxy permet de passer les requêtes à un autre serveur, au hasard un serveur JEE :

ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/

Cohabitation

Si vous mettez les deux configurations présentées ci-dessus ensemble, la redirection vers /appli/ ne fonctionnera plus. Alors qu'elle fonctionne sans mod_proxy.

Et c'est parti pour quelques heures de doute sur la condition humaine, jusqu'à ce qu'une recherche sur internet vous amène sur cet article.

La clé du mystère est que quand ProxyPass est configuré sur "/", cette clause prévaut sur les autres, et donc la requête est transmise avant que la redirection ne soit effectuée.

La solution est donc de limiter le champ d'action du proxy :

RedirectMatch ^/$ /appli/
ProxyPass /appli/ http://localhost:8080/appli/
ProxyPassReverse /appli/ http://localhost:8080/appli/

En espérant que cela vous fera gagner du temps ;)

vendredi, février 10 2012

Actualités de l'activité LinID, la gestion des identités de LINAGORA

LinID

Le sigle LinID est apparu il y a quelques années pour agréger l'activité de LINAGORA dans le domaine de la gestion des identités autour d'une marque s'inscrivant dans la lignée des autres produits (LinShare, LinSign, LinPKI, etc.).

linid_logo.png

LinID, c'est aussi et avant tout une suite logicielle. Cette suite regroupe des logiciels sur lesquels les membres de l'équipe sont fortement impliqués, ainsi que des logiciels développés par LINAGORA :

  • LinID Directory Server : Annuaire OpenLDAP, avec les outils du projet LDAP Tool Box comme le script d'initialisation, le packaging RPM.
  • LinID Directory Manager : Framework web java bâti au-dessus de Spring et Tapestry 5 permettant de créer des interfaces de gestion des objets LDAP
  • LinID OpenLDAP Manager : Console web de configuration OpenLDAP, utilisant le framework LinID Directory Manager
  • LinID Access Manager : WebSSO LemonLDAP::NG permettant le contrôle d'accès aux applications Web et la fédération d'identités (SAML 2.0, OpenID)
  • LinID Provisionning Manager : Moteur de connecteurs LDAP Synchronization Connector permettant la synchronisation d'annuaires LDAP, de bases de données

LinID Directory Manager

LinID Directory Manager est un framework Java qui permet de créer des interfaces de gestion d'annuaire LDAP. Ces interfaces peuvent être très différentes, pour certaines très techniques (gestion de règles sudo, authentification unifiée PAM, etc.) ou d'autres très fonctionnelles (pages blanches, pages jaunes, modification de ses coordonnées personnelles, etc.)

display_user_anonymous.png

LinID Directory Manager est publié sous AGPLv3.

La version 1.0 du framework est sortie en janvier, fruit de plusieurs années de développement. Pour les connaisseurs, c'est la reprise du projet InterLDAP, enrichi des évolutions réalisées dans le cadre du projet de recherche FederID.

Pour avoir une idée des possibilités offertes par le framework, une application de démonstration est fournie. Après téléchargement et extraction, il suffit de cette commande pour lancer l'application sur votre poste :

mvn -Popends jetty:run

Plus de détails sont fournis sur le wiki du projet.

Si cette application vous a convaincu, l'étape suivante est de créer votre propre application, en démarrant avec les artefacts maven du framework !

Nous développons actuellement la version 2.0 qui contient la migration vers Tapestry 5.3 (la version 1.0 de LinID DM est basée sur Tapestry 5.1). Cette version peut-être testée dès maintenant en utilisant les artefacts déployés dans notre dépôt nexus ou directement en utilisant notre dépôt subversion.

LinID OpenLDAP Manager

Autre exemple d'utilisation du framework LinID Directory Manager, LinID OpenLDAP Manager est une application web de gestion de la configuration OpenLDAP. En effet, depuis la version 2.4, OpenLDAP peut stocker sa configuration dans un arbre LDAP (cn=config) et la modification peut donc être éditée par un client LDAP.

LinID OpenLDAP Manager propose donc des interfaces de gestion des backends, des overlays et du schéma :

linid-om-home.png

LinID OpenLDAP Manager est publié sous AGPLv3.

La version 0.6 de LinID OpenLDAP Manager est sortie le 10 février (voir l'annonce de la publication). Pour la tester, téléchargez, désarchivez puis :

./linid-om.sh start

La documentation complète est sur le wiki du projet.

Autres

Les autres produits sur lesquels nous travaillons sont également très actifs !

Charge

Charge est un logiciel utilisé pour des tests de performances d'annuaires LDAP. Développé en C avec les bibliothèques OpenLDAP, il permet d'injecter un très grand nombre de requêtes LDAP pour tester la montée en charge des annuaires.

La version 1.3 est sortie début janvier, amenant son lot de nouveautés, en particulier :

  • Support du SSL
  • Packaging RPM (CentOS 5 et CentOS 6)

LDAP Tool Box

Le projet LDAP Tool Box regroupe divers outils. En particulier, il fournit des RPMs d'OpenLDAP (CentOS 5 et CentOS 6) pour les versions les plus récentes publiées par le communauté. Un des autres outils phare est l'interface de changement et de réinitialisation de mot de passe appelée Self Service Password.

Pour plus de détails, consultez le site du projet ou parcourez les articles de ce blog.

LDAP Synchronization Connector

Une première version candidate de LSC 2.0 est sortie, la version stable devrait être publiée prochainement. Cette nouvelle version tranche véritablement avec les versions 1 :

  • Configuration en XML
  • Interface d'administration en java (Tapestry 5)
  • Connexion persistent sur OpenLDAP pour propagation en temps réel des mises à jour
  • Support des bases de données en destination

Pour plus de détails, consultez le site du projet.

LemonLDAP::NG

La version 1.2 présentée au FOSDEM est en préparation, comme cela est indiqué dans le précédent article.

Pour plus de détails, consultez le site du projet ou parcourez les articles de ce blog.

On recrute !

Toutes ces actualités montrent à quel point le sujet de la gestion d'identité Open Source est active. Si ce domaine vous intéresse, plusieurs annonces ont été publiées sur notre site pour des postes à pourvoir sur Paris ou sur Lyon :

J'attends de vos nouvelles !

mardi, février 7 2012

Conférence LemonLDAP::NG au FOSDEM 2012

Comme chaque année, le FOSDEM a lieu à Bruxelles et rassemble de nombreux développeurs de logiciels libres venant de différents pays.

Cette année, pour la première fois, j'ai eu le plaisir de pouvoir présenter LemonLDAP::NG dans la devroom Perl :

Cette présentation a été l'occasion d'annoncer quelques nouveautés qui apparaîtront dans la prochaine version (1.2.0) sur laquelle nous travaillons activement :

  • Historique des connexions : les connexions réussies ou échouées sont conservées et peuvent être affichée dans le menu du portail. Cela permettra en particulier de vérifier quand son compte a été utilisé.
  • Module d'authentification Radius : contribué par des utilisateurs avancés du logiciel, ce module est utile entre autres pour l'utilisation de l'authentification multi-facteurs de Google (voir le blog de Romain Vrignaud)
  • Règles d'ouverture de session personnalisées : on pourra paramétrer des règles refusant l'ouverture d'une session avec l'affichage d'un message contextuel

Cette nouvelle version apportera bien entendu son lot de correctifs et d'autres évolutions, elle devrait sortir d'ici le mois de mars. En attendant, vous pouvez retrouver les diapositives de la conférence du FOSDEM.

jeudi, décembre 22 2011

Sortie de Self Service Password 0.7

Présentation

Self Service Password est une interface web très simple permettant à un utilisateur de changer son mot de passe dans un annuaire LDAP. Cet annuaire peut être Active Directory ou un annuaire LDAP conforme au standard.

Le logiciel est en PHP, sous licence GPL.

recaptcha.png

Fonctionnalités principales

  • Mode Samba (pour les mots de passe NT et LM)
  • Mode Active directory (pour les mots de passe AD), avec déverrouillage et réinitialisation à la prochaine connexion
  • Mode Shadow account
  • Politique des mots de passe locale :
    • Taille minimale/maximale
    • Caractères interdits
    • Compteurs pour les majuscules, minuscules, chiffres et caractères spéciaux
    • Non réutilisation du mot de passe actuel
    • Complexité (nombre de classes de caractères différentes)
  • Messages d'aide
  • Réinitialisation par questions/réponses
  • Réinitialisation par un challenge par mail
  • reCAPTCHA (Google API)
  • Notification par mail après changement de mot de passe

L'application est désormais disponible en 8 langues : anglais, français, allemand, espagnol, brésilien, néerlandais, catalan et polonais !

Quelques liens

vendredi, décembre 2 2011

Sortie des RPMs OpenLDAP 2.4.28 sur LDAP Tool Box Project

OpenLDAPlogo.png

La version 2.4.28 d'OpenLDAP est sortie en début de semaine, et les RPMs du projet LDAP Tool Box ont suivi peu après.

Ces RPMs apportent les fonctionnalités suivantes:

  • Backend BDB, HDB, MDB et LDAP
  • Tous les overlays officiels
  • Certains overlays "contrib" (lastbind et smbk5pwd)
  • Support SSL (via OpenSSL)
  • Support de la délégation SASL
  • Support SLAPI
  • Autoconfiguration de la rotation des logs
  • Script d'initialisation en version 1.3
  • Module pwdChecker pour la politique des mots de passe

Le script d'initialisation propose de nombreuses fonctionnalités, comme la sauvegarde et la restauration des données. Ces simples commandes suffisent:

# service slapd backup
# service slapd restore

Il permet également de démarrer simplement OpenLDAP en mode debug:

# service slapd debug

Ce script est bien entendu compatible avec cn=config, et permettra dans sa prochaine version la sauvegarde et restauration de la configuration :

# service slapd backupconfig
# service slapd restoreconfig

Cette fonctionnalité sera fournie dans la prochaine version (1.4).

Pour télécharger tout ça, rendez-vous sur le site du projet LDAP Tool Box : http://ltb-project.org

- page 1 de 4