Contexte
Nous avons récemment voulu gérer des comptes dans ITIM, pour des besoins de provisionnement d'applications distantes, alimentées via des flux fichiers.
Pour éviter de mettre en place un flux fichier ou une autre ressource (type LDAP par exemple), nous avons pensé utiliser un service manuel : l'intérêt est de ne pas avoir de composant technique supplémentaire, tout en gardant la traçabilité des comptes de la personne.
Ceci se fait en plusieurs étapes :
- Ajout de classes d'objets pour le service dans le schéma LDAP ITIM
- Création d'un type de service manuel
- Création du service
- Mise en place de la PP et tests
Classes d'objet pour le service manuel
Par défaut, il n'existe pas d'adaptateur pour les services manuels. Pour créer un type de service manuel, il faut sélectionner une classe d'objet définissant le service, et une classe d'objet définissant le compte.
Nous avons donc créé 2 classes d'objets :
- itimManualService, qui définit le type de service manuel
- itimManualAccount, qui définit le compte sur un service manuel
Les classes d'objet ont été créées avec le fichier LDIF suivant :
dn: cn=schema changetype: modify add: attributetypes attributetypes: (1.3.6.1.4.1.16832.123.4.50 NAME 'itimRoles' DESC 'Business roles assigned to the person' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) dn: cn=schema changetype: modify add: objectclasses objectclasses: ( 1.3.6.1.4.1.16832.123.3.3 NAME 'itimManualService' DESC 'Manual Service for itim accounts' SUP top STRUCTURAL MUST ( cn ) MAY ( description $ erservicename $ l $ o $ ou $ owner ) ) dn: cn=schema changetype: modify add: objectclasses objectclasses: ( 1.3.6.1.4.1.16832.123.3.2 NAME 'itimManualAccount' DESC 'itim Manual Account' SUP top STRUCTURAL MUST ( cn $ uid ) MAY ( businesscategory $ c $ displayName $ employeenumber $ EmployeeType $ facsimiletelephonenumber $ givenname $ itimAlternateMail $ itimAreanumber $ itimArrivaldate $ itimBadgeID $ itimContract $ itimJobCode $ itimRespEmpNumber $ itimRoles $ itimSecEmpNumber $ itimShortPhoneNr $ itimSiteGeo $ itimSiteType $ l $ mail $ manager $ mobile $ o $ objectclass $ personaltitle $ preferredLanguage $ sn $ telephoneNumber $ title $ userpassword ) )
Le schéma est ensuite chargé via la commande :
ldapmodify -x -D cn=root -w monMonDePasse -f schemaManuel.ldif
Création du type de service
Ceci se fait via la console :
Configure System > Manage Service Types
Il faut entrer le nom du type de service, et choisir comme "Service Provider" l'option "Manual".
L'étape suivante consiste à sélectionner la classe d'objet LDAP qui représente le service. L'écran suivant permet de sélectionner la classe représentant le compte, que l'on a chargé à l'étape précédente.
Création du service
Le service manuel est créé de la même manière que les autres services, en sélectionnant le type de service manuel que l'on a créé précédemment.
Politiques de provisionnement
Une fois le service créé, une politique de provisionnement peut être ajoutée, de la même manière que sur d'autres services.
Contraintes et limites d'un service manuel
Si la création est facile, il faut garder à l'idée les limitations et contraintes d'un tel type de service : Un service manuel déclenche toujours un worklow de validation.
Difficile donc de penser utiliser un tel service pour des comptes qui doivent être créés automatiquement. Ce type de service doit être limité aux services / ressources qui doivent passer par une action manuelle : fourniture de matériel par exemple, attribution d'un badge avec une photo. Dans ces cas précis, la demande de cas va déclencher la validation auprès du responsable du service, qui pourra réaliser les opérations nécessaires.
Pour des cas plus automatisés, tels que nous l'avions envisagé, il faudra s'orienter vers une autre solution : soit utilisation d'un LDAP endpoint, soit utilisation d'un type de service Virtuel.