Deux parties distinctes sont identifiées dans le cadre de cette feature.
La première concerne la mise en place d'un service transverse de gestion de token.
Ce service permet d'attribuer une clé unique à un type et un identifiant de ressource. C'est cette clé qui est appelée un jeton ou encore un token.
Ce service gère aujourd'hui l'attribution de token pour des utilisateurs. Chaque utilisateur peut connaître son token en accédant à son profil dans Silverpeas.
La seconde partie consiste à utiliser le service de gestion de token dans l'accessibilité aux Web-Services Silverpeas par les utilisateurs, en mode déconnecté.
En possession de son
token, un utilisateur peut maintenant effectuer des appels au Web-Service Silverpeas sans être connecté au serveur lui-même, et ce, depuis ou hors du domaine du serveur Silverpeas (cross domain).
Pour se faire, l'utilisateur doit communiquer son
token :
- soit dans l'entête de la requête HTTP via le paramètre X-Silverpeas-Session (en cas de succès, l'entête de la réponse HTTP contient systématiquement ce paramètre renseigné).
- soit via le paramètre X-Silverpeas-Session directement transmis via l'URL de la requête HTTP
Pour une requête ajax via JQuery, par exemple, le paramètre headers peut être spécifié. Il est constitué d'une liste de clé (nom du paramètre) / valeur (du paramètre) :
...,
headers : {
"X-Silverpeas-Session" : "f78ba784c9884389b020b3797d2f587a"
},
...
Un exemple dans le cas du
token directement passé via l'URL de la requête HTTP : (pour afficher une image contenue dans une galerie photos de Silverpeas) :
...
<img src="http://[serveur]/[application silverpeas]/services/gallery/[identifiant de l'instance de la galerie dans Silverpeas]/albums/[identifiant de l'album]/photos/[identifiant de la photo]/previewContent?X-Silverpeas-Session=[valeur du token de l'utilisateur, par exemple, f78ba784c9884389b020b3797d2f587a]">
...
Il est possible d'exécuter des requêtes ajax depuis des pages WEB d'un autre domaine que celui du serveur Silverpeas (cross domain). Pour cela, le paramètre
web.request.domain.allowed est mis en place dans le fichier
org/silverpeas/general.properties. Par défaut, le
cross domain n'est pas possible.
En reprenant l'exemple précédent et en considérant que
web.request.domain.allowed = *
(tous les domaines sont autorisés), il suffit d'affecter la valeur
true
au paramètre transverse JQuery
JQuery.support.cors avant d'exécuter la requête (notamment depuis Internet Explorer).