Shibbolethisation d'un uPortal 4.0.4 OK.
Notes de procédure :
Implémentation de la possibilité de Proxy CAS sur N serveurs CAS (en plus de l'authentification Shib) OK
-> prochaines étapes :
Le client lourd uMobile permet de saisir une fois pour toute son username/password sur son smartphone/tablette.
Au 12/03/2012, 3 méthodes d'authentification ont été développées actuellement dans uMobile :
* authentification locale au portail
* authentification CAS : simulation de l'envoi du formulaire CAS avec le username / password saisis par l'utilisateur
* authentification Shibboleth : simulation de l'envoi du formulaire IDP Shibboleth avec le username / password saisis par l'utilisateur
-> utilise un IDP spécifique configuré dans uMobile (config.js) via la variable SHIB_BASE_URL et préfigure que l'IDP Shibboleth utilise son mécanisme interne pour l'authentification (et non une délégation d'authentification à CAS).
Ainsi il ne permet pas actuellement de s'authentifier en Shibboleth comme on l'entend (et pas non plus évidemment en "shib + cas")
En utilisant une URL qui permet de court-circuiter le WAYF (on y sélectionne alors un IDP spécifique) et en recodant une authentification spécifique CAS + Shib (correspondant à un mixe de CASLogin.js et Shibboleth2Login.js ; cf ci-joint le fichier ShibbolethCasLogin.js ) on y arrive ... presque :
* le bug Titanium suivant https://jira.appcelerator.org/browse/TC-676 fait que les redirections ne fonctionnement pas correctement sous iOS, l'authentification échoue alors. Ce bug concerne iOS uniquement (et non Android) -> prochaine étape : patcher le code Objective-C Titanium ...
* sur Android, pb : le client http (org.apache.http) utilisé détecte une redirection circulaire (Circular redirect) qui provoque une Exception et donc stope le processus d'authentification + récupération du layout.json de manière authentifiée. On est ici obligé de patcher le code de Titanium qui est ici en java pour Android : on part des sources de titanium déjà patchées par Jasig, on rajoute la petite ligne qui va bien params.setParameter(org.apache.http.client.params.ClientPNames.ALLOW_CIRCULAR_REDIRECTS, true); on rebuild le package titanium (un peu plus de 8 min), on le fait prendre en compte par Titanium Studio, on rebuild le uMobile ... et ça passe ....