Principe de la gestion des utilisateurs avec les
Transcription
Principe de la gestion des utilisateurs avec les
NOTE TECHNIQUE Gestion des annuaires LDAP 1 [TN] 1 Cette note technique fournit une vue d’ensemble de la gestion des annuaires LDAP dans W4 BPMN+. C O M I N G U P T O P I CS 1.1 [TN] Principe de la gestion des utilisateurs avec les annuaires LDAP, 1 Gestion de l’authentification, 2 Gestion de synchronisation entre la base W4 BPMN+ et l’annuaire, 2 Configuration de la synchronisation des utilisateurs, 3 Exemples de synchronisation, 3 Principe de la gestion des utilisateurs avec les annuaires LDAP 2 W4 BPMN+ dispose d'une structure permettant de gérer les utilisateurs et leurs profils de manière autonome afin de garantir la cohérence de la base de données. Exemple : Si un utilisateur quitte la société, il est supprimé de l'annuaire d'entreprise. Or, au sein des processus, il reste un utilisateur ayant mené une action particulière. L'utilisation des annuaires concerne 2 sujets complémentaires : L'authentification : volonté d'utiliser l'annuaire d'entreprise de manière uniforme et ainsi disposer d'une authentification SSO dans les applications. La gestion des profils en fonction des informations de l'annuaire : volonté d'uniformiser la gestion des droits dans un seul outil. © 2014 - 2016 W4. Tous droits réservés. L’aide en ligne de W4 BPMN+ est disponible à l’adresse docs.w4store.com 2 body 1.2 [TN] Gestion de l’authentification 3 Les applications W4 BPMN+ permettent d'utiliser les mécanismes standards disponibles en Java pour transmettre l'identité de l'utilisateur connecté vers les applications W4 BPMN+. Exemples : Kerberos, NTLM, CAS. La complexité de mise en œuvre est plus liée au SSO souhaité qu'à W4 BPMN+. Lors des connexions aux applications, il suffit de disposer dans le header du nom de l'utilisateur et l'application ne proposera plus la page d'authentification. W4 BPMN+ permet d'autoriser plusieurs types d'authentification : Seuls les utilisateurs connus dans l'annuaire. Les utilisateurs de l'annuaire, puis s'ils ne sont pas connus, il est possible d'autoriser une authentification directe au moteur à travers sa base d'utilisateurs. De plus, il est possible d'exclure certains utilisateurs d'une authentification à travers l'annuaire. Exemples : utilisateurs techniques (créés pour des besoins techniques), super administrateurs, utilisateurs propres au moteur (par exemple : admin). 1.3 [TN] Gestion de synchronisation entre la base W4 BPMN+ et l’annuaire 4 La synchronisation consiste à reporter les droits d'un utilisateur de l'annuaire dans la base d'utilisateurs du moteur. Les droits peuvent alors être gérés soit : Entièrement dans l'annuaire (ce qui est rarement le cas, exemple pour les administrateurs du moteur). Entièrement dans le moteur. De manière mixte (cas le plus fréquent). La séparation entre privilèges et groupes du moteur avec les droits de l'annuaire offre toute la souplesse souhaitée : Certains clients vont utiliser dans les processus leurs droits issus de l'annuaire. Uniformise les profils, leur nommage. Facilite la compréhension des utilisateurs. Certains clients vont privilégier une vue "opérationnelle" dans les processus avec une mise en correspondance au niveau de la configuration. Exemple : le processus utilise des groupes du type valideurCongés et il est défini dans la configuration que l'utilisateur étant manager dispose du groupe valideurCongés. De même, les attributs des utilisateurs peuvent diverger entre l'annuaire et la base d'utilisateurs. Certains attributs pouvant n'avoir une existence que dans l'un ou l'autre. 1.4 [TN] Configuration de la synchronisation des utilisateurs Synchronisation possible avec un ou plusieurs annuaires LDAP. 5 Opération autorisée lors de la synchronisation : Création, modification et suppression d'utilisateurs. Création, modification et suppression de groupes. Mode de synchronisation (combinaisons possibles entre chacun des critères ci-dessous) : Quand ? Au démarrage du moteur. A chaque connexion de l'utilisateur. Quand l'utilisateur fait partie d'une recherche. Sur l'accès direct à l’utilisateur. Toutes les x périodes. Quoi ? Une partie des attributs et/ou des groupes. L'ensemble des attributs et/ou des groupes. Tous les attributs et/ou des groupes sauf... Gestion des timeouts sur les connexions à l'annuaire : Le nombre de tentatives et leur espacement est défini dans la configuration. 1.5 [TN] Exemples de synchronisation 6 La synchronisation consiste à définir les informations à recopier dans la base des utilisateurs et des groupes W4 en fonction de requêtes auprès de l'annuaire. Il est possible de définir un comportement général sur _default puis de le surcharger sur une ou plusieurs définitions Au moins une définition doit être positionnée pour que la synchronisation soit prise en compte. Elle permet principalement de définir le scope de filtre LDAP à appliquer. Dans les exemples, ci-dessous, nous utiliserons <def> comme le nom de la définition utilisée H E A D I N G S I N T H I S TO P I C Récupération d'informations sur l'utilisateur, 4 Récupération de groupes de l'annuaire, 4 Affectation d'un groupe W4 à des utilisateurs donnés, 5 Note technique - Gestion des annuaires LDAP 3 4 body Récupération d'informations sur l'utilisateur Recopier une information de l'annuaire core.ldap.search.users._default.mappings+=properties.lastName core.ldap.search.users._default.mapping.properties.lastName=${entry.attributes.get('name').get()} Positionner une information fixe en fonction d'un critère core.ldap.search.users.<def>.searchName=CN=Users,DC=company,DC=com core.ldap.search.users.<def>.searchFilter=(&(objectclass=user)(department=Purchase)) core.ldap.search.users.<def>.mappings+=attributes.cpp:Branch core.ldap.search.users.<def>.mapping.attributes.cpp:Branch=Antwerp Récupération de groupes de l'annuaire Créer des groupes à partir de ceux existant dans l'annuaire core.ldap.search.groups._default.mappings+=identifier.name core.ldap.search.groups._default.mapping.identifier.name=${entry.attributes.get('cn').get()} core.ldap.search.groupsDefinitions=<def> core.ldap.search.groups.<def>.searchName=CN=Groups,DC=company,DC=com core.ldap.search.groups.<def>.searchFilter=(objectclass=group) Affectation d'un groupe W4 à des utilisateurs donnés Affectation du groupe MyGroup à tous les utilisateurs du département Purchase core.ldap.search.users.<def>.searchName=CN=Users,DC=company,DC=com core.ldap.search.users.<def>.searchFilter=(&(objectclass=user)(department=Purchase)) core.ldap.search.users.<def>.mappings+=groupNames core.ldap.search.users.<def>.mapping.groupNames+=myGroup Affectation d'un groupe à chacun des utilisateurs appartenant à celui-ci core.ldap.search.users.<def>.mapping.groupNames+=\ ${ldap.getEntryAttributeStringValues(entry.attributes.get('memberOf').getAll(), 'cn')} Affectation des utilisateurs ayant le groupe AD Purchase dans le groupe W4_Purchase core.ldap.search.groups.<def>.searchName=CN=Users,DC=company,DC=com core.ldap.search.groups.<def>.searchFilter=(&(objectclass=group)(mailNickname=purchase)) core.ldap.search.groups.<def>.mappings+=userNames core.ldap.search.groups.<def>.mapping.userNames+= W4_${entry.attributes.get('cn').get()} Affectation des utilisateurs à un groupe Besoin exprimé par rapport à l'annuaire OID dont l'information memberOf n'est pas disponible. Par conséquent, on effectue l'affectation d'un ensemble d'utilisateurs dans un groupe core.ldap.search.groups.<def>.mapping.userNames+=\ ${ldap.getEntryAttributeStringValues(entry.attributes.get('member').getAll(), 'mailNickname')} Exemple avec des expressions plus riches Si nous avons créé nos utilisateurs avec le login W4_<cnOfDirectory>. Nous pouvons les retrouver de la manière suivante pour remplir un groupe : Note technique - Gestion des annuaires LDAP 5 6 body ${ldap.getEntryExpressionValues(entry.attributes.get('member').getAll(),"W4_${attributes.get(' mailNickname').get()}")} FINAL Note technique - Gestion des annuaires LDAP 7