2014-06-11 4 views
0

Je vais vous montrer ma demande de signature.Erreur: Les signatures ne correspondent qu'une seule fois dans la demande d'API EC2

https://ec2.eu-west-1.amazonaws.com?AWSAccessKeyId=THISISFAKEIDD 
&Action=AuthorizeSecurityGroupIngress 
&GroupId=sg-blahblah 
&IpPermissions.1.FromPort=7264 
&IpPermissions.1.IpProtocol=ani 
&IpPermissions.1.IpRanges.1.CidrIp=272.64.292.200%2F32 
&IpPermissions.1.ToPort=7264 
&SignatureMethod=HmacSHA256 
&SignatureVersion=2 
&Timestamp=2014-06-10T05%3A25%3A10Z 
&Version=2014-05-01 
&Signature=FZgxzY0htCocacolaX4PXf0uJjnwmayhemDavkwCUw= 

Signature a été générée & cette demande a été en mesure d'ajouter mon adresse IP (272.64.292.200) avec succès dans le groupe de sécurité (sg-blahblah). Donc, cela signifie que cette demande est correcte & il n'y a pas d'erreur dans mon code pour générer la signature.

OK. Maintenant, lorsque j'essaie d'ajouter une autre adresse IP au même groupe en utilisant la même demande de signature avec un paramètre d'adresse IP différent & Horodatage, une nouvelle signature est générée. Mais je ne suis pas en mesure de l'ajouter au groupe de sécurité. La signature ne correspond pas. La signature calculée ne correspond pas est affichée.

Pourquoi est-ce le cas? J'utilise l'heure UTC. Si ma demande était incorrecte, comment ai-je pu ajouter l'adresse IP à la première place? Ou, est-ce une erreur du côté serveur de EC2 ??

+0

Notez que parfois la signature a des caractères qui nécessitent un codage d'URL. Cela peut faire fonctionner certaines demandes, et d'autres pas. – BraveNewCurrency

+0

Quels caractères dois-je encoder ??? Je pense que j'ai encodé l'URL. @BraveNewCurrency –

+1

Votre encodage d'URL n'est pas correct. C'est encoder "/" et ":" dans le paramètre de requête (pas nécessaire). Parfois le "=" à la fin de la signature doit être encodé (même si la norme ne le dit pas). http://blog.lunatech.com/2009/02/03/what-every-web-developer-must-know-about-url-encoding – BraveNewCurrency

Répondre

1

On dirait que vous avez fait du codage url, mais vous avez manqué une chose ... la valeur de la signature.

&Signature=FZgxzY0htCocacolaX4PXf0uJjnwmayhemDavkwCUw= (incorrect) 
&Signature=FZgxzY0htCocacolaX4PXf0uJjnwmayhemDavkwCUw%3D (correct) 

Si vous urlencode cette valeur, ce devrait être ce qui vous manque. Si l'un des codes =+/ n'est pas codé dans la signature, il sera rompu.

Questions connexes