Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Paramètres Query (Requête)
Ces demandes basées sur Query HTTP sont des demandes HTTP qui utilisent le verbe HTTP GET ou POST et un paramètre Query appelé Action
.
Chaque demande Query doit inclure certains paramètres communs pour gérer l'authentification et la sélection d'une action.
Certaines actions demandent des listes de paramètres. Ces listes sont spécifiées en utilisant la notation param.
. Les valeurs de n
n
sont des nombres entiers commençant à 1.
Authentification de demande Query
Vous pouvez envoyer uniquement des demandes Query via HTTPS, et vous devez inclure une signature dans chaque demande Query. Cette section explique comment créer la signature. La méthode décrite dans la procédure suivante est appelée signature version 4.
Voici les étapes de base utilisées pour authentifier les demandes à AWS. Cela suppose que vous êtes inscrit AWS et que vous possédez un identifiant de clé d'accès et une clé d'accès secrète.
Processus d'authentification des requêtes
-
L'expéditeur crée une demande à. AWS
-
L'expéditeur calcule la signature de la demande, un hachage avec clé pour un code HMAC (code d'authentification d'une empreinte cryptographique de message avec clé) utilisant une fonction de hachage SHA-1, comme défini dans la prochaine section de cette rubrique.
-
L'expéditeur de la demande envoie les données de la demande, la signature et l'identifiant de la clé d'accès (l'identifiant de la clé d'accès secrète utilisée) à. AWS
-
AWS utilise l'ID de clé d'accès pour rechercher la clé d'accès secrète.
-
AWS génère une signature à partir des données de la demande et de la clé d'accès secrète en utilisant le même algorithme que celui utilisé pour calculer la signature dans la demande.
-
Si la signature correspond, la demande est considérée comme authentique. Si la comparaison échoue, la demande est rejetée, et AWS renvoie une réponse d'erreur.
Note
Si une demande contient un paramètre Timestamp
, la signature calculée pour la demande expire 15 minutes après sa valeur.
Si une demande contient un paramètre Expires
, la signature expire au moment spécifié par le paramètre Expires
.
Pour calculer la signature de la demande
-
Créez la chaîne de requête de base que vous utiliserez à une étape ultérieure de la procédure :
-
Triez les composants de la chaîne de requête UTF-8 par nom de paramètre disposé selon l’ordre naturel des octets. Les paramètres peuvent provenir de l'URI GET ou du corps du POST (lorsque Content-Type est x-www-form-urlencoded application/).
-
URL-encodez le nom et les valeurs du paramètre en appliquant les règles suivantes :
-
Ne pas URL-encoder les caractères que le RFC définit comme autorisés. Les caractères autorisés sont A à Z, a à z, 0 à 9, le trait d'union ( - ), le trait de soulignement ( _ ), le point final ( . ) et le tilde ( ~ ).
-
%-encodez tous les autres caractères avec %XY, où X et Y représentent les caractères hexadécimaux 0 à 9 et les lettres majuscules A à F.
-
%-encodez les caractères UTF-8 étendus dans la forme %XY%ZA....
-
%-encodez le caractère espace en %20 (et non pas en +, comme le font les schémas d'encodage courants).
-
-
Utilisez le symbole équivalent ( = ) (ASCII caractère 61) pour séparer les noms de paramètres codés de leurs valeurs codées, même si la valeur du paramètre est vide.
-
Séparez les paires nom-valeur en insérant une esperluette ( & ) (code ASCII 38).
-
-
Créez la chaîne de connexion en appliquant la grammaire suivante (le « \n » représente une nouvelle ligne ASCII).
StringToSign = HTTPVerb + "\n" + ValueOfHostHeaderInLowercase + "\n" + HTTPRequestURI + "\n" + CanonicalizedQueryString <from the preceding step>
Le composant HTTPRequest URI est le composant du chemin HTTP absolu de l'URI jusqu'à la chaîne de requête, mais non comprise. Si l' HTTPRequestURI est vide, utilisez une barre oblique (/).
-
Calculez un HMAC conforme à la RFC 2104 avec la chaîne que vous venez de créer, votre clé d'accès secrète comme clé et/ou SHA1 comme algorithme de SHA256 hachage.
Pour plus d'informations, consultez https://www.ietf. org/rfc/rfc
2104.txt. -
Convertissez la valeur qui est générée en Base64.
-
Incluez la valeur comme la valeur du paramètre
Signature
dans la demande.
Par exemple, voici un exemple de demande (sauts de ligne ajoutés pour plus de clarté).
https://memory-db.us-east-1.amazonaws.com/ ?Action=DescribeClusters &ClusterName=myCluster &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2021-01-01
Pour la chaîne de requête précédente, vous devez calculer la signature HMAC sur la chaîne suivante.
GET\n memory-db.amazonaws.com\n Action=DescribeClusters &ClusterName=myCluster &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2021-01-01 &X-Amz-Algorithm=Amazon4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE%2F20140523%2Fus-east-1%2Fmemorydb%2Faws4_request &X-Amz-Date=20210801T223649Z &X-Amz-SignedHeaders=content-type%3Bhost%3Buser-agent%3Bx-amz-content-sha256%3Bx-amz-date content-type: host:memory-db.us-east-1.amazonaws.com user-agent:ServicesAPICommand_Client x-amz-content-sha256: x-amz-date:
Le résultat est la demande signée suivante.
https://memory-db.us-east-1.amazonaws.com/ ?Action=DescribeClusters &ClusterName=myCluster &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2021-01-01 &X-Amz-Algorithm=Amazon4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/20141201/us-east-1/memorydb/aws4_request &X-Amz-Date=20210801T223649Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date &X-Amz-Signature=2877960fced9040b41b4feaca835fd5cfeb9264f768e6a0236c9143f915ffa56
Pour des informations détaillées sur le processus de signature et le calcul de la signature de la demande, consultez la rubrique Processus de signature de la version 4 de Signature et ses sous-rubriques.