Bonjour,
y-a-t-il une documentation, un tutoriel, concernant la gestion des sessions utilisateurs notamment en ce qui concerne la mise à dispo des tokens utilisateurs et leur renouvellement en cas d’expiration ?
Cordialement,
Laurent
La doc générique est la suivante: Service auth qui couvre divers cas, y compris des cas “historiques”
Mais pour résumer l’appel de base pour obtenir un token sur le endpoint API c’est de faire un GET sur <base URL>/api/login
avec votre user/password en basic auth
Ex: en curl:
curl -u <user>:<password> "<url>/api/login"
qui renvoie le token brut
Sinon il faut ajouter un header ad hoc (-H Accept: application/json
en curl) pour obtenir une réponse JSON.
Ex:
> curl -s -u admin:(...)"https://(...).simplicite.io/api/login"
eyJhbGciOiJIU(...)LNnMyt7alpYgo
> curl -s -u admin:(...) -H "Accept: application/json" "https://(...).simplicite.io/api/login"
{"firstname":"Barbara","licensed":true,"timezone":"Europe/Paris","authtoken":"eyJhbGciOiJIUzI1NiI(...)uQmCC","authtokenexpiry":1716393323000,"lastname":"SMITH","langiso":"en","authtokenexpires":"2024-05-22T15:55:23Z","lang":"ENU","email":"demo@simplicite.fr"}
Ensuite il faut utiliser ce token dans le header Authorization: Bearer <token>
ou X-Simplicite-Authorization: Bearer <token>
sur tout appel en /api/(...)
Il n’y a pas de mécanisme de “refresh token” donc une fois le token expiré, il faut en obtenir un nouveau selon le mécanisme décrit ci-dessus
Ok merci.
Sachant que l’on est sur de la SSO via configuration OAUTH2 OIDCP, y-a-t-il des choses automatisées pour le rafraichissement du jeton ou des méthodes à dispo pour ce faire ?
Si vous utilisez un provider d’identité externe OIC c’est celui-ci qui fournit le token, c’est donc du coté de ce fournisseur d’identité que vous devez poser la question du renouvellement de ce token.
Coté Simplicité on ne fait que verifier le token externe passé dans le header Authorization
(plusieurs mécanismes de validation sont possibles, cf. cette doc OAuth2 configuration), si celui-ci est valide on autorisa l’accès au service appelé sur /api/*
, on ne fait rien d’autre vis à vis de ce token.
Mais est-ce qu’on parle bien ici d’un token utilisé pour appeler un service Simplicité ou est-ce qu’on parle d’un appel dans l’autre sens = Simplicité qui appellerait un service externe ?
Bonjour,
On parle d’un token effectivement délivré par un provider d’identité externe et effectivement l’idée est d’utiliser les informations transmises pour affecter un utilisateur dans un groupe ou un autre et d’avoir ce token à dispo pour l’utiliser lors de certains appels api faits directement par l’utilisateur.
Par contre, le token a une date d’expiration et comme le process d’authent est automatisé, je souhaitait savoir comment se matérialisait le renouvellement d’un token qui aurait expiré.
Bonjour Laurent,
Il y avait dans la classe BpiCommun une méthode refreshToken qui récupérait le refresh token sur l"url du refresh token du provider.
La doc indiquée dans ma réponse précédente est celle qui permet de configurer le provider d’identité externe afin que Simplicité puisse faire le lien entre le token présenté (niveau UI et/ou API) et le user Simplicité et es droits. Il y a des choses qui se paramètrent et d’autres qui nécessitent l’implentation d’une logique ad hoc dans les hooks prévus à cet effet.
Cette doc ne décrit pas autre chose. Ca ne décrit pas une utilisation de ce token pour appeler des services tiers une fois connecté (s’agissant de la UI, Simplicité ne valide le token qu’à la connexion, ensuite ce sont les mécanismes de timeout de session Tomcat qui s’appliquent = une durée depuis la dernière action utilisateur)
S’il y a un besoin d’appel de services tiers au sein d’une session UI on peut donc alors se retrouver avec un token qui n’est plus valide (il l’était au moment de la connexion, mais la session Tomcat a perdurée au delà de la date de fin de validité de celui-ci)
Il faut alors implémenter la logique de renouvellement de ce token, par exemple au niveau des appels à ces services tiers. Cette logique dépend totalement de votre provider d’identitié = soit il propose un mécanisme de “refresh token” et ça pourra à priori se faire de manière transparente pour l’utilisateur, soit il impose une réidentification/authentification interactive (dans le cas d’un provider d’identité externe type OIC ou SAML Simplicité n’a pas connaissance du password ou autre élément authentifiant et donc ne peut pas faire une ré-authentification tout seul)
Bref, la première question à vous posser c’est bien de savoir ce que votre provider d’identité offre ou pas comme mécanisme pour renouveler un token expiré
@nathalie nos réponses se sont croisées.
Je comprends qu’un mécanisme spécifique est déjà en place, donc ça ne relève pas de la doc produit mais de la doc projet. Je te laisse donc la main
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.