cancel
Showing results for 
Search instead for 
Did you mean: 

Mon ticket ne semble plus valide sur l'API malgré une reconnexion

tenderlion
Champ in-the-making
Champ in-the-making

Bonjour,

J'essaie de me dépatouiller pour pouvoir récupérer une liste  de documents sur Alfresco au travers d'un serveur NodeJS qui fait abstraction.

Mes utilisateurs se connectent à l'API via

/alfresco/service/api/login?u={userName}&pw={password}

La page en question me retourne un ticket que je stocke en base de données et qui servira à chaque appel futur.

Par exemple, je récupère la liste des documents de la façon suivante:

/alfresco/api/-default-/public/cmis/versions/1.1/browser/root/Sites/{MonSite}?alf_ticket={ticket}

Cet appel fonctionne parfaitement pendant un certain temps (au moins une heure, mais je n'ai pas réussi à le caractériser exactement).

Au delà de cette période, l'API me renvoie une erreur 401 Unauthorzied qui laisse penser que le ticket n'est plus valide. Or périodiquement (chaque minute), je vérifie que le ticket est toujours valide en envoyant une requête à:

/alfresco/service/api/login/ticket/{ticket}?alf_ticket={ticket}

Si tout se passe bien, je dois récupérer le ticket d'origine.

Étonnement, lorsqu'un ticket renvoie une erreur 401, le fait de se connecter à nouveau ne corrige pas le problème.

Ma question est donc: Y-a-t-il une façon de garder une session ouverte indéfiniment ou de corriger ce problème ?

Merci d'avance de votre temps et bonne soirée.

3 REPLIES 3

ycoulon
Employee
Employee

Bonjour,

Le ticket d'authentification n'est pas éternel. Il a une durée de vie (un peu comme une session navigateur).

Lors d'une reconnection, un nouveau ticket est généré qui doit être utilisé durant sa période de validité.

En somme dans ce que vous avez décrit lors d'une reconnection, le ticket en base doit être mis à jour avec celui fournit lors de la nouvelle connection.

Yann

tenderlion
Champ in-the-making
Champ in-the-making

Bonjour,

J'effectue une reconnexion lorsque l'erreur 401 survient mais le ticket obtenu est le même que celui d'origine.

La requête de récupération des documents n'abouti donc pas, car la session semble toujours terminée malgré la reconnexion.

Merci.

Bonjour,

En effectuant quelque recherche j'ai trouvé le lien suivant : Ramesh Chauhan: Fast facts about alf_ticket for hassle free integration with Alfresco using REST API qui vous fournira des informations complémentaire (en anglais).

Typiquement les appels à "/alfresco/service/api/login/ticket" permet juste de vérifier la validité, s'il est expiré ou invalide cela ne va pas le rafraichir.

Il existe des configurations permettant d'agir sur le comportement du ticket d'authenfication, jetez un oeil au fichier community-edition/repository.properties at 2c1eff9953d3105e738f7b06ba9ba8a079ca4c24 · Alfresco/commu... qui contient lest valeurs par défaut utilisé par Alfresco.

Yann