esup-signature propose plusieurs modes 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é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

Mécanisme d'attribution des rôles


Voici le détail des étapes :


esup-signature possède trois rôles particuliers :

  • ROLE_USER : indispensable pour accéder à l'application
  • ROLE_ADMIN : qui ouvre les droits à la partie administration
  • ROLE_OTP : obtenu lorsqu'un utilisateur externe se connecte via OTP. Il obtient des droits pour effectuer des signatures

Cas d'usages

Voici quelques exemples de configuration à mettre en place dans src/main/ressource/application.yml pour illustrer différents cas de figure.

J'ai un annuaire ldap et je souhaite attribuer le rôle ROLE_USER en fonction d'un filtre ldap

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

J'ai déjà des groupes dans mon annuaire je souhaite les utiliser pour attribuer des rôles spécifiques aux circuits et/ou pour donner le ROLE_USER

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

J'ai configuré l'authentification Shibboleth et je ne suis pas connecté à un annuaire

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'