Bug #6446
Étendre l'action d'appel à un webservice
0%
Description
L'action de webservice est insuffisante pour les besoins de l'API de paiement; je verrais au moins les ajouts suivants :
- possibilité de signer l'URL
- inclure dans le json transmis l'url du formdata
- peut-être en ajoutant un champ (de type WidgetDict) "paramètres supplémentaires" (?)
Fichiers
Révisions associées
workflow: make it possible to sign webservice calls (#6446)
The sign_* functions have been imported from cmsplugin_blurp.
workflow: make it possible to sign webservice calls (#6446)
The sign_* functions have been imported from cmsplugin_blurp.
workflow: make it possible to sign webservice calls (#6446)
The sign_* functions have been imported from cmsplugin_blurp.
workflow: make it possible to sign webservice calls (#6446)
The sign_* functions have been imported from cmsplugin_blurp.
workflow: make it possible to sign webservice calls (#6446)
The sign_* functions have been imported from cmsplugin_blurp.
Historique
Mis à jour par Thomas Noël il y a environ 9 ans
(et là je me dis, mettre tout cette config au fond d'actions de workflow, ça me plait de moins en moins...)
Mis à jour par Frédéric Péters il y a environ 9 ans
Je ne comprends pas. Cela étant une autre option que je vois c'est de maximiser la configuration "par défaut" (i.e. signer l'url, y mettre l'info de l'utilisateur, ajouter des données au json, etc.).
Mis à jour par Thomas Noël il y a environ 9 ans
Juste ce que je pensais, mais que j'aurais dû dire ailleurs et autrement : on devrait configurer les appels webservices ailleurs (des objets du paramétrages, genre "Création d'un item dans le panier du portail citoyen", configuré une fois pour toute) ; et y faire référence dans les actions de workflow.
Ceci étant, en attendant, si on maximise la configuration "par défaut", ne pas le faire pour les ws déjà existants.
Mis à jour par Thomas Noël il y a environ 9 ans
et ça : « peut-être en ajoutant un champ (de type WidgetDict) "paramètres supplémentaires" (?) », j'ai pas bien compris
Mis à jour par Frédéric Péters il y a environ 9 ans
Juste ce que je pensais, mais que j'aurais dû dire ailleurs et autrement : on devrait configurer les appels webservices ailleurs (des objets du paramétrages, genre "Création d'un item dans le panier du portail citoyen", configuré une fois pour toute) ; et y faire référence dans les actions de workflow.
Ok; un niveau d'indirection supplémentaire; ça pourrait aller dans un autre ticket.
Ceci étant, en attendant, si on maximise la configuration "par défaut", ne pas le faire pour les ws déjà existants.
Le seul endroit où il y a un POST du formdata, ça doit être le cg14, non ? Ce serait vraiment sensible à l'apparition de clés supplémentaires dans le json transmis ? Et/ou dans l'URL ?
peut-être en ajoutant un champ (de type WidgetDict) "paramètres supplémentaires" (?)
Dans la configuration, avoir un widget permettant d'entrer des clés / valeurs (WidgetDict, comme dans "Règle de correspondance des attributs pour le statut administrateur"), pour avoir :
Paramètres supplémentaires | source_url | : | [form_url] | | amount | : | [form_var_amount] | <add new line>
Mis à jour par Frédéric Péters il y a environ 9 ans
- Fichier 0001-workflow-make-it-possible-to-sign-webservice-calls-6.patch 0001-workflow-make-it-possible-to-sign-webservice-calls-6.patch ajouté
- Statut changé de Nouveau à En cours
- Patch proposed changé de Non à Oui
Un premier élément pour permettre de signer l'URL, c'est le plus important; le reste on peut toujours remplir la query string avec.
Mis à jour par Thomas Noël il y a environ 9 ans
Au lieu d'un request_signature_key je pensais qu'on irait chercher une clé dans le api-secrets de site_options ? c-à-d plutôt demander une "request_signature_orig" et utiliser quelque chose comme:
key = get_publisher().get_site_option(self.request_signature_orig, 'api-secrets') sign_url(url, key)
C'est peut-être une mauvaise idée, je ne sais pas.
Mis à jour par Frédéric Péters il y a environ 9 ans
Je préfère ne pas toucher au site-options.cfg ici mais j'ai trop la flemme pour intelligemment en développer les raisons :/ (pas devoir toucher un fichier sur le fs quand on écrit un workflow, éviter une confusion entrant/sortant pour les clés du fichier)
Mis à jour par Thomas Noël il y a environ 9 ans
Heu non, mon idée était plutôt : on a déjà des clés dans le site-options, on les utilise. Uniquement en lecture, comme quand on vérifie une signature.
Mis à jour par Frédéric Péters il y a environ 9 ans
Oui, quand j'écrivais "ne pas toucher au site-options.cfg", je n'imaginais pas avoir wcs écrire dedans, mais qu'on ait à demander à l'auteur du workflow, devant appeler un ws quelconque, d'aller écrire dans le fichier.
Mis à jour par Thomas Noël il y a environ 9 ans
Ok. Actuellement je fais utiliser à Victor des ...&apikey=[bidule_key]
dans les URL d'appel, ce qui permet d'éviter à Victor de connaitre les clés, et surtout simplifie beaucoup les copies de workflow d'un site à l'autre. C'est ce comportement que je voudrais conserver.
Mis à jour par Frédéric Péters il y a environ 9 ans
Et ce patch, mais permettre au paramétrage de request_signature_key de contenir une référence, genre [bidule_key] ?
Mis à jour par Frédéric Péters il y a environ 9 ans
- Fichier 0001-workflow-make-it-possible-to-sign-webservice-calls-6.patch 0001-workflow-make-it-possible-to-sign-webservice-calls-6.patch ajouté
- Fichier 0002-tests-add-basic-testing-of-wscall-workflow.patch 0002-tests-add-basic-testing-of-wscall-workflow.patch ajouté
Voilà le patch plus des tests en bonus.
Mis à jour par Frédéric Péters il y a environ 9 ans
- Statut changé de En cours à Résolu (à déployer)
commit 5d14ce6f0ac22cec7e4f2a00fd2e10b125a7afa8 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Wed Feb 25 14:26:49 2015 +0100 tests: add basic testing of wscall workflow commit dc65fd5b7bf2551e5ba02e3cc823507a7579ce60 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Mon Feb 9 20:06:05 2015 +0100 workflow: make it possible to sign webservice calls (#6446) The sign_* functions have been imported from cmsplugin_blurp.
workflow: make it possible to sign webservice calls (#6446)
The sign_* functions have been imported from cmsplugin_blurp.