Geoplateforme / geoplateforme.github.io

Site d'accueil de la documentation Géoplateforme
https://geoplateforme.github.io/
6 stars 1 forks source link

Connexion à l'API Entrepôt via Python #29

Closed ARainaud closed 6 months ago

ARainaud commented 7 months ago

Vos questions

Tutoriel concerné

https://geoplateforme.github.io/tutoriels/vecteur/base/livraison/

Description

Lorsque je me connecte via mon navigateur web à l'url https://data.geopf.fr/api/users/me j'obtiens bien les information sur mon compte au format JSON avec, entre autre, un id pour le datastore qui m'a été assigné.

Cependant, lorsque j'utilise l'API avec python en suivant le tutoriel ci-dessus, notamment la requête POST /datastores/{datastore}/uploads avec mon id de datastore et ce corps de requête { "description": "Températures (K) en France en Août 1950-2020", "name": "Températures Août France", "type": "VECTOR", "srs": "EPSG:4326" }

J'obtiens un code réponse 200 et une page html correspondant certainement à cette page : https://sso.geopf.fr/realms/geoplateforme/protocol/openid-connect/auth?client_id=gpf-apim&state=0ea5072ccc7ce8fae28f07f8801daced&nonce=092392a41f965730bf948d70d2cbb658&redirect_uri=https%3A%2F%2Fdata.geopf.fr%2Fapi%2Fusers%2Fme%2F&scope=openid&response_type=code

Status code: 200 Printing Entire Post Request <!DOCTYPE html>

Se connecter à Géoplateforme " Je me demande alors, comment puis-je me connecter à l’API depuis Python pour pouvoir réaliser le tutoriel mentionné ci-dessus. Est-ce qu’il y a une étape que je manque ? Sinon, faut-il utiliser un autre outil que Python ? Merci d'avance pour votre aide, Bonne journée
Dolite commented 7 months ago

Utilisez-vous la librairie sdk_entrepot_gpf ou une librairie standard pour faire des requêtes HTTP ? Le redirect pour l'authentification ne semble pas être correctement interprété. Au final, les requêtes API Entrepôt doivent être envoyées avec un token valide (récupéré sur le SSO géoplateforme). C'est sur ce workflow d'authentification que l'utilisation de la librairie dédiée peut faciliter les choses.

ARainaud commented 7 months ago

J'utilise une librairie standard pour les requêtes HTTP : urllib.request. Je n'avais pas connaissance de la librairie sdk_entrepot_gdf. Je vais essayer et je vous fais un retour. Merci !

Dolite commented 7 months ago

Les sites de documentation viennent d'être mis à jour. Le lien vers la documentation du SDK est désormais dans le menu du site des tutoriels : https://geoplateforme.github.io/sdk-entrepot/

Une recherche par étiquette a également été mise en place : https://geoplateforme.github.io/tutoriels/production/tags/

ARainaud commented 6 months ago

Merci pour ces éléments ! J'ai donc crée un fichier config.ini, cependant je ne suis pas sûr de comprendre quelle valeur mettre en face du "client_id". En effet, la définition "votre groupe d'appartenance" n'est pas très claire pour moi. J'ai testé différentes combinaisons en renseignant par exemple le nom de ma communauté, le nom technique de ma communauté, un _id de communauté se trouvant dans la réponse à https://data.geopf.fr/api/users/me sans succès.

Pouvez-vous m'indiquer ce qu'il faut renseigner pour ce 'client_id' et où est ce que je peux le trouver svp ?

Dolite commented 6 months ago

Voici un exemple de section store_authentification dans config.ini :

[store_authentification]
http_proxy=<si besoin>
https_proxy=<si besoin>
token_url=https://sso.geopf.fr/realms/geoplateforme/protocol/openid-connect/token
# Groupe d’appartenance
client_id=gpf-warehouse
client_secret=BK2G7Vvkn7UDc8cV7edbCnHdYminWVw2
# Votre login
login=<login>
# Votre mot de passe
password = <mdp>
# Si double authentification, mettre la clé ici, sans les espaces, sans quote autour
totp_key = SJWAJEVPMKQBXZ27WIQVT3RRT74VHBCD

Il faut qu'on améliore la documentation sur cette partie

ARainaud commented 6 months ago

Merci, ce "gpf-warehouse", où puis-je le trouver ? il n'est pas dans la réponse à https://data.geopf.fr/api/users/me

Dolite commented 6 months ago

gpf-warehouse est le nom du client d'authentification (permettant à une application de demander un token au nom d'une utilisateur) utilisé entre autre par l'interface swagger ici : https://data.geopf.fr/api/swagger-ui/index.html .

ARainaud commented 6 months ago

Le problème ne venait pas du 'client_id' mais d'une vérification SSL probablement bloquée par le proxy sur mon réseau.