Résoudre les problèmes liés aux requêtes signées pour les API AWS - AWS Identity and Access Management

Résoudre les problèmes liés aux requêtes signées pour les API AWS

Lorsque vous développez du code qui crée une requête signée, vous pouvez recevoir des erreurs HTTP 403 SignatureDoesNotMatch provenant du code Services AWS que vous testez. Cette erreur signifie que la valeur de signature de votre requête HTTP AWS ne correspond pas à la signature Service AWS calculée.

Erreurs de conversion sous forme canonique

Si vous ne calculez pas correctement la demande canonique ou la chaîne de connexion, l'étape de vérification de la signature effectuée par le service échoue avec le message d’erreur suivant :

The request signature we calculated does not match the signature you provided

La réponse d'erreur comprend la demande canonique et la chaîne de caractères pour indiquer que le service a calculé. Vous pouvez comparer ces chaînes aux chaînes que vous avez calculées.

Vous pouvez également vérifier que vous n'avez pas envoyé la requête via un proxy qui modifie les en-têtes ou la requête.

Erreurs d’étendue des informations d'identification

L'étendue des informations d'identification limite la signature à une date, une région et un service spécifiques. Cette chaîne présente le format suivant :

YYYYMMDD/region/service/aws4_request
Date

Si l'étendue des informations d'identification ne spécifie pas la même date que l'en-tête x-amz-date, l'étape de vérification de la signature échoue avec le message d'erreur suivant :

Date in Credential scope does not match YYYYMMDD from ISO-8601 version of date from HTTP

Si la requête indique une date future, l'étape de vérification de la signature échoue avec le message d'erreur suivant :

Signature not yet current: date is still later than date

Si la requête a expiré, l'étape de vérification de la signature échoue avec le message d'erreur suivant :

Signature expired: date is now earlier than date
Région

Si l'étendue des informations d'identification ne spécifie pas la même Région que la requête, l'étape de vérification de la signature échoue avec le message d'erreur suivant :

Credential should be scoped to a valid Region, not region-code
Service

Si l'étendue des informations d'identification ne spécifie pas le même service que l'en-tête host, l'étape de vérification de la signature échoue avec le message d'erreur suivant :

Credential should be scoped to correct service: 'service'
Chaîne de terminaison

Si l'étendue des informations d'identification ne se termine pas par aws4_request, l'étape de vérification de la signature échoue avec le message d'erreur suivant :

Credential should be scoped with a valid terminator: 'aws4_request'

Erreurs de signature de clé

Les erreurs causées par une dérivation incorrecte de la clé de signature ou une utilisation inappropriée du chiffrement sont plus difficiles à résoudre. Après avoir vérifié que la chaîne canonique et la chaîne à signer sont correctes, vous pouvez également vérifier l'existence de l'un des problèmes suivants :

  • La clé d'accès secrète ne correspond pas à l'ID de clé d'accès que vous avez spécifiée.

  • Votre code de dérivation de clé pose problème.

Pour vérifier que la clé secrète correspond à l'ID de la clé d'accès, vous pouvez les tester avec une implémentation fonctionnelle connue. Par exemple, utilisez un SDK AWS ou AWS CLI pour envoyer une demande à AWS.