|
Débuté par Chris, 02 sep. 2014 16:22 - 8 réponses |
| |
| | | |
|
| |
Posté le 02 septembre 2014 - 16:22 |
bonjour, j'ai différents soucis avec Amazon MWS, voici le 1er d'entre eux... Je suis censé convertir en base64 HMAC, par exemple la string suivante :
eedda4de2eaf8eb65434cc5cbc476c8fb98498ee3f4e19be4493d95efa2b9c3a
Le résultat, selon le scratchpad d'Amazon doit être :
7t2k3i6vjrZUNMxcvEdsj7mEmO4/Thm+RJPZXvornDo=
Or rien de tel, lors de mes différents essais, j'obtiens toujours quelque chose de différent. mon code (mais j'ai essayé différentes variantes, idem) :
sResultat64 est une chaîne= Crypte("eedda4de2eaf8eb65434cc5cbc476c8fb98498ee3f4e19be4493d95efa2b9c3a","",encodeBASE64)
Quelque chose m'échappe complétement visiblement...
Merci de votre aide
Christophe |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 505 messages Popularité : +18 (18 votes) |
|
Posté le 02 septembre 2014 - 23:21 |
Bonjour Chris,
Dans ton code il manque le hachage, comme ceci par exemple:
sTexte est une chaîne = "eedda4de2eaf8eb65434cc5cbc476c8fb98498ee3f4e19be4493d95efa2b9c3a" sHash est une chaîne = HashChaîne(HA_SHA_256,sTexte) sResultat64 est une chaîne= Crypte(sHash,"",crypteAucun+compresseAucun,encodeBASE64)
(ou encore HA_SHA_160 pour HMAC-SHA1)
Mais impossible de t'aider plus avant car apparemment tu ne donnes pas tous les éléments.
-- Pour me contacter par courrier électronique, cliquez sur le lien ci-dessous (protection antispam): http://cerbermail.com/… |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 505 messages Popularité : +18 (18 votes) |
|
Posté le 02 septembre 2014 - 23:47 |
En fait, le hachage avec algorithme HMAC suppose d'utiliser une clé.
http://doc.pcsoft.fr/fr-FR/index.awp?1000007111
Calculer un hash avec authentification de message (algorithme HMAC) <Résultat> = HashChaîne(<Type d'algorithme> , <Chaîne> , <Clé secrète>)
le paramètre <Type d'algorithme> qui t'intéresse est probablement HA_HMAC_SHA_256 ou HA_HMAC_SHA_160.
-- Pour me contacter par courrier électronique, cliquez sur le lien ci-dessous (protection antispam): http://cerbermail.com/… |
| |
| |
| | | |
|
| | |
| |
Posté le 03 septembre 2014 - 09:57 |
Eh bien en fait, la 1ère chaine dont je parlais est le hachage d'une autre chaine (c'est mon 2nd problème ca, on y reviendra peut être...), mais déjà j'essaye de résoudre le 1er problème (oui je pars de la fin en fait)
du coup, le hashage SHA 256 HMAC de ma chaine initiale (requête POST avec paramètres) donne (avec la clé secrète) :
eedda4de2eaf8eb65434cc5cbc476c8fb98498ee3f4e19be4493d95efa2b9c3a
Selon les procédures Amazon, il faut convertir ce résultat en base 64. Et là, je rencontre déjà un os... Impossible d'obtenir le même résultat qu'eux... Je ne pense pas qu'un autre hashage soit nécessaire pour la base 64 ? si ???
j'ai fait d'autres essais, rien n'y fait |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 505 messages Popularité : +18 (18 votes) |
|
Posté le 03 septembre 2014 - 10:57 |
Bonjour, Chris a écrit :
du coup, le hashage SHA 256 HMAC de ma chaine initiale (requête POST avec paramètres) donne (avec la clé secrète) :
eedda4de2eaf8eb65434cc5cbc476c8fb98498ee3f4e19be4493d95efa2b9c3a
Ici tu nous donnes une chaîne de caractères qui est la représentation hexadécimale du hash. Alors c'est certain que tu n'arriveras pas au bon résultat si tu appliques l'encodage en base 64 à cette chaîne !
En transpirant pour retrouver la véritable valeur binaire du hash, j'ai pu vérifier que le résultat est correct.
sHashHexa est une chaîne = "eedda4de2eaf8eb65434cc5cbc476c8fb98498ee3f4e19be4493d95efa2b9c3a" bufHashBinaire est un Buffer sur 32 nIndex, nPos est un entier
nPos = 1 POUR nIndex = 1 _A_ 32 bufHashBinaire[[nIndex]] = Val(sHashHexa[[nPos sur 2]], "x") nPos += 2 FIN
sResultat64 est une chaîne= Crypte(bufHashBinaire,"",crypteAucun+compresseAucun,encodeBASE64)
De toute évidence, quelque chose t'a échappé. Comment en es-tu arrivé à utiliser la représentation hexadécimale !?
-- Pour me contacter par courrier électronique, cliquez sur le lien ci-dessous (protection antispam): http://cerbermail.com/… |
| |
| |
| | | |
|
| | |
| |
Posté le 03 septembre 2014 - 16:22 |
Mais ca répond EXACTEMENT à mon problème !!! une sacrée épine dans le pied en moins ! Merci =JBO= !!!!!
Mais comme prévu, celà ne répond qu'en partie à mes problèmes, car en fait, je n'arrive pas à obtenir cette même chaine :
eedda4de2eaf8eb65434cc5cbc476c8fb98498ee3f4e19be4493d95efa2b9c3a
avec la requête :
POST mws.amazonservices.fr /Products/2011-10-01 AWSAccessKeyId=XXXXXXXXXXXXXX&Action=GetCompetitivePricingForSKU&MarketplaceId=XXXXXXXXXXXXX&SellerId=XXXXXXXXXXXXXXX&SellerSKUList.SellerSKU.1=XXXXXXXXXXXXXXX&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2014-09-02T14%3A16%3A01Z&Version=2011-10-01
pour celà, j'ai fait de nombreux essais, tous négatifs...
sClésecrete est une chaîne="ZZZZZZZZZZZZZZZZZZZZZZZ" sTexte est une chaîne = "POST"+"mws.amazonservices.fr"+"/Products/2011-10-01"+"AWSAccessKeyId=XXXXXXXXXXXXXXX&Action=GetCompetitivePricingForSKU&MarketplaceId=XXXXXXXXXXXX&SellerId=XXXXXXXXXXXXXXXX&SellerSKUList.SellerSKU.1=XXXXXXXXXXXXXXX&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2014-09-02T14%3A16%3A01Z&Version=2011-10-01" sHash est une chaîne = HashChaîne(HA_HMAC_SHA_256 ,sTexte,sClésecrete)
J'ai essayé cette chaine avec des "+RC+" à la place de simples "+", idem... j'ai essayé pas mal d'autres choses dans le même genre, jamais trouvé la bonne... |
| |
| |
| | | |
|
| | |
| |
Posté le 03 septembre 2014 - 21:45 |
Je me réponds, car j'ai finalement trouvé ! Si ca peut servir à d'autres, tant mieux
sresultat64 est une chaîne sClésecrete est une chaîne="XXXXXXXXXXXXXX"
sTexte est une chaîne = "POST"+Caract(10)+"mws.amazonservices.fr"+Caract(10)+"/Products/2011-10-01"+Caract(10)+"AWSAccessKeyId=XXXXXXXXXXXXXX&Action=GetCompetitivePricingForSKU&MarketplaceId=XXXXXXXXXXXXXX&SellerId=XXXXXXXXXXXXXX&SellerSKUList.SellerSKU.1=XXXXXXXXXXXXXX&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2014-09-02T14%3A16%3A01Z&Version=2011-10-01" sHash est une chaîne = HashChaîne(HA_HMAC_SHA_256 ,sTexte,sClésecrete)
sresultat64= Crypte(sHash,"",crypteAucun+compresseAucun,encodeBASE64)
|
| |
| |
| | | |
|
| | |
| |
Membre enregistré 36 messages Popularité : +1 (1 vote) |
|
Posté le 09 juillet 2018 - 11:04 |
Bonjour, je ressort un peu ce post du fond car je rencontre des soucis pour travailler avec l'API mws d'amazon!
j'arrive bien à générer une signature identique à celle que j'ai en faisant des test sur le Scratchpad d'amazon pour une requète donnée.
Mais lorsque je veux envoyer ma requête en utilisant httpenvoieformulaire ou un httprequete et en passant les param dans la requête je reçois une erreur signature invalide pour httpenvoieformulaire ou Either Action or Operation query parameter must be present via httprequete...
avez vous rencontré des soucis pour l'envoi de vos requêtes ou y a t il des subtilitées particulières... comme le user agent, le header etc...
Merci d'avance parce que là je m'y casse la tête depuis 3 jours sans résultats! |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 36 messages Popularité : +1 (1 vote) |
|
Posté le 09 juillet 2018 - 13:32 |
Chris a écrit :
Je me réponds, car j'ai finalement trouvé ! Si ca peut servir à d'autres, tant mieux
sresultat64 est une chaîne sClésecrete est une chaîne="XXXXXXXXXXXXXX"
// bon à savoir "/n" est = caract(10)
sTexte est une chaîne = "POST"+Caract(10)+"mws.amazonservices.fr"+Caract(10)+"/Products/2011-10-01"+Caract(10)+"AWSAccessKeyId=XXXXXXXXXXXXXX&Action=GetCompetitivePricingForSKU&MarketplaceId=XXXXXXXXXXXXXX&SellerId=XXXXXXXXXXXXXX&SellerSKUList.SellerSKU.1=XXXXXXXXXXXXXX&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2014-09-02T14%3A16%3A01Z&Version=2011-10-01" sHash est une chaîne = HashChaîne(HA_HMAC_SHA_256 ,sTexte,sClésecrete) // HMAC-SHA256
// et c'est là qu'en fait, sHash donne un résultat dans un format que je n'attendais pas, mais une fois le traitement suivant (base64) effectué...
sresultat64= Crypte(sHash,"",crypteAucun+compresseAucun,encodeBASE64)
// ca marche !! le résultat attendu est là !
Bonjour,
pouvez-vous me dire si vous utilisez les fonctions de création et d'envoi de formulaire ou httprequete pour envoyer la requête?
Merci d'avanceMessage modifié, 09 juillet 2018 - 13:32 |
| |
| |
| | | |
|
| | | | |
| | |
|