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.

"Une application de groupe déclarée sur Isogeo"
Fig. 8 : "Une application de groupe déclarée sur Isogeo"

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
}

results matching ""

    No results matching ""