- 12 Jul 2022
- 2 Minutes à lire
- Contributeurs
- Impression
- SombreClair
- PDF
OAuth2
- Mis à jour le 12 Jul 2022
- 2 Minutes à lire
- Contributeurs
- Impression
- SombreClair
- PDF
OAuth2
Introduction
OAuth2 est un standard qui permet de mettre en place une délégation d'autorisation pour accorder à une application tierce un accès limité sur une ressource, avec l'accord du propriétaire de celle-ci.
L'implémentation est basée sur la spécification JAX-RS (Jersey), le standard JWT et la librairie open-source Nimbus.
Limitations
- Seul le flow Resource Owner Password Credentials est supporté.
- Pour obtenir un token valide pour un utilisateur, l'application tierce doit fournir le nom d'utilisateur et le mot de passe du dit utilisateur.
- Il n'existe pas de page de configuration dans Constellio pour gérer les application tierces.
- Des services web temporaires sont offerts, pour l'administrateur système seulement, pour créer/supprimer une nouvelle application tierce et pour révoquer un refresh token.
- Les jetons JWT générés permettent aux application tierces d'accéder au REST API v2 seulement.
- Pour utiliser le REST API v2, le jeton JWT doit être fourni dans le header Authorization avec le préfix Bearer.
Configurations
Il est important que la configuration "Lien du serveur Constellio" soit correctement renseignée et corresponde exactement à l'url du serveur vu que c'est cette valeur qui est utilisée pour valider le issuer.
Guide d'utilisation
Pour ajouter une nouvelle application tierce :
- POST /oauth/v2/credentials?applicationName=nomApplication
- Le paramètre de query applicationName est obligatoire
- L'utilisateur doit envoyer le header Authorization de type Bearer avec un jeton legacy de l'administrateur (ex: Bearer superToken)
- Une réponse json est retournée avec le client id et le client secret.
- Ce service va ajouter l'application tierce à la liste des applications supportées. Elle va générer un client id, un client secret ainsi qu'une paire de clés RSA privé et publique.
Pour supprimer une application tierce :
- DELETE /oauth/v2/credentials?applicationName=nomApplication
- Le paramètre de query applicationName est obligatoire
- L'utilisateur doit envoyer le header Authorization de type Bearer avec un jeton legacy de l'administrateur (ex: Bearer superToken)
- Une réponse vide est retournée.
- Ce service va supprimer l'application tierce de la liste des applications supportées. Tous les refresh tokens associés sont également supprimés.
Pour obtenir un jeton JWT :
- POST /oauth/v2/token
- Le body doit être au format x-www-form-urlencoded et les variables suivantes doivent être fournies : grant_type, client_id, client_secret, username, password
- La variable grant_type doit avoir la valeur password
- Une réponse json est retournée avec l'access token, le type de token, l'expiration du token et le refresh token
- Normalement, le jeton a une durée de vie de 600 secondes et après cette période, on doit en obtenir un autre à l'aide du refresh token.
Pour rafraîchir un jeton JWT :
- POST /oauth/v2/token
- Le body doit être au format x-www-form-urlencoded et les variables suivantes doivent être fournies : grant_type, client_id, client_secret, refresh_token
- La variable grant_type doit avoir la valeur refresh_token
- Une réponse json est retournée avec l'access token, le type de token, l'expiration du token et le refresh token
Pour révoquer un refresh token :
- POST /oauth/v2/revoke?refreshToken=refreshToken
- Le paramètre de query refreshToken est obligatoire
- L'utilisateur doit envoyer le header Authorization de type Bearer avec un jeton legacy de l'administrateur (ex: Bearer superToken)
- Une réponse vide est retournée.
- Ce service va supprimer le refresh token du serveur et il ne sera plus possible de rafraîchir un token avec ce refresh token