Rares sont les initiatives open source dans le domaine des outils de provisioning. Le framework ICF, initiative open source, mérite que nous y apportions toute notre attention. Simple, souple et efficace, ce framework permet à la fois d’accélérer les développements, mais également de les standardiser, réduisant ainsi les coûts de développement mais également la maintenance.

Découplage entre le moteur de provisioning et les applications cibles

La caractéristique majeure de ce framework consiste en l’introduction d’un découplage fort entre le moteur de provisioning et les applications cibles. Ce découplage est rendu possible par une architecture bi-couche permettant ainsi de séparer les appels (utilisation de la couche API) au connecteur de son implémentation (basée sur la couche SPI). API : Application Programming Interface SPI : Specific Provider Interface

La construction d’un connecteur consiste donc à implémenter un certain nombre d’interfaces SPI fournies en standard par le framework et en respectant les conventions imposées (convention over configuration). Le découplage entre les appels et l’implémentation permet avant tout de capitaliser sur le développement d’un connecteur puisqu’il peut être réutilisé avec un autre moteur de provisioning. Cela permet également d’envisager de mettre en place des tests unitaires et ainsi de valider presque entièrement les développements avant la phase d’intégration.

OIM & ICF

Deux autres caractéristiques majeures du framework

Extensibilité

Un connecteur basé sur le framework ICF peut être construit comme une extension d’un connecteur déjà existant, ce qui permet de capitaliser sur ce qui a déjà été développé et éviter la redondance de code. Dans le cas d’une application cible de type base de données relationnelle, il est envisageable de développer un premier connecteur générique contenant toute la logique d’accès, puis de l’étendre pour intégrer les spécificités d’une base de données spécifique (schéma, requêtes…).

Identity Connector Server

L’architecture ICF a été conçue afin de permettre la communication entre une application cliente et un connecteur déployé sur un serveur distinct. Cette architecture peut être adoptée lorsque des contraintes en termes de performances sont imposées. Cela donne également la possibilité d’envisager le développement d’un connecteur dans une technologie autre que Java (.NET par exemple) lorsque l’application cible est plus adaptée à un langage de programmation donné. C’est le cas d’Active Directory pour lequel le framework .NET est plus approprié.

ICF Framework

Les avantages et les inconvénients

Inconvénients

  • Peu de contributeurs et activité faible
  • Manque de maturité des connecteurs standards
  • Peu, voire pas de documentation

Avantages

  • Léger et simple à mettre en œuvre
  • Extensibilité
  • Respect des design patterns (facade, factory…)
  • Open source
  • Adopté par un éditeur important dans le domaine de la gestion d’identités : Oracle

Liste des connecteurs proposés

Connecteurs Java

  • CVS Directory
  • Database table
  • Flat file
  • GoogleApps
  • LDAP (v3)
  • SOAP
  • Active Directory

Connecteurs .NET

  • Active Directory
  • Exchange

ICF, en pratique

Depuis la version 11g d’OIM (Oracle Identity Manager), Oracle a fait le choix d’intégrer le framework ICF dans son architecture. La réécriture des connecteurs existants proposés en standard (Active Directory, LDAP…) s’appuiera à terme sur ce framework. L’éditeur préconise également son utilisation pour tout développement de connecteur en spécifique. Synetis a fait le choix de s’appuyer sur ce framework pour le développement de nouveaux connecteurs pour le compte d’un client ayant mis en œuvre la solution OIM. Le retour d’expérience est positif et nous encourage à poursuivre son adoption.