Arborescence des pages

Vous regardez une version antérieure (v. /wiki/pages/viewpage.action?pageId=980058116) de cette page.

afficher les différences afficher l'historique de la page

« Afficher la version précédente Vous regardez la version actuelle de cette page. (v. 5) afficher la version suivante »

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-groupsSources et configuration
  • Dans tous les cas il est aussi possible d'attribuer des groupes via des règles group-mapping-spel 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 : indispensable pour accéder à 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

Cas d'usages

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

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

Dans la partie ldap, un exemple filtre pour ne sélectionner les personnels staff

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 le groupe 'mes-utilisateurs'

Pour affecter le roles à ce groupe il suffit d'ajouter 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 pour donner le ROLE_USER

Prenons un cas ou l'utilisateur arrive dans esup-signature avec dans member les groupes suivants: 

  • esup-signature.user (groupe auquel on souhaite donner le ROLE_USER)
  • esup-signature.mesroles.circuit_toto (groupe que l'on souhaite utiliser pour donner des droits sur le circuit "toto")

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.user: ROLE_USER	        					   # on attribut directement le ROLE_USER au personnes du groupe 'esup-signature.user'
	    ws-access-authorize-ips: 127.0.0.1

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

Dans ce cas il faut utiliser group-mapping-spel pour attribuer des rôles directement avec la syntaxe SePL.


  • Aucune étiquette