Recherche
Configurations utilisées :
RequestHeader set nuxeo-virtual-host "https://dsi-2.univ-rouen.fr/" ProxyPass /nuxeo ajp://localhost:8009/nuxeo <Location "/nuxeo"> AuthType shibboleth ShibRequireSession Off ShibUseHeaders On Require shibboleth </Location>
<extension target="org.nuxeo.ecm.platform.shibboleth.service.ShibbolethAuthenticationService" point="config"> <config> <uidHeaders> <!--uidHeader idpUrl="url1">uid1</uidHeader> <uidHeader idpUrl="url2">uid2</uidHeader--> <default>eppn</default> </uidHeaders> <loginURL>https://dsi-2.univ-rouen.fr/Shibboleth.sso/WAYF</loginURL> <logoutURL>https://dsi-2.univ-rouen.fr/Shibboleth.sso/Logout</logoutURL> <fieldMapping header="eppn">username</fieldMapping> <fieldMapping header="mail">email</fieldMapping> </config> </extension>
-> l'authentification fonctionne.
-> on déduit le fonctionnement de TestShibbolethComputedGroup.java (doc non trouvée)
Exemples qui fonctionnent :
true
currentUser.user.username == 'bonamvin@univ-rouen.fr'
Les EL expressions marchent bien ... mais cela ne semble définitvement pas assez souple, il nous faudrait quelque chose à base de regexp ou au moins il faudrait qu'on puisse faire des endsWith beginsWith, contains etc. ...
En effet on va avoir notamment pour des attributs multi-valués type affiliation des choses comme :
affiliation=employee@unicaen.fr;member@unicaen.fr
JUEL (http://juel.sourceforge.net/ ) est utilisé comme implémentation des Unified Expression Language (EL).
Précisément on retrouve la version 2.1.2 de juel (juel-impl-2.1.2.jar) dans le nuxeo nuxeo-dm-5.4.0-tomcat.
Les versions supérieurs de JUEL (la dernière 2.2.2, par exemple) permettent nativement d'invoquer des méthodes dans les EL.
On propose donc d'utiliser cette nouvelle version :
On peut alors utiliser pour la définition des groupes des définitions type 'foo'.matches('foo|bar') et même 'bonamvin@univ-rouen.fr'.equals(currentUser.user.username) ...
... pour autant currentUser.user.username.equals('bonamvin@univ-rouen.fr') ne fonctionne pas ou plutôt la validation de l'expression EL dans l'IHM ne fonctionne pas, on voit passer en effet dans les logs le message suivant :
2010-11-16 14:50:26,219 WARN [org.nuxeo.ecm.platform.el.DocumentModelResolver] Property not found: user:username. Document 'null' with title 'null' and type 'user' does not have any schema with prefix 'user'
... le document bidon servant à valider l'expression (validation == exécution de l'expression sur un document bidon) ne convient pas.
-> pour contourner le pb,
On peut alors créer des définitions du type :
currentUser.user.username.matches('.*@univ-rouen.fr')
Attention cependant, il n'y a plus de validation d'effectuée sur vos expressions ...
à suivre ...