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à.
Autenticazione delle richieste: utilizzo dell'intestazione di autorizzazione (AWS Signature (versione 4)
Argomenti
Panoramica di
L'utilizzo dell'Authorizationintestazione HTTP è il metodo più comune per fornire informazioni di autenticazione. Ad eccezione delle richieste POST e delle richieste firmate utilizzando parametri di query, tutte le operazioni di Amazon S3 utilizzano l'intestazione della Authorization richiesta per fornire informazioni di autenticazione.
Di seguito è riportato un esempio del valore per l'intestazione Authorization. Le interruzioni di riga vengono aggiunte a questo esempio solo per migliorare la leggibilità.
Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20130524/us-east-1/s3/aws4_request, SignedHeaders=host;range;x-amz-date, Signature=fe5f80f77d5fa3beca038a248ff027d0445342fe2855ddc963176630326f1024
La tabella seguente descrive i vari componenti del valore dell'Authorizationintestazione nell'esempio precedente:
| Componente | Description |
|---|---|
AWS4-HMAC-SHA256 |
L'algoritmo utilizzato per calcolare la firma. È necessario fornire questo valore quando si utilizza AWS Signature Version 4 per l'autenticazione. La stringa specifica AWS Signature Version 4 ( |
Credential |
L'ID della chiave di accesso e le informazioni sull'ambito, che includono la data, la regione e il servizio utilizzati per calcolare la firma. Questa stringa ha il seguente formato:
Dove:
|
SignedHeaders |
Un elenco separato da punto e virgola delle intestazioni di richiesta che hai utilizzato per il calcolo
|
Signature |
La firma a 256 bit espressa come 64 caratteri esadecimali minuscoli. Ad esempio: Tieni presente che i calcoli della firma variano a seconda dell'opzione scelta per trasferire il payload. |
I calcoli delle firme variano a seconda del metodo scelto per trasferire il payload della richiesta. S3 supporta le seguenti opzioni:
-
Trasferisci il payload in un unico blocco: in questo caso, sono disponibili le seguenti opzioni di calcolo della firma:
-
Opzione payload firmato: puoi facoltativamente calcolare l'intero checksum del payload e includerlo nel calcolo della firma. Ciò fornisce una maggiore sicurezza, ma è necessario leggere il payload due volte o memorizzarlo nel buffer.
Ad esempio, per caricare un file, è necessario prima leggere il file per calcolare un hash del payload per il calcolo della firma e nuovamente per la trasmissione quando si crea la richiesta. Per payload più piccoli, questo approccio potrebbe essere preferibile. Tuttavia, per file di grandi dimensioni, leggere il file due volte può essere inefficiente, quindi potresti voler caricare i dati in blocchi.
Ti consigliamo di includere il checksum del payload per una maggiore sicurezza.
-
Opzione payload non firmato: non includere il checksum del payload nel calcolo della firma.
Per istruzioni dettagliate sul calcolo della firma e sulla creazione del valore dell'intestazione di autorizzazione, vedere. Calcolo delle firme per l'intestazione di autorizzazione: trasferimento del payload in un unico blocco (AWS Signature (versione 4)
-
-
Trasferisci il payload in più blocchi (caricamento in blocchi): in questo caso trasferisci il payload in blocchi. Puoi trasferire un payload in blocchi indipendentemente dalle dimensioni del payload.
Puoi suddividere il carico utile in blocchi. Questi possono essere blocchi di dimensioni fisse o variabili. Caricando i dati in blocchi, eviti di leggere l'intero payload per calcolare la firma. Invece, per il primo blocco, si calcola una firma iniziale che utilizza solo le intestazioni della richiesta. Il secondo blocco contiene la firma del primo blocco e ogni blocco successivo contiene la firma del blocco che lo precede. Al termine del caricamento, invii un blocco finale con 0 byte di dati che contiene la firma dell'ultimo blocco del payload. Per ulteriori informazioni, consulta Calcoli della firma per l'intestazione dell'autorizzazione: trasferimento del payload in più blocchi (caricamento in blocchi) (AWS Signature (versione 4).
Quando firmi le tue richieste, puoi utilizzare AWS Signature Version 4 o AWS Signature Version 4A. La differenza fondamentale tra le due versioni è determinata dalla modalità di calcolo della firma. Con AWS la versione 4A di Signature, la firma non include Region-specific informazioni e viene calcolata utilizzando l'AWS4-ECDSA-P256-SHA256algoritmo.
Oltre a queste opzioni, hai la possibilità di includere un rimorchio nella tua richiesta. Per includere un trailer nella tua richiesta, devi specificarlo nell'intestazione impostando x-amz-content-sha256 il valore appropriato. Se utilizzi un'intestazione finale, devi includere x-amz-trailer nell'intestazione e specificare i nomi delle intestazioni finali come stringa in un elenco separato da virgole. Tutte le intestazioni finali vengono scritte dopo il blocco finale. Se stai caricando i dati in più blocchi, devi inviare un blocco finale con 0 byte di dati prima di inviare l'intestazione finale.
Quando invii una richiesta, devi indicare ad Amazon S3 quale delle opzioni precedenti hai scelto nel calcolo della firma, aggiungendo l'intestazione con uno dei seguenti valori: x-amz-content-sha256
| Valore intestazione | Description |
|---|---|
|
Valore effettivo del checksum del payload |
Questo valore è il checksum effettivo dell'oggetto ed è possibile solo quando si caricano i dati in un unico blocco. |
|
UNSIGNED-PAYLOAD |
Usalo quando carichi l'oggetto come un singolo blocco non firmato. |
|
STREAMING-UNSIGNED-PAYLOAD-TRAILER |
Usalo quando invii un payload non firmato su più blocchi. In questo caso hai anche un'intestazione finale dopo il caricamento del blocco. |
|
STREAMING-AWS4-HMAC-SHA256-PAYLOAD |
Usalo quando invii un payload su più blocchi e i blocchi vengono firmati utilizzando. |
|
STREAMING-AWS4-HMAC-SHA256-PAYLOAD-TRAILER |
Usalo quando invii un payload su più blocchi e i blocchi vengono firmati utilizzando. |
|
STREAMING-AWS4-ECDSA-P256-SHA256-PAYLOAD |
Usalo quando invii un payload su più blocchi e i blocchi vengono firmati utilizzando. |
|
STREAMING-AWS4-ECDSA-P256-SHA256-PAYLOAD-TRAILER |
Usalo quando invii un payload su più blocchi e i blocchi vengono firmati utilizzando. |
Dopo aver ricevuto la richiesta, Amazon S3 ricrea la stringa da firmare utilizzando le informazioni nell'intestazione e nell'intestazione. Authorization date Quindi verifica con il servizio di autenticazione che le firme corrispondano. La data della richiesta può essere specificata utilizzando l'HTTP Date o l'x-amz-dateintestazione. Se sono presenti entrambe le intestazioni, ha la x-amz-date precedenza.
Se le firme corrispondono, Amazon S3 elabora la tua richiesta; in caso contrario, la richiesta non andrà a buon fine.
Per ulteriori informazioni, consulta i seguenti argomenti:
Calcoli delle firme per le intestazioni finali (caricamenti in blocchi) (AWS Signature (versione 4)