inclusion etude des solutions libres de type IDM

This commit is contained in:
Paul Marillonnet 2017-03-30 17:00:43 +02:00
parent 74207b46e4
commit c9d4acc871
2 changed files with 309 additions and 309 deletions

309
doc.md
View File

@ -41,315 +41,6 @@ Plus facile à mettre en place que des solutions basées SAML ?
## Approvisionnement
## Implémentations
### Authentic 2
écrit en Django
TODO Installation et déploiement en local
TODO Ecriture d'un dummy SP pour tester Authentic ??
TODO Expliquer les particularités de la licence GNU Affero GPL (APGL) :
- l'utilisation du code pour des applications Web déployées est pris en compte dans le caractère transitif ("contaminant") de la licence.
TODO Quel intérêt de licencier la documentation sous Creative Commons ?
#### Documentation
Comprendre l'interaction avec Lasso pour le support SAMLv2
One-time password support ?
Sphinx, génération de la doc
Cf structure des fichiers rst
##### Administration
L'administration d'Authentic 2 se fait de façon classique, à l'aide du module d'administration de Django, lequel propose une interface graphique disponible à la page `/admin/` du site.
Il faudra cependant veiller à créer un *superuser* lors de l'initialisation de la base.
Le contrôle d'accès aux ressources Authentic se fait par recours à deux politiques globales appelées 'Default' et 'All'. //TODO reformuler
Le mécanisme de politiques d'accès géré par Authentic est extensible : l'administrateur du service peut en définir, en plus des politiques 'Default' et ' All'.
Le niveau de granularité de ces politiques est l'objet : à chaque objet il est possible d'attribuer une politique d'accès. // Au sens de la POO ?
//TODO Pourquoi est-il nécessaire d'appliquer la politique 'All' sur tous les objets ? Quel(s) problème(s) si on ne le fait pas ?
##### Gestion des attributs SAML2
Il s'agit ici de configurer une politique de gestion des attributs envoyés dans les réponses de succès d'authentification envoyées par Authentic 2 aux SPs.
L'utilisation des attributs SAML2 dans les réponses Authentic varie en fonction des cas d'utilisation, Authentic peut ou on être configuré en tant que SP SAML2.
//TODO Relire `attribute_management.rst`
Ligne 207 : une associe une politique à un SP
Cas particulier du SSO
Revoir scenario d'utilisation avec mire de connexion
##### Authentification
Avec LDAP ou laissée à PAM
Rappel: la configuration de PAM sous UNIX se fait à l'aide des fichiers situés dans `/etc/pam.d`
Configuration de la variable `AUTHENTICATION_BACKEND` du `settings.py` des sources Django.
##### SAML2 et croisement des données entre différents compte
Cette possibilité de croisement des données entres les différents comptes liéss à une même identité est au coeur de la fédération d'identité (On parle de *account linking consent*).
C'est le fournisseur d'identité (IdP) qui gère le consentement des utilisateurs à la liaison de leurs différents comptes.
Les données ne sont pas forcément croisées, il peut simplement s'agir de la mise en place d'un mécanisme de SSO.
Dans ce cas, le message SAML AuthnRequest contient un champ indiquant le choix de l'utilisateur quant au croisement des ses comptes.
Si l'IdP manipule des identifiants opaques (*transient*), alors le consentement de l'utilisateur au croisement des comptes n'est pas nécessaire. //TODO à vérifier
On notera aussi que le fournisseur de service (SP) est en droit de refuser un SSO valide si le consentement de l'utilisateur n'a pas été recueilli. //S'agit-il ici de Authentic en tant que SP ?
Il faut aussi gérer le consentement à la redirection d'attributs (*attribute forwarding consent*).
Dans Authentic 2, cette politique de gestion consiste en un choix parmi trois possibilités :
* Ne pas demander à l'utilisateur son accord
* Recueillir un consentement global pour l'ensemble des attributs ("Tout ou rien")
* Permettre à l'utilisateur de choisir, attribut par attribut, ceux qui peuvent être redirigés
#### authentic2-ctl
installation par pip en local
pip install ./
Outil d'administration en ligne de commande
#### Installation
* AttributeError: 'module' object has no attribute 'PassThroughManager'
quand : utilisation de authentic2-ctl
pourquoi : incompatibilité sur les versions récentes du module django-model-utils
solution : rétrograder le module django-model-utils à une version <= 2.3
##### virtualenv Python
Le mécanisme de création d'environnements virtuels sous Python permet de faire cohabiter sur un même système des installations disparates. Par exemple, un même module Python peut être présent en différentes versions tant que ces versions se situent dans des environnements virtuels différents.
Les répertoires d'installation des modules Python dans le cadre d'un virtualenv sont seulement locaux à l'environnement créé.
##### Troubleshooting
-
##### Utilisation des *tenants* du SGBDR
### Apache Syncope
Syncope est le projet d'outil de gestion des identités numériques de la fondation Apache.
Il est écrit en J2E et est distribué sous licence Apache.
L'identité numérique consiste en un ensemble de demandes qu'un sujet numérique peut effectuer à propos de lui-même.
Notion de cycle de vie des données d'identité telle que définie par le projet, à travers le *provisioning* et le *deprovisioning*.
//TODO Inclure image du projet Apache Syncope
#### Tuto officiel (*Getting Started*)
La problématique centrale de GI telle que le conçoit Syncope est
"Qui a accès à Quoi, Quand, Comment et Pourquoi ?"
Trois types d'objet sont définis par Apache Syncope : les utilisateurs (*Users*), les groupes (*Groups*), et d'autres objets n'appartenant pas à ces deux premières classes, par l'introduction des objets de type *Any*.
Plusieurs techno différentes sont nécessaires dans un scenario de gestion des identités avec Syncope.
Comme la plupart des IdM, Syncope nécessite l'utilisation d'un outil de stockage des identités (*Identity Store*). Il peut s'agir d'un SGDBR, d'un annuaire LDAP ou même d'un fichier "à plat".
Syncope prend en charge les fonctionnalités d'approvisionnement (*Provisioning engine*) et de gestion d'accès (*Access Manager*).
Le moteur d'approvisionnement, fourni par Syncope, est responsable des fonctionnalités de synchronisation des différentes bases de référentiels d'identité, avec toutes les problématiques de compatibilité (formats, modèles, sémantiques) qui en résultent.
Le gestionnaire d'accès se charge de l'authentification, des autorisation et de la fédération des identités fournies aux différents services de l'architecture.
Cf `syncope_architecture.png`. Description de la pile logicielle usuelle d'une appli Web utilisant Syncope.
Syncope -> partie 'Core', du front au back en assurant aussi la sécurité.
//TODO CF Activiti BPM
La persistence est assurée par JPA, et les propriétés ACID du stockage sont prises en charge par le système transactionnel du framework Spring.
Connecteurs : ConnId pour l'implémentation des connecteurs
Post SUN ICF (Identity Connector Framework)
Penser à installer les trois paquets Debian (la base, 'console', et 'enduser')
Installation de la GUI en client lourd ? Vraiment nécessaire ?
`http://localhost:8080/syncope-console/login?1`
TODO Tuto Apache Maven
#### Apache Maven
Outil de gestion de projet (au sens de gestion technique: résolution des dépendances, automatisation du build, packaging, génération de la doc, etc)
`JAVA_HOME` utilisé /usr/lib/jvm/java-1.8.0-openjdk-amd64
Faire les modification dans /etc/profile
Fichier lu au démarrage d'un login shell
Installation :
Fichier binaire directement disponible
Penser à rajouter le répertoire d'installation de Maven au $PATH
Il convient maintenant de configurer proprement Maven
`# OpenJDK environment configuration`
`export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-amd64"`
`export PATH=$JAVA_HOME/bin:$PATH`
`# Add Maven to the binary search path`
`export PATH=/opt/apache-maven-3.3.9/bin:$PATH`
`export MAVEN_OPTS="-XMs256m -Xmx512m"`
Dernière options pour définir l'utilisation RAM de la VM Java
TODO en quoi Maven va plus loin que Ant pour ce qui est du build ?
#### Lancement de Syncope
Création du projet à l'aide des *archetypes* Maven.
`/opt/apache-maven-3.3.9/bin/mvn archetype:generate \`
` -DarchetypeGroupId=org.apache.syncope \`
` -DarchetypeArtifactId=syncope-archetype \`
` -DarchetypeRepository=http://repo1.maven.org/maven2 \`
` -DarchetypeVersion=2.0.2`
Manipulation de fichiers POM
`paul@spare:~/Documents/syncope.test/synctest$ find ./ -name '*.war'`
`./core/target/syncope.war`
`./console/target/syncope-console.war`
`./enduser/target/syncope-enduser.war`
Utilisation des profils Maven (option CLI '-P'), par exemple pour le mode *embedded* pour la partir enduser de Syncope
Première constatation : niveau performances de l'interface Web d'administration, c'est vraiment trop lent.
Pb inhérent à Java ?
Système de contrôle d'accès lui aussi défini par des rôles
On parle aussi de relations (*Relationships*) pour définir les ressources auxquelles un utilisateur a accès.
Ces ressources peuvent être internes ou non au groupe.
Pb : inutilisable en l'état : Unknown [ActivitiObjectNotFoundException: execution 10 doesn't exist]
Exception non capturée dans le code
Impossible d'utiliser l'interface d'administration
TODO : Troobleshoot + étudier cas de synchro de réfs d'identités hétérogènes.
Aller investiguer dans http://localhost:9080/syncope/db.jsp pour comprendre le modèle de stockage des identités mis en place par syncope
### evolveum midPoint
Projet écrit un Java, difficilement interfaçable avec les outils entr'ouvert.
Lourd (projet git de taille 230Mo)
Multifonctions :
- Automatisation de la création (*provisioning*) et suppression (*deprovisioning*) des référentiels d'identité gérés.
- synchro et gestion des conflits (*reconciliation*)
- Automatisation des processus d'acceptation des requêtes au référentiel d'identité
- Contrôle d'accès défini par les rôles (*Role-based access control* ou RBAC)
- Outils de monitoring
- utilisation de connecteurs standards pour interfacer les SP en tant qu'IDP
TODO Parcourir sources, identifier les modules correspondant aux fonctions proposées
Installation à partir des sources, à l'aide de Maven
Déploiement d'un WAR de façon automatique avec tomcat ?
Ne fonctionne pas pour l'instant
Problème de taille de mémoire allouée à la JVM ?
Réessayer avec le manager GUI de tomcat (`/manager`)
Résolution : définition correcte du `MIDPOINT_HOME` dans `$CATALINA_HOME/setenv.sh` (script à créer)
### Linagora LinID
Leur serveur ruby on rails (linid.org) est par terre pour le moment.
### ForgeRock OpenIDM
Pour l'instant, impossible de le faire fonctionner, documentation trop light.
Lecture des sources et de la documentation
Projet Java open source, dépôt git
Synchronisation de référentiels d'identités hétérogènes, par exemple Active Directory (Microsoft), OpenLDAP ou encore OpenDJ
-> Les schémas ne sont pas les mêmes.
Mécanismes de correction des erreurs dans le référentiel, y compris lors de la phase de synchronisation
Mise à disposition de 'nightly builds' (~versions Beta)
Pré-requis pour l'installation
Windows ou Linux
Java 7 ou 8 (JRE ou JDK)
#### Processus de synchronisation des référentiels d'identité
Exemple donné entre Ressources Humaines et Pôle technique
Un fichier csv et un fichier xml
Le mapping entre les attributs des entrées du premier référentiel vers celles du second doit cependant être explicitement configuré pour mener à bien la synchronisation.
Fichier sync.json : liste de dictionnaires contenant deux entrées seulement
'source' et 'target'
```
"properties" : [
{
"source" : "Name",
"target" : "name"
},
{
"source" : "lastName",
"target" : "lastname"
},
{
"source" : "firstName",
"target" : "firstname"
},
{
"source" : "email",
"target" : "email"
},
{
....
}
```
Serveur HTTPS, avec interface Web d'administration
#### Business processes, workflows
Auto-enregistrement (*self-registration*)
Certification des comptes (*account certification*)
Integration de l'outil libre Activiti
respect de la norme BPMN (Business Process Model and Notation) 2.0
Prise en charge de la gestion des mots de passe. La degré d'exigence de la politique de sécurité des mots de passe est paramétrable. (Motifs interdits dans les passwords, date de validité, gestion d'un historique pour éviter la réutilisation des mots de passe).
//TODO si nécessaire, cf chapitre 4.5 'Managing passwords'
Notion de rôle, en tant que scénario utilisateur TODIG
Schema XMI et XSD du protocole BPMN disponibles à :
http://www.omg.org/spec/BPMN/2.0/
#### Connecteur fournis avec l'application
Google WebApps
Salesforce ?
LDAPv3
CSV
Databases
Plus intéressant : OpenIDM scripted connector framework
Implémentation d'un connecteur sous forme d'un ensemble de scripts
Connecteur hétéroclite dont l'interface est imposée par OpenIDM
Groovy Connector Toolkit
Groovy: langage pour la plateforme Java
Projet maintenu par la communauté Apache
#### Gestion/resolution des conflits de synchronisation
aka reconciliation
La politique de résolution des conflits de synchro entre deux (ou plus de deux) référentiels d'identités est configurable par l'administrateur de OpenIDM
#### OpenIDM Sample Files
Description de cas d'utilisation dans des fichiers d'échantillon. Plusieurs cas décrit : //TODIG
- Gestion de résolution de conflit sur des données utilisateurs stockées sur un fichier XML
- Scripts de génération des messages de logs de l'application (y compris messages de debug)
- Resolution asynchrone de conflits à l'aide de *workflows*
#### API RESTful
TODO
#### Artefacts (*Artifacts*)
TODO
"Artifacts handled by OpenIDM are Java object representations of the JavaScript object model as defined by JSON."
Comprendre le fonctionnement des artefacts
BIG TODO : faire tourner l'appli...
# SSO (et SLO)
# Synchronisation

