Feature #3839
ferméGestion de la clé de l'API Rest
100%
Description
Silverpeas est en train d'élargir son API Rest (espaces, applications, groupes, utilisateurs, dossiers...).
Cette API est pour l'instant utilisée principalement en interne mais va être rapidement ouverte pour un usage externe à Silverpeas.
- Récupérer ses prochains événements,
- Récupérer ses tâches,
- Lancer une recherche depuis un environnement tiers,
- Mettre à jour son statut,
- ...
Pour toutes ces opérations, l'utilisateur doit être identifié.
Le gestion d'une clé unique pour chaque utilisateur permettra de faire cette identification et ainsi retourner les informations adéquates.
Cette clé sera un paramètre indispensable lors d'une requête REST.
Elle sera générée automatiquement et aléatoirement pour chaque utilisateur.
Lorsque l'utilisateur en aura besoin, il la trouvera facilement dans son profil.
Mis à jour par Nicolas Eysseric il y a environ 12 ans
- Statut changé de New à Assigned
- Assigné à mis à Yohann Chastagnier
- Version cible mis à Version 5.12
Mis à jour par Yohann Chastagnier il y a environ 12 ans
- Statut changé de Assigned à In progress...
Mis à jour par Miguel Moquillon il y a environ 12 ans
Pour information, les services REST supportent déjà l'authentification via le header HTTP Authorization. Un utilisateur qui souhaite accéder à, par exemple, ses prochaines événements via le service REST correspondant et à partir d'un outil tiers, peut le faire en passant ses crédences (identifiant et mot de passe) dans ce header (codé en base64). La partie qui n'a pas encore été faite est celle où le token de session, généré lors de l'authentification au web service, est passé dans la réponse du web service au client, permettant ainsi au client de communiquer avec n'importe quel service REST avec ce token de session. Le champs header HTTP X-Silverpeas-Session dédié à ce token ainsi que sa prise en compte par les services REST sont déjà réalisés.
Mis à jour par Yohann Chastagnier il y a environ 12 ans
- Statut changé de In progress... à Resolved
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.
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).Mis à jour par Nicolas Eysseric il y a presque 12 ans
- Statut changé de Resolved à Closed
- % réalisé changé de 0 à 100
OK. Validé et intégré.
A cette occasion, lors de l'intégration, la page Identité de Mon profil a bénéficié d'un petit lifting...