Applications de groupe
Caractéristiques
Une application de groupe possède :
- un nom
- une URL de description
- une paire de paramètres d'identification (client_id et client_secret)
Elle peut être associée à 0, n groupes de travail qui peuvent ainsi lui partager 0, n catalogues.
Une application de groupe accède en lecture seule à l’ensemble des fiches contenues dans l’ensemble des catalogues qui lui sont partagés. En revanche elle n’a pas directement accès à ces catalogues.
Une application de groupe utilise le flot Client Credentials Grant pour s’authentifier à la plateforme Isogeo.
Authentification
Paramètres d'accès
L'équipe Isogeo référence l'application sur sa plateforme et l'affecte au/x groupe/s de travail adéquats.

Les identifiants sont ensuite transmis au développeur sous la forme d'un fichier client_secrets.json dont la structure est la même que celle utilisée par Google (voir la documentation) :
{
"web": {
"client_id": "python-minimalist-sdk-test-uuid-1a2b3c4d5e6f7g8h9i0j11k12l",
"client_secret": "application-secret-1a2b3c4d5e6f7g8h9i0j11k12l13m14n15o16p17Q18rS",
"auth_uri": "https://id.api.isogeo.com/oauth/authorize",
"token_uri": "https://id.api.isogeo.com/oauth/token"
}
}
Client Credentials Grant
La documentation officielle de ce flot est disponible dans la RFC 6749. Pour paraphraser, la récupération d’un access token se fait sur la route https://id.api.isogeo.com/oauth/token.
La requête est un POST vers https://id.api.isogeo.com/oauth/token
avec un contenu qui indique
grant_type=client_credentials
avec un en-tête d’authentification de type Basic, où l’on considère que :
- le nom d’utilisateur est le client_id
- le mot de passe est le client_secret
Ce qui revient à encoder en Base 64 la chaîne
{client_id}:{client_secret}
(sans les accolades). Exemple :Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
L’access token est renvoyé au format JSON (voir exemple ci-dessous). Il permet l’accès aux ressources d’Isogeo en lecture seule et est valide pendant 1 heure.
Voir aussi le tutoriel du site auth0.com
Exemples
Requête
cUrl
En utilisant cURL sur Windows (Powershell) :
.\curl.exe --data "grant_type=client_credentials" <# on passe le type d'authentification en paramètre d'URL #> `
-u '{client_id}:{client_secret}' <# la chaîne est automatiquement encodée en Base64 par cURL #> `
--url https://id.api.isogeo.com/oauth/token <# url cible #> `
-X POST <# superflu mais plus lisible #> `
--header 'content-type: application/x-www-form-urlencoded' <# superflu mais plus lisible #> `
--verbose <# requête détaillée #> `
--include <# réponse détaillée #>
Python
Avec le package addditionnel requests
:
# -*- coding: UTF-8 -*-
import requests
# query string parameters
payload = {"grant_type": "client_credentials"}
# request
rq_auth = requests.post("https://id.api.isogeo.com/oauth/token",
auth=(client_id, client_secret),
data=payload)
print(rq_auth.json())
Astuce : utiliser le package officiel Isogeo Python SDK qui facilite grandement l'utilisation de l'API avec Python.
Structure de l'access token renvoyé
{
"access_token": "LoremipsumdolorsitametconsecteturadipiscingelitDonecmaurismaurisvariusacdictumvelviverrainvelitProinidvenenatisipsumutlaciniajustoFusceidexeratDuisutlectusinelitvehiculaconsequatvitaeacnullaDonecnibhnibhtristiqueatenimaliquamcursusultricesvelitQuisquepulvinarurnaveldictumefficiturvelitliberomollisduinecpulvinarliguladoloratquamSedtinciduntnequesitametvolutpat",
"token_type": "bearer",
"expires_in": 3599
}