View File

@ -93,6 +93,315 @@ Héberger complètement un outil : maîtrise technique supérieure qu'un simple
# État de lart de la gestion des identités numériques
## Les solutions libres pour la synchronisation et lapprovisionnement des référentiels didentités numériques
### Authentic 2
écrit en Django
TODO Installation et déploiement en local
TODO Ecriture d'un dummy SP pour tester Authentic ??
TODO Expliquer les particularités de la licence GNU Affero GPL (APGL) :
- l'utilisation du code pour des applications Web déployées est pris en compte dans le caractère transitif ("contaminant") de la licence.
TODO Quel intérêt de licencier la documentation sous Creative Commons ?
#### Documentation
Comprendre l'interaction avec Lasso pour le support SAMLv2
One-time password support ?
Sphinx, génération de la doc
Cf structure des fichiers rst
##### Administration
L'administration d'Authentic 2 se fait de façon classique, à l'aide du module d'administration de Django, lequel propose une interface graphique disponible à la page `/admin/` du site.
Il faudra cependant veiller à créer un *superuser* lors de l'initialisation de la base.
Le contrôle d'accès aux ressources Authentic se fait par recours à deux politiques globales appelées 'Default' et 'All'. //TODO reformuler
Le mécanisme de politiques d'accès géré par Authentic est extensible : l'administrateur du service peut en définir, en plus des politiques 'Default' et ' All'.
Le niveau de granularité de ces politiques est l'objet : à chaque objet il est possible d'attribuer une politique d'accès. // Au sens de la POO ?
//TODO Pourquoi est-il nécessaire d'appliquer la politique 'All' sur tous les objets ? Quel(s) problème(s) si on ne le fait pas ?
##### Gestion des attributs SAML2
Il s'agit ici de configurer une politique de gestion des attributs envoyés dans les réponses de succès d'authentification envoyées par Authentic 2 aux SPs.
L'utilisation des attributs SAML2 dans les réponses Authentic varie en fonction des cas d'utilisation, Authentic peut ou on être configuré en tant que SP SAML2.
//TODO Relire `attribute_management.rst`
Ligne 207 : une associe une politique à un SP
Cas particulier du SSO
Revoir scenario d'utilisation avec mire de connexion
##### Authentification
Avec LDAP ou laissée à PAM
Rappel: la configuration de PAM sous UNIX se fait à l'aide des fichiers situés dans `/etc/pam.d`
Configuration de la variable `AUTHENTICATION_BACKEND` du `settings.py` des sources Django.
##### SAML2 et croisement des données entre différents compte
Cette possibilité de croisement des données entres les différents comptes liéss à une même identité est au coeur de la fédération d'identité (On parle de *account linking consent*).
C'est le fournisseur d'identité (IdP) qui gère le consentement des utilisateurs à la liaison de leurs différents comptes.
Les données ne sont pas forcément croisées, il peut simplement s'agir de la mise en place d'un mécanisme de SSO.
Dans ce cas, le message SAML AuthnRequest contient un champ indiquant le choix de l'utilisateur quant au croisement des ses comptes.
Si l'IdP manipule des identifiants opaques (*transient*), alors le consentement de l'utilisateur au croisement des comptes n'est pas nécessaire. //TODO à vérifier
On notera aussi que le fournisseur de service (SP) est en droit de refuser un SSO valide si le consentement de l'utilisateur n'a pas été recueilli. //S'agit-il ici de Authentic en tant que SP ?
Il faut aussi gérer le consentement à la redirection d'attributs (*attribute forwarding consent*).
Dans Authentic 2, cette politique de gestion consiste en un choix parmi trois possibilités :
* Ne pas demander à l'utilisateur son accord
* Recueillir un consentement global pour l'ensemble des attributs ("Tout ou rien")
* Permettre à l'utilisateur de choisir, attribut par attribut, ceux qui peuvent être redirigés
#### authentic2-ctl
installation par pip en local
pip install ./
Outil d'administration en ligne de commande
#### Installation
* AttributeError: 'module' object has no attribute 'PassThroughManager'
quand : utilisation de authentic2-ctl
pourquoi : incompatibilité sur les versions récentes du module django-model-utils
solution : rétrograder le module django-model-utils à une version <= 2.3
##### virtualenv Python
Le mécanisme de création d'environnements virtuels sous Python permet de faire cohabiter sur un même système des installations disparates. Par exemple, un même module Python peut être présent en différentes versions tant que ces versions se situent dans des environnements virtuels différents.
Les répertoires d'installation des modules Python dans le cadre d'un virtualenv sont seulement locaux à l'environnement créé.
##### Troubleshooting
-
##### Utilisation des *tenants* du SGBDR
### Apache Syncope
Syncope est le projet d'outil de gestion des identités numériques de la fondation Apache.
Il est écrit en J2E et est distribué sous licence Apache.
L'identité numérique consiste en un ensemble de demandes qu'un sujet numérique peut effectuer à propos de lui-même.
Notion de cycle de vie des données d'identité telle que définie par le projet, à travers le *provisioning* et le *deprovisioning*.
//TODO Inclure image du projet Apache Syncope
#### Tuto officiel (*Getting Started*)
La problématique centrale de GI telle que le conçoit Syncope est
"Qui a accès à Quoi, Quand, Comment et Pourquoi ?"
Trois types d'objet sont définis par Apache Syncope : les utilisateurs (*Users*), les groupes (*Groups*), et d'autres objets n'appartenant pas à ces deux premières classes, par l'introduction des objets de type *Any*.
Plusieurs techno différentes sont nécessaires dans un scenario de gestion des identités avec Syncope.
Comme la plupart des IdM, Syncope nécessite l'utilisation d'un outil de stockage des identités (*Identity Store*). Il peut s'agir d'un SGDBR, d'un annuaire LDAP ou même d'un fichier "à plat".
Syncope prend en charge les fonctionnalités d'approvisionnement (*Provisioning engine*) et de gestion d'accès (*Access Manager*).
Le moteur d'approvisionnement, fourni par Syncope, est responsable des fonctionnalités de synchronisation des différentes bases de référentiels d'identité, avec toutes les problématiques de compatibilité (formats, modèles, sémantiques) qui en résultent.
Le gestionnaire d'accès se charge de l'authentification, des autorisation et de la fédération des identités fournies aux différents services de l'architecture.
Cf `syncope_architecture.png`. Description de la pile logicielle usuelle d'une appli Web utilisant Syncope.
Syncope -> partie 'Core', du front au back en assurant aussi la sécurité.
//TODO CF Activiti BPM
La persistence est assurée par JPA, et les propriétés ACID du stockage sont prises en charge par le système transactionnel du framework Spring.
Connecteurs : ConnId pour l'implémentation des connecteurs
Post SUN ICF (Identity Connector Framework)
Penser à installer les trois paquets Debian (la base, 'console', et 'enduser')
Installation de la GUI en client lourd ? Vraiment nécessaire ?
`http://localhost:8080/syncope-console/login?1`
TODO Tuto Apache Maven
#### Apache Maven
Outil de gestion de projet (au sens de gestion technique: résolution des dépendances, automatisation du build, packaging, génération de la doc, etc)
`JAVA_HOME` utilisé /usr/lib/jvm/java-1.8.0-openjdk-amd64
Faire les modification dans /etc/profile
Fichier lu au démarrage d'un login shell
Installation :
Fichier binaire directement disponible
Penser à rajouter le répertoire d'installation de Maven au $PATH
Il convient maintenant de configurer proprement Maven
`# OpenJDK environment configuration`
`export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-amd64"`
`export PATH=$JAVA_HOME/bin:$PATH`
`# Add Maven to the binary search path`
`export PATH=/opt/apache-maven-3.3.9/bin:$PATH`
`export MAVEN_OPTS="-XMs256m -Xmx512m"`
Dernière options pour définir l'utilisation RAM de la VM Java
TODO en quoi Maven va plus loin que Ant pour ce qui est du build ?
#### Lancement de Syncope
Création du projet à l'aide des *archetypes* Maven.
`/opt/apache-maven-3.3.9/bin/mvn archetype:generate \`
` -DarchetypeGroupId=org.apache.syncope \`
` -DarchetypeArtifactId=syncope-archetype \`
` -DarchetypeRepository=http://repo1.maven.org/maven2 \`
` -DarchetypeVersion=2.0.2`
Manipulation de fichiers POM
`paul@spare:~/Documents/syncope.test/synctest$ find ./ -name '*.war'`
`./core/target/syncope.war`
`./console/target/syncope-console.war`
`./enduser/target/syncope-enduser.war`
Utilisation des profils Maven (option CLI '-P'), par exemple pour le mode *embedded* pour la partir enduser de Syncope
Première constatation : niveau performances de l'interface Web d'administration, c'est vraiment trop lent.
Pb inhérent à Java ?
Système de contrôle d'accès lui aussi défini par des rôles
On parle aussi de relations (*Relationships*) pour définir les ressources auxquelles un utilisateur a accès.
Ces ressources peuvent être internes ou non au groupe.
Pb : inutilisable en l'état : Unknown [ActivitiObjectNotFoundException: execution 10 doesn't exist]
Exception non capturée dans le code
Impossible d'utiliser l'interface d'administration
TODO : Troobleshoot + étudier cas de synchro de réfs d'identités hétérogènes.
Aller investiguer dans http://localhost:9080/syncope/db.jsp pour comprendre le modèle de stockage des identités mis en place par syncope
### evolveum midPoint
Projet écrit un Java, difficilement interfaçable avec les outils entr'ouvert.
Lourd (projet git de taille 230Mo)
Multifonctions :
- Automatisation de la création (*provisioning*) et suppression (*deprovisioning*) des référentiels d'identité gérés.
- synchro et gestion des conflits (*reconciliation*)
- Automatisation des processus d'acceptation des requêtes au référentiel d'identité
- Contrôle d'accès défini par les rôles (*Role-based access control* ou RBAC)
- Outils de monitoring
- utilisation de connecteurs standards pour interfacer les SP en tant qu'IDP
TODO Parcourir sources, identifier les modules correspondant aux fonctions proposées
Installation à partir des sources, à l'aide de Maven
Déploiement d'un WAR de façon automatique avec tomcat ?
Ne fonctionne pas pour l'instant
Problème de taille de mémoire allouée à la JVM ?
Réessayer avec le manager GUI de tomcat (`/manager`)
Résolution : définition correcte du `MIDPOINT_HOME` dans `$CATALINA_HOME/setenv.sh` (script à créer)
### Linagora LinID
Leur serveur ruby on rails (linid.org) est par terre pour le moment.
### ForgeRock OpenIDM
Pour l'instant, impossible de le faire fonctionner, documentation trop light.
Lecture des sources et de la documentation
Projet Java open source, dépôt git
Synchronisation de référentiels d'identités hétérogènes, par exemple Active Directory (Microsoft), OpenLDAP ou encore OpenDJ
-> Les schémas ne sont pas les mêmes.
Mécanismes de correction des erreurs dans le référentiel, y compris lors de la phase de synchronisation
Mise à disposition de 'nightly builds' (~versions Beta)
Pré-requis pour l'installation
Windows ou Linux
Java 7 ou 8 (JRE ou JDK)
#### Processus de synchronisation des référentiels d'identité
Exemple donné entre Ressources Humaines et Pôle technique
Un fichier csv et un fichier xml
Le mapping entre les attributs des entrées du premier référentiel vers celles du second doit cependant être explicitement configuré pour mener à bien la synchronisation.
Fichier sync.json : liste de dictionnaires contenant deux entrées seulement
'source' et 'target'
```
"properties" : [
{
"source" : "Name",
"target" : "name"
},
{
"source" : "lastName",
"target" : "lastname"
},
{
"source" : "firstName",
"target" : "firstname"
},
{
"source" : "email",
"target" : "email"
},
{
....
}
```
Serveur HTTPS, avec interface Web d'administration
#### Business processes, workflows
Auto-enregistrement (*self-registration*)
Certification des comptes (*account certification*)
Integration de l'outil libre Activiti
respect de la norme BPMN (Business Process Model and Notation) 2.0
Prise en charge de la gestion des mots de passe. La degré d'exigence de la politique de sécurité des mots de passe est paramétrable. (Motifs interdits dans les passwords, date de validité, gestion d'un historique pour éviter la réutilisation des mots de passe).
//TODO si nécessaire, cf chapitre 4.5 'Managing passwords'
Notion de rôle, en tant que scénario utilisateur TODIG
Schema XMI et XSD du protocole BPMN disponibles à :
http://www.omg.org/spec/BPMN/2.0/
#### Connecteur fournis avec l'application
Google WebApps
Salesforce ?
LDAPv3
CSV
Databases
Plus intéressant : OpenIDM scripted connector framework
Implémentation d'un connecteur sous forme d'un ensemble de scripts
Connecteur hétéroclite dont l'interface est imposée par OpenIDM
Groovy Connector Toolkit
Groovy: langage pour la plateforme Java
Projet maintenu par la communauté Apache
#### Gestion/resolution des conflits de synchronisation
aka reconciliation
La politique de résolution des conflits de synchro entre deux (ou plus de deux) référentiels d'identités est configurable par l'administrateur de OpenIDM
#### OpenIDM Sample Files
Description de cas d'utilisation dans des fichiers d'échantillon. Plusieurs cas décrit : //TODIG
- Gestion de résolution de conflit sur des données utilisateurs stockées sur un fichier XML
- Scripts de génération des messages de logs de l'application (y compris messages de debug)
- Resolution asynchrone de conflits à l'aide de *workflows*
#### API RESTful
TODO
#### Artefacts (*Artifacts*)
TODO
"Artifacts handled by OpenIDM are Java object representations of the JavaScript object model as defined by JSON."
Comprendre le fonctionnement des artefacts
BIG TODO : faire tourner l'appli...
# Prise en main des technologies