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.
Calcul de la signature HMAC-SHA pour Amazon SWF
Chaque demande envoyée à Amazon SWF doit être authentifiée. LeAWSLes kits SDK signent automatiquement vos demandes et gère l'authentification par jeton. Toutefois, si vous souhaitez écrire vos propres demandes HTTP POST
, vous devez créer une valeur x-amzn-authorization
pour le contenu de l'en-tête HTTP POST Header
dans le cadre de l'authentification de votre demande.
Pour en savoir plus sur la mise en forme de ces en-têtes, consultez la section Contenu de l'en-tête HTTP. PourAWS SDK for JavaImplémentation deAWSSignature de la version 3, voir leAWSSigner.java
Création d'une signature de demande
Avant de créer une signature de demande HMAC-SHA, vous devez obtenir vos informations d'identification AWS (ID de clé d'accès et clé secrète).
Important
Vous pouvez utiliser SHA1 ou SHA256 pour signer vos demandes. Cependant, veillez à utiliser la même méthode pour tout le processus de signature. La méthode que vous choisissez doit correspondre à la valeur du nom Algorithm
de l'en-tête HTTP.
Pour créer la signature de demande
-
Créez une forme canonique des en-têtes de requête HTTP. La forme canonique de l'en-tête HTTP comprend les éléments suivants :
-
host
-
N'importe quel élément d'en-tête commençant par
x-amz-
Pour en savoir plus sur les en-têtes inclus, consultez la section Contenu de l'en-tête HTTP.
-
Pour chaque paire nom-valeur d'en-tête, convertissez le nom d'en-tête (pas la valeur d'en-tête) en minuscules.
-
Combinez les champs d'en-tête avec le même nom dans une paire « nom d'en-tête:liste de valeurs séparées par des virgules ».
x-amz-example: value1 x-amz-example: value2 => x-amz-example:value1,value2
Pour en savoir plus, consultez la section 4.2 sur la page RFC 2616
. -
Convertissez chaque paire nom-valeur d'en-tête en chaîne au format
headerName:headerValue
. Supprimez les espaces de début et de fin des valeursheaderName
etheaderValue
, et n'utilisez aucun espace de chaque côté des deux points.x-amz-example1:value1,value2 x-amz-example2:value3
-
Insérez une nouvelle ligne (
U+000A
) après chaque chaîne convertie, y compris la dernière chaîne. -
Triez la collection de chaînes converties dans l'ordre alphabétique par nom d'en-tête.
-
-
Créez une valeur de chaîne de connexion qui comprend les éléments suivants :
-
Line
1
: Méthode HTTP (POST
), suivi d'une nouvelle ligne. -
Line
2
: L'URI de la demande (/
), suivi d'une nouvelle ligne. -
Line
3
: Une chaîne vide suivie d'une nouvelle ligne.Note
En règle générale, la chaîne de requête apparaît ici, mais Amazon SWF n'utilise pas de chaîne de requête.
-
LINES
4–n
: Ligne représentant les en-têtes de demandes canoniques calculés à l'étape 1, suivie d'une nouvelle ligne. Cette nouvelle ligne crée une ligne vide entre les en-têtes et le corps de la demande HTTP. Pour plus d'informations, consultez RFC 2616. -
Le corps de la demande, non suivie d'une nouvelle ligne.
-
-
Calculez le hachage SHA256 ou SHA1 de la valeur de chaîne de connexion. Utilisez la même méthode SHA tout au long du processus.
-
Calculez et encodez au format Base64 la signature HMAC-SHA via la valeur de hachage SHA256 ou SHA1 (selon la méthode que vous avez utilisée) de la valeur résultante de l'étape précédente et la clé d'accès secrète temporaire fournie par leAWSSecurity Token Service via
GetSessionToken
Action d'API.Note
Amazon SWF s'attend à un signe égal (
=
) à la fin de la valeur HMAC-SHA codée en Base64. Si votre routine d'encodage Base64 n'inclut pas l'ajout de signes égal, insérez-en un à la fin de la valeur.Pour plus d'informations sur l'utilisation d'informations d'identification de sécurité temporaires avec Amazon SWF et d'autresAWSservices, voirAWSServices qui fonctionnent avec IAMdans leIAM User Guide.
-
Placez la valeur obtenue comme nom de la
Signature
Nom dans lex-amzn-authorization
en-tête de la requête HTTP envoyée à Amazon SWF. -
Amazon SWF vérifie la demande et exécute l'opération spécifiée.