Calcul de la signature HMAC-SHA pour Amazon SWF - Amazon Simple Workflow Service

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.javaclasse.

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

  1. 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.

    1. 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.

    2. 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.

    3. 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 valeurs headerName et headerValue, et n'utilisez aucun espace de chaque côté des deux points.

      x-amz-example1:value1,value2 x-amz-example2:value3
    4. Insérez une nouvelle ligne (U+000A) après chaque chaîne convertie, y compris la dernière chaîne.

    5. Triez la collection de chaînes converties dans l'ordre alphabétique par nom d'en-tête.

  2. Créez une valeur de chaîne de connexion qui comprend les éléments suivants :

    • Line1 : Méthode HTTP (POST), suivi d'une nouvelle ligne.

    • Line2 : L'URI de la demande (/), suivi d'une nouvelle ligne.

    • Line3 : 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.

    • LINES4–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.

  3. 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.

  4. 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 viaGetSessionTokenAction 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.

  5. Placez la valeur obtenue comme nom de laSignatureNom dans lex-amzn-authorizationen-tête de la requête HTTP envoyée à Amazon SWF.

  6. Amazon SWF vérifie la demande et exécute l'opération spécifiée.