esup-signature propose plusieurs modes d'authentification qui peuvent être utilisés simultanément :
L'authentification d'un utilisateur donne lieu à l'attribution de rôles via un mécanisme de correspondance groupes → rôles que l'on va détailler ici. La configuration se fait dans le fichier de configuration src/main/resources/application.yml voir : Sources et configuration |
Voici le détail des étapes :
Tout d'abord à l'aide du group-to-role-filter-pattern. Il va détecter les groupes de l'utilisateur qui correspondent au pattern défini et attribuer le rôle correspondant. Ex : le groupe toto.tata pour le pattern toto.(\w*) donnera le rôle ROLE_TATA
esup-signature possède trois rôles particuliers :
|
Voici quelques exemples de configuration à mettre en place dans src/main/ressource/application.yml pour illustrer différents cas de figure.
Dans la partie ldap, un exemple de filtre pour sélectionner les personnels staff. Toutes les personnes correspondant au filtre seront dans le groupe "mes-utilisateurs"
ldap: search-base: ou=people group-search-base: ou=groups user-id-search-filter: (uid={0}) group-search-filter: member={0} member-search-filter: (&(uid={0})({1})) mapping-filters-groups: mes-utilisateurs : "eduPersonAffiliation:=staff" # ici le filtre ldap va remplir un groupe virtuel propre à esup-signature 'mes-utilisateurs' |
Pour affecter un rôle à ce groupe il suffit d'ajouter l'affectation dans la partie security.web
security: ... ... web: ... mapping-groups-roles: mes-utilisateurs: ROLE_USER # on affecte le groupe 'mes-utilisateurs' au role ROLE_USER ws-access-authorize-ips: 127.0.0.1 |
Prenons un cas ou l'utilisateur arrive dans esup-signature avec dans member les groupes ldap suivants:
Cela se configure dans la partie security.web :
security: ... ... web: group-to-role-filter-pattern: esup-signature.mesroles.(\w*) # on configure le pattern permettant de retrouver automatiquement les groupes amenés à devenir des rôles applicatifs mapping-groups-roles: esup-signature.mes-utilisateurs: ROLE_USER # on attribut directement le ROLE_USER aux personnes du groupe 'esup-signature.mes-utilisateurs' ws-access-authorize-ips: 127.0.0.1 |
Le cas général serait de donner le ROLE_USER à tout le monde est de donner le ROLE_ADMIN à certains. Dans ce cas il faut utiliser group-mapping-spel pour attribuer des rôles directement avec la syntaxe SePL.
security: ... ... web: ... mapping-groups-roles: mes-utilisateurs: ROLE_USER # on attribut directement le ROLE_USER aux personnes du groupe 'mes-utilsateurs' mes-admins: ROLE_ADMIN # on attribut directement le ROLE_ADMIN aux personnes du groupe 'mes-admins' ws-access-authorize-ips: 127.0.0.1 group-mapping-spel: mes-utilisateurs: "true" # met tout le monde dans le groupe 'mes-utilisateurs" mes-admins: "#eppn='user1@univ-ville.fr' or #eppn='user2@univ-ville.fr" # met user1 et user2 dans le groupe 'mes-admins' |