Metodi di autenticazione - AWS Identity and Access Management

Metodi di autenticazione

Importante

A meno che non si utilizzino gli SDK o la CLI di AWS, è necessario scrivere il codice per calcolare le firme che forniscono le informazioni di autenticazione nelle richieste. Il calcolo della firma in AWS Signature versione 4 può essere un'operazione complessa e consigliamo di utilizzare gli SDK o la CLI di AWS quando possibile.

Puoi esprimere le informazioni di autenticazione utilizzando uno dei seguenti metodi.

Intestazione HTTP di autorizzazione

L'intestazione Authorization HTTP è il metodo più comune per autenticare una richiesta. Tutte le operazioni del REST API (ad eccezione dei caricamenti basati su browser che utilizzano richieste POST) richiedono questa intestazione.

Gli esempi seguenti mostrano il valore dell'intestazione Authorization per SigV4 e SigV4a. Le interruzioni di riga vengono aggiunte a questo esempio solo per migliorare la leggibilità. Nel tuo codice, l'intestazione deve essere una stringa continua. Non c'è una virgola tra l'algoritmo e le credenziali, ma gli altri elementi devono essere separati da virgole.

Esempio SigV4
Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20130524/us-east-1/s3/aws4_request, SignedHeaders=host;range;x-amz-date, Signature=fe5f80f77d5fa3beca038a248ff027d0445342fe2855ddc963176630326f1024
Esempio SigV4a
Authorization: AWS4-ECDSA-P256-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20130524/s3/aws4_request, SignedHeaders=host;range;x-amz-date;x-amz-region-set, Signature=fe5f80f77d5fa3beca038a248ff027d0445342fe2855ddc963176630326f1024

La tabella seguente descrive i vari componenti del valore dell'intestazione di autorizzazione nell'esempio precedente:

Componente Descrizione

Autorizzazione

L'algoritmo utilizzato per calcolare la firma.

  • SigV4: utilizza AWS4-HMAC-SHA256. Questa stringa identifica AWS sigV4 (AWS4) e l'algoritmo HMAC-SHA256.

  • SigV4a: utilizza AWS4-ECDSA-P256-SHA256. Questa stringa identifica AWS sigV4 (AWS4) e l'algoritmo ECDSA-P256-SHA-256.

Credential

L'ID della chiave di accesso e le informazioni sull'ambito.

  • SigV4: include la data, la Regione e il servizio utilizzati per calcolare la firma. Questa stringa ha il seguente formato:

    <your-access-key-id>/<date>/<aws-region>/<aws-service>/aws4_request

  • SigV4a: include la data e il servizio utilizzati per calcolare la firma. Questa stringa ha il seguente formato:

    <your-access-key-id>/<date>/<aws-service>/aws4_request

Il valore <date> è specificato utilizzando il formato AAAAMMGG. Il valore <aws-service> è S3 quando si invia una richiesta ad Amazon S3.

SignedHeaders

Un elenco separato da punto e virgola delle intestazioni di richiesta che hai utilizzato per il calcolo della firma. L'elenco include solo i nomi delle intestazioni e i nomi delle intestazioni devono essere in minuscolo. Ad esempio, .: host;range;x-amz-date

Per SigV4a, è necessario includere un'intestazione dell'insieme di Regioni che specifichi l'insieme delle Regioni in cui la richiesta sarà valida. L'intestazione X-Amz-Region-Set è specificata come un elenco di valori separati da virgole.

Firma

La firma a 256 bit espressa come 64 caratteri esadecimali minuscoli. Ad esempio:fe5f80f77d5fa3beca038a248ff027d0445342fe2855ddc963176630326f1024

Tieni presente che i calcoli della firma variano a seconda dell'opzione scelta per trasferire il payload.

Parametri della stringa di query

È possibile utilizzare una stringa di query per esprimere una richiesta interamente in un URL. In questo caso, utilizzi i parametri di interrogazione per fornire le informazioni sulla richiesta, incluse le informazioni di autenticazione. Poiché la firma richiesta è parte dell'URL, questo tipo di URL viene chiamato URL pre-firmato. Puoi utilizzare gli URL preimpostati per incorporare link cliccabili in HTML; questi link saranno validi per un massimo di sette giorni. Per ulteriori informazioni, consulta Autenticazione delle richieste: Utilizzo dei parametri di query (AWS Signature Version 4) nella Documentazione di riferimento delle API di Amazon S3.

Gli esempi seguenti mostrano gli URL prefirmati per SigV4 e SigV4a. Le interruzioni di riga vengono aggiunte a questo esempio solo per migliorare la leggibilità.

