L’utilisation du SSO requiert la création d’un projet de type SSO (dans Diffuser > Projets > Mes projets) et d’un client pour ce projet.
Ce type d’authentification est nécessaire pour accéder aux API SSO :
- Service de récupération du profil de l’utilisateur
- Service de consultation d’autorisation de modification d’un objet
Comptes concernés
Tous les comptes utilisateurs authentifiés (membre, extranet, …) de la plateforme Apidae peuvent bénéficier du SSO.
Autorisation
La première phase consiste à autoriser le client à se connecter au compte de l’utilisateur. Pour cela au fait appel au webservice authorize.
Cette autorisation se fait via un navigateur en appelant l’URL du service. Si l’utilisateur est logguer, il sera automatiquement redirigé vers la page d’autorisation. S’il n’est pas cas, il sera invité à le faire.
Requête
- url : https://base.apidae-tourisme.com/oauth/authorize
- paramètres :
- response_type : une chaîne de caractères. Toujours « code » dans ce cas d’utilisation .
- scope : Une liste de chaînes de caractères. La liste des services auxquels le client souhaite avoir accès. Toujours « sso » dans ce cas d’utilisation.
- client_id : une chaîne de caractères. Le clientId du client.
- redirect_uri : une chaîne de caractères. L’URI vers laquelle doit être redirigée l’appel une fois l’autorisation donnée.
Exemple d’appel à faire dans le navigateur :
https://base.apidae-tourisme.com/oauth/authorize?response_type=code&client_id=XXXX&redirect_uri=https://test-sso/callback/&scope=sso"
Une fois l’autorisation accordée, le service redirige l’utilisateur vers l’URI pointée par le paramètre redirect_uri avec le paramètre de requête code. Ce code doit être conservé, car il permet de récupérer le token dans la phase suivante.
Récupération du token
La récupération du token se fait via le webservice token.
Requête
- méthode : POST
- url : https://api.apidae-tourisme.com/oauth/token
- paramètres :
- grant_type : une chaîne de caractères. Le type d’accès, toujours « authorization_code » dans notre cas d’utilisation.
- code : une chaîne de caractères. Le code fournit à l’issu de l’autorisation.
- redirect_uri : une chaîne de caractères. L’URI qui a été fourni lors de l’autorisation.
- authentification : le couple clientId / clé secrète doit être passé comme paramètre d’authentification.
Exemple de récupération avec CURL :
curl -u :<clé secrète> -H "Accept: application/json" "https://api.apidae-tourisme.com/oauth/token?grant_type=authorization_code&code=sBaz0b&redirect_uri=https://test-sso/callback/"
Réponse
(cette documentation est valable pour la réponse au format json)
La réponse contient trois champs :
- access_token : une chaîne de caractères. Le token d’authentification
- token_type : une chaîne de caractères. Le type de token, toujours « bearer » dans notre cas.
- expires_in : un entier. Temps restant, en secondes, avant que le token n’expire
- scope : une liste de chaînes de caractères. La liste des services accessibles avec ce token.
- refresh_token : une chaîne de caractères. Un token de rafraîchissement permettant de récréer un token sans repasser par l’étape de récupération du code (voir rafraîchissement).
Exemple de réponse :
{
"access_token":"XXXX-XXXX-XXXX-XXXX-XXXX",
"token_type":"bearer",
"expires_in":40698,
"scope":"api_metadonnees",
"refresh_token":"XXXX-XXXX-XXXX-XXXX-XXXX"
}
Rafraîchissement du token
L’authentification SSO permet de simplifier le workflow de récupération d’un nouveau token afin de sauter l’étape de récupération d’un code d’autorisation. A partir du token de rafraîchissement fourni lors de la récupération du token.
Requête
- méthode : POST
- url : https://api.apidae-tourisme.com/oauth/token
- paramètres :
- grant_type : une chaîne de caractères. Le type d’accès, toujours « refresh_token » dans ce cas d’utilisation.
- refresh_token : une chaîne de caractères. Le token de rafraîchissement fourni lors de la récupération du token.
- redirect_uri : une chaîne de caractères. L’URI qui a été fourni lors de l’autorisation.
- authentification : le couple clientId / clé secrète doit être passé comme paramètre d’authentification.
Exemple de rafraîchissement avec CURL : curl -u :<clé secrète> -H "Accept: application/json" "https:///api.apidae-tourisme.com/oauth/token?grant_type=refresh_token&refresh_token=XXXX-XXXX-XXXX-XXXX-XXX&redirect_uri=https://test-sso/callback/"
Réponse
(cette documentation est valable pour la réponse au format json)
La réponse contient trois champs :
- access_token : une chaîne de caractères. Le token d’authentification
- token_type : une chaîne de caractères. Le type de token, toujours « bearer » dans notre cas.
- expires_in : un entier. Temps restant, en secondes, avant que le token n’expire
- scope : une liste de chaînes de caractères. La liste des services accessibles avec ce token.
- refresh_token : une chaîne de caractères. Un token de rafraîchissement permettant de récréer un token sans repasser par l’étape de récupération du code (voir rafraîchissement).
Exemple de réponse :
{
"access_token":"XXXX-XXXX-XXXX-XXXX-XXXX",
"token_type":"bearer",
"expires_in":40698,
"scope":"api_metadonnees",
"refresh_token":"XXXX-XXXX-XXXX-XXXX-XXXX"
}
Exploitation du token
Le token transmis peut être utilisé pour authentifier les accès aux web-service de profil.
> Authentification avec un token OAuth2