Calcolare la firma HMAC-SHA per Amazon SWF - Amazon Simple Workflow Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Calcolare la firma HMAC-SHA per Amazon SWF

Ogni richiesta ad Amazon SWF deve essere autenticata. LaAWSGli SDK firmano automaticamente le richieste e gestiscono l'autenticazione basata su token. Tuttavia, se vuoi scrivere una tua richiesta HTTP POST, devi creare un valore x-amzn-authorization per i contenuti HTTP POST Header come parte dell'autenticazione della richiesta.

Per maggiori informazioni sulla formattazione delle intestazioni, consulta Contenuti nell'intestazione HTTP. Per ilAWS SDK for Javaimplementazione diAWSFirma versione 3, vedi ilAWSSigner.javaclasse.

Creazione di una firma di richiesta

Prima di creare una firma di richiesta HMAC-SHA, devi ricevere le credenziali AWS (l'ID chiave di accesso e la chiave segreta).

Importante

Per firmare le richieste puoi utilizzare il protocollo SHA1 o quello SHA256. Verifica comunque di utilizzare lo stesso metodo in tutto il processo di firma. Il metodo scelto deve corrispondere al valore del nome Algorithm nell'intestazione HTTP.

Per creare la firma di richiesta

  1. Crea un modello canonico delle intestazioni di richiesta HTTP. Il formato canonico dell'intestazione HTTP comprende quanto segue:

    • host

    • Qualunque elemento dell'intestazione che inizi con x-amz-

    Per ulteriori informazioni sulle intestazioni incluse, consulta Contenuti nell'intestazione HTTP.

    1. Per ogni coppia nome-valore dell'intestazione, converti il nome dell'intestazione (ma non il valore) in caratteri minuscoli.

    2. Crea una mappa del nome dell'intestazione con i valori separati da virgole.

      x-amz-example: value1 x-amz-example: value2 => x-amz-example:value1,value2

      Per maggiori informazioni, consulta la sezione 4.2 del protocollo RFC 2616.

    3. Per ogni coppia nome-valore dell'intestazione, converti la coppia nome-valore in una stringa nel formato headerName:headerValue. Elimina gli spazi all'inizio e alla fine del headerName e del headerValue, senza spazi ai lati dei due punti.

      x-amz-example1:value1,value2 x-amz-example2:value3
    4. Inserisci una nuova riga (U+000A) dopo ogni stringa convertita, compresa l'ultima.

    5. Disponi la raccolta delle stringhe convertite in ordine alfabetico in base al nome dell'intestazione.

  2. Crea un valore stringa di firma che includa i seguenti elementi:

    • Line (Linea)1: Metodo HTTP (POST), seguito da una nuova riga.

    • Line (Linea)2: L'URI richiesta (/), seguito da una nuova riga.

    • Line (Linea)3: Una stringa vuota seguita da una nuova riga.

      Nota

      In genere, la stringa della query compare qui, ma Amazon SWF non utilizza una stringa di query.

    • Linee4–n: La stringa che rappresenta le intestazioni di richiesta in forma canonica calcolate nella Fase 1, seguita da una nuova riga. Questa nuova riga crea una riga vuota tra le intestazioni e il corpo della richiesta HTTP. Per ulteriori informazioni, consulta il protocollo RFC 2616.

    • Il corpo della richiesta, non seguito da una nuova riga.

  3. Calcola il digest SHA256 o SHA1 del valore della stringa di firma. Utilizza lo stesso metodo SHA in tutto il processo.

  4. Calcola e codifica in base 64 la firma HMAC-SHA utilizzando un digest SHA256 o SHA1 (a seconda del metodo che hai utilizzato) del valore risultante dalla fase precedente e la secret access key provvisoria dallaAWSSecurity Token Service che utilizza laGetSessionTokenOperazione API.

    Nota

    Amazon SWF prevede un segno uguale (=) alla fine del valore HMAC-SHA codificato in base 64. Se la tua routine di codifica in base 64 non comprende l'aggiunta di segni uguale, aggiungine uno alla fine del valore.

    Per maggiori informazioni sull'utilizzo di credenziali di sicurezza temporanee con Amazon SWF e altriAWSservizi, vediAWSServizi che funzionano con IAMnellaIAM User Guide.

  5. Posiziona il valore risultante come il valore dellaSignaturenome nellax-amzn-authorizationintestazione della richiesta HTTP ad Amazon SWF.

  6. Amazon SWF verifica la richiesta ed esegue l'operazione specificata.