Esempio SigV4
https://s3.amazonaws.com/amzn-s3-demo-bucket/test.txt ? X-Amz-Algorithm=AWS4-HMAC-SHA256 & X-Amz-Credential=<your-access-key-id>/20130721/<region>/s3/aws4_request & X-Amz-Date=20130721T201207Z & X-Amz-Expires=86400 & X-Amz-SignedHeaders=host &X-Amz-Signature=<signature-value>
Esempio SigV4a
http://s3.amazonaws.com/amzn-s3-demo-bucket/test.txt ? X-Amz-Algorithm=AWS4-ECDSA-P256-SHA256 & X-Amz-Credential=<your-access-key-id>/20240721/s3/aws4_request & X-amz-Region-Set=<regionset> & X-Amz-Date=20240721T201207Z & X-Amz-Expires=86400 & X-Amz-SignedHeaders=host;x-amz-region-set & X-Amz-Signature=<signature-value>
Nota

Il valore X-Amz-Credential nell'URL mostra il carattere “/” solo per leggibilità. In pratica, dovrebbe essere codificato come %2F. Ad esempio:

&X-Amz-Credential=<your-access-key-id>%2F20130721%2Fus-east-1%2Fs3%2Faws4_request

La tabella seguente descrive i parametri della query nell'URL che forniscono informazioni di autenticazione.

Nome parametro stringa di query Descrizione

Algoritmo X-Amz

La versione della firma AWS e l'algoritmo utilizzato per calcolare la firma.

  • SigV4: utilizza AWS4-HMAC-SHA256. Questa stringa identifica AWS sigV4 (AWS4) e l'algoritmo HMAC-SHA256.

  • SigV4a: utilizza AWS4-ECDSA-P256-SHA256. Questa stringa identifica AWS sigV4 (AWS4) e l'algoritmo ECDSA-P256-SHA-256.

Credenziali X-Amz

Oltre all'ID della chiave di accesso, questo parametro fornisce anche l'ambito per cui la firma è valida. Questo valore deve corrispondere all'ambito utilizzato nei calcoli della firma, illustrato nella sezione seguente.

  • SigV4: la forma generale per questo valore di parametro è la seguente: <your-access-key-id>/<date>/<AWS Region>/<AWS-service>/aws4_request

    Ad esempio, .: AKIAIOSFODNN7EXAMPLE/20130721/us-east-1/s3/aws4_request

  • SigV4a: la forma generale per questo valore di parametro è la seguente: <your-access-key-id>/<date>/<AWS-service>/aws4_request

    Ad esempio, .: AKIAIOSFODNN7EXAMPLE/20130721/s3/aws4_request

    La Regione per SigV4a è definita nell'intestazione dell'insieme di Regioni X-Amz-Region-Set.

Per un elenco delle AWS stringhe regionali, consulta Endpoint regionali nei AWS Riferimenti Generali.

X-Amz-Region-Set

L'insieme delle Regioni in cui la richiesta sarà valida. L'intestazione x-amz-region-set è specificata come un elenco di valori separati da virgole.

X-Amz-Date

Il formato di data e ora deve seguire lo standard ISO 8601 e deve essere formattato con il formato yyyyMMddTHHmmssZ. Ad esempio, se la data e l'ora erano "08/01/2016 15:32:41.982-700", devono prima essere convertite in UTC (Coordinated Universal Time) e quindi inviate come "20160801T223241Z".

X-Amz-Expires

Fornisce il periodo di tempo, in secondi, per il quale l'URL prefirmato generato è valido. Ad esempio, 86400 (24 ore). Questo valore è un numero intero. Il valore minimo che puoi impostare è 1 e il massimo è 604800 (sette giorni). Un URL prefirmato può essere valido per massimo sette giorni perché la chiave di firma utilizzata nel calcolo della firma è valida per un massimo di sette giorni.

X-Amz-SignedHeaders

Elenca le intestazioni che hai utilizzato per calcolare la firma. Per i calcoli delle firme sono necessarie le seguenti intestazioni:

  • L'intestazione dell'host HTTP.

  • Qualsiasi intestazione x-amz-* che intendi aggiungere alla richiesta.

  • Per SigV4a, X-Amz-Region-Set è necessario per specificare le Regioni in cui è possibile effettuare la richiesta.

Per maggiore sicurezza, devi firmare tutte le intestazioni della richiesta che intendi includere nella richiesta.

X-Amz-Signature

Fornisce la firma per autenticare la richiesta. Questa firma deve corrispondere alla firma calcolata dal servizio; in caso contrario, il servizio rifiuta la richiesta. Ad esempio, ., 733255ef022bec3f2a8701cd61d4b371f3f28c9f193a1f02279211d48d5193d7

I calcoli delle firme sono descritti nella sezione seguente.

X-Amz-Security-Token

Parametro opzionale delle credenziali se si utilizzano credenziali provenienti dal servizio STS.