Project

General

Profile

Actions

Feature #3839

closed

Gestion de la clé de l'API Rest

Added by Nicolas Eysseric about 9 years ago. Updated about 9 years ago.

Status:
Closed
Priority:
Normal
Category:
API Rest
Start date:
10/22/2012
Due date:
% Done:

100%

Estimated time:
Livraison en TEST:
Livraison en PROD:

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.

Les cas d'utilisation sont nombreux :
  • 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.

Actions #1

Updated by Nicolas Eysseric about 9 years ago

  • Status changed from New to Assigned
  • Assignee set to Yohann Chastagnier
  • Target version set to Version 5.12
Actions #2

Updated by Yohann Chastagnier about 9 years ago

  • Status changed from Assigned to In progress...
Actions #3

Updated by Miguel Moquillon about 9 years ago

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.

Actions #4

Updated by Yohann Chastagnier about 9 years ago

  • Status changed from In progress... to 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.

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).

Actions #5

Updated by Nicolas Eysseric about 9 years ago

  • Status changed from Resolved to Closed
  • % Done changed from 0 to 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...

Actions

Also available in: Atom PDF