esup-signature propose plusieurs mode d'authentification qui peuvent être utilisés simultanément :
- Authentification CAS
- Authentification Shibboleth
- Authentification OTP (one time password)
- Authentification OAuth (à l'étude)
L'authentification d'un utilisateur donne lieu à l'attribution de rôles via un mécanismes de correspondances groupes ↔ rôles de l'on va détailler ici.
La configuration ce fait dans le fichier de configuration src/main/resources/application.yml voir : Sources et configuration
Mécanisme d'attribution des rôles
Voici le détail des étapes :
- Lorsqu’un utilisateur se connecte on récupère la liste des groupes dont il fait parti
- Si une connexion LDAP est configurée il est possible d'attribuer des groupes à l'utilisateur à l'aide de filtres ldap grâce à la propriété mapping-filters-groups : Sources et configuration
- Dans tous les cas il est aussi possible d'attribuer des groupes via des règles utilisant la syntaxe SePL de Spring. Cela est limité à l'utilisation de l'attribut #eppn pour permettre d'attribuer un groupe à une personne en particulier. Il est possible aussi d'attribuer un groupe à tous les utilisateurs en utilisant "true"
- Ensuite viens l'attribution des rôles :
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
- Enfin l'attribution des autres rôles ce fait à l'aide la liste de correspondance spécifiée dans mapping-groups-roles où l'on déclare nom_du_groupe = ROLE_NOM_DU_ROLE.
esup-signature possède trois rôles particuliers :
- ROLE_USER : indispansable pour acceder à l'application
- ROLE_ADMIN : qui ouvre les droits à la partie administration
- ROLE_OTP : obtenu lors qu'un utilisateur externe ce connecte via OTP. Il obtient des droit pour effectuer des signatures