Méthodes d'authentification
Important
À moins que vous n'utilisiez les kits SDK AWS ou la CLI, vous devez écrire du code pour calculer les signatures qui fournissent des informations d'authentification dans vos demandes. Le calcul de la signature dans AWS Signature Version 4 peut s'avérer complexe, et nous vous recommandons d'utiliser les kits SDK AWS ou la CLI dans la mesure du possible.
Vous pouvez exprimer les informations d'authentification à l'aide de l'une des méthodes suivantes.
En-tête d'autorisation HTTP
L'en-tête HTTP Authorization est l'une des méthodes d'authentification des demandes les plus courantes. Toutes les opérations de l'API REST (à l'exception des chargements via un navigateur utilisant des demandes POST) nécessitent cet en-tête.
Les exemples suivants montrent la valeur d’en-tête Authorization pour SigV4 et SigV4a. Des sauts de ligne sont ajoutés à cet exemple pour faciliter la lecture. Dans votre code, l'en-tête doit être une chaîne continue. Il n'y a pas de virgule entre l'algorithme et les informations d'identification, mais les autres éléments doivent être séparés par des virgules.
Exemple SigV4
Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20130524/us-east-1/s3/aws4_request, SignedHeaders=host;range;x-amz-date, Signature=fe5f80f77d5fa3beca038a248ff027d0445342fe2855ddc963176630326f1024
Exemple SigV4a
Authorization: AWS4-ECDSA-P256-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20130524/s3/aws4_request, SignedHeaders=host;range;x-amz-date;x-amz-region-set, Signature=fe5f80f77d5fa3beca038a248ff027d0445342fe2855ddc963176630326f1024
Le tableau suivant décrit les différents composants de la valeur de l'en-tête d'autorisation dans l'exemple précédent :
| Composant | Description |
|---|---|
|
Autorisation |
Algorithme utilisé pour calculer la signature.
|
|
Informations d'identification |
Votre ID de clé d’accès et les informations relatives au champ d’application.
La valeur <date> est spécifiée à l’aide du format AAAAMMJJ. La valeur <aws-service> est S3 lors de l’envoi d’une demande à Amazon S3. |
|
SignedHeaders |
Une liste d’en-têtes de demande séparés par des points-virgules que vous avez utilisés pour calculer Signature. La liste inclut uniquement les noms d'en-tête, qui doivent être en minuscules. Par exemple : Pour SigV4a, vous devez inclure un en-tête de jeu de régions qui spécifie l’ensemble des régions dans lesquelles la demande sera valide. L’en-tête X-Amz-Region-Set est spécifié sous forme de liste de valeurs séparées par des virgules. |
|
Signature |
La signature de 256 bits exprimée en 64 caractères hexadécimaux minuscules. Par exemple : Veuillez noter que les calculs de signature varient en fonction de l'option que vous choisissez pour transférer la charge utile. |
Paramètres des chaînes de requête
Vous pouvez utiliser une chaîne de requête pour exprimer entièrement une demande dans une URL. Dans ce cas, vous utilisez les paramètres de requête pour fournir les informations de demande, y compris les informations d'authentification. Comme la signature de la demande fait partie de l'URL, ce type d'URL est généralement appelé URL présignée. Vous pouvez utiliser des URL présignées pour intégrer des liens cliquables au format HTML, qui peuvent être valides jusqu'à sept jours. Pour plus d'informations, veuillez consulter la rubrique Authentification des demandes à l'aide des paramètres de requête (AWS Signature Version 4) dans la Référence d'API Amazon S3.
Les exemples suivants montrent des URL pré-Signées pour SigV4 et SigV4a. Des sauts de ligne sont ajoutés à cet exemple pour faciliter la lecture :
Exemple 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>
Exemple 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>
Note
La valeur X-Amz-Credential dans l'URL affiche le caractère « / » uniquement pour des raisons de lisibilité. En pratique, il doit être encodé sous la forme %2F. Par exemple :
&X-Amz-Credential=<your-access-key-id>%2F20130721%2Fus-east-1%2Fs3%2Faws4_request
Le tableau suivant décrit les paramètres de requête de l'URL qui fournissent des informations d'authentification.
| Nom du paramètre de la chaîne d'interrogation | Description |
|---|---|
|
X-Amz-Algorithm |
Version de la signature AWS et de l’algorithme que vous avez utilisés pour calculer la signature.
|
|
X-Amz-Credential |
Outre l’ID de votre clé d’accès, ce paramètre fournit également le champ d’application pour lequel la signature est valide. Cette valeur doit correspondre au champ d'application que vous utilisez dans les calculs de signature, comme indiqué dans la section suivante.
Pour obtenir la liste des chaînes régionales AWS, veuillez consulter la rubrique Points de terminaison régionaux dans les Références générales AWS. |
|
X-Amz-Region-Set |
Ensemble de régions dans lesquelles la demande sera valide. L’en-tête x-amz-region-set est spécifié sous forme de liste de valeurs séparées par des virgules. |
|
X-Amz-Date |
Le format de date et d'heure doit respecter la norme ISO 8601 et doit être au format |
|
X-Amz-Expires |
Indique la période, en secondes, pendant laquelle l'URL présignée générée est valide. Par exemple, 86 400 (24 heures). Cette valeur est un nombre entier. La valeur minimale que vous pouvez définir est 1 et la valeur maximale est de 604 800 (sept jours). Une URL présignée peut être valide pendant sept jours au maximum, car la clé de signature que vous utilisez pour le calcul de la signature est valide pendant sept jours au maximum. |
|
X-Amz-SignedHeaders |
Répertorie les en-têtes que vous avez utilisés pour calculer la signature. Les en-têtes suivants sont obligatoires pour les calculs de signature :
Pour plus de sécurité, vous devez signer tous les en-têtes de demande que vous prévoyez d'inclure dans votre demande. |
|
X-Amz-Signature |
Fournit la signature pour authentifier votre demande. Cette signature doit correspondre à la signature que le service calcule, sinon, le service refuse la demande. Par exemple , Les calculs de signature sont décrits dans la section suivante. |
|
X-Amz-Security-Token |
Paramètre d'information d'identification facultatif si vous utilisez des informations d'identification provenant du service STS. |