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.
Définissez des cookies signés à l'aide d'une politique prédéfinie
Pour définir un cookie signé à l’aide d’une politique prédéfinie, procédez comme suit. Pour créer la signature, consultez Création d'une signature pour un cookie signé qui utilise une politique prédéfinie.
Pour définir un cookie signé à l’aide d’une politique prédéfinie
-
Si vous utilisez .NET ou Java pour créer des cookies signés et si vous n’avez pas reformaté la clé privée de votre paire de clés du format par défaut .pem en un format compatible avec .NET ou Java, procédez comme suit : Pour plus d’informations, consultez Reformater la clé privée (.NET et Java uniquement).
-
Programmez votre application pour qu’elle envoie trois en-têtes
Set-Cookie
aux utilisateurs approuvées. Vous avez besoin de troisSet-Cookie
en-têtes car chaqueSet-Cookie
en-tête ne peut contenir qu'une seule paire nom-valeur, et un cookie CloudFront signé nécessite trois paires nom-valeur. Les paires nom-valeur sont :CloudFront-Expires
,CloudFront-Signature
etCloudFront-Key-Pair-Id
. Les valeurs doivent être présentes sur la visionneuse avant qu’un utilisateur ne puisse faire la requête d’un fichier dont vous voulez contrôler l’accès.Note
En règle générale, nous recommandons d’exclure les attributs
Expires
etMax-Age
. L’exclusion des attributs conduit le navigateur à supprimer le cookie quand l’utilisateur ferme le navigateur, ce qui réduit la possibilité qu’une personne obtienne un accès non autorisé à votre contenu. Pour plus d’informations, consultez Empêcher l'utilisation abusive des cookies signés.Les noms des attributs de cookie sont sensibles à la casse.
Les sauts de ligne ne sont inclus que pour rendre les attributs plus lisibles.
Set-Cookie: CloudFront-Expires=
date and time in Unix time format (in seconds) and Coordinated Universal Time (UTC)
; Domain=optional domain name
; Path=/optional directory path
; Secure; HttpOnly Set-Cookie: CloudFront-Signature=hashed and signed version of the policy statement
; Domain=optional domain name
; Path=/optional directory path
; Secure; HttpOnly Set-Cookie: CloudFront-Key-Pair-Id=public key ID for the CloudFront public key whose corresponding private key you're using to generate the signature
; Domain=optional domain name
; Path=/optional directory path
; Secure; HttpOnly- (Facultatif)
Domain
-
Nom de domaine du fichier demandé. Si vous ne spécifiez pas un attribut
Domain
, la valeur par défaut est le nom de domaine de l’URL et ne s’applique qu’au nom de domaine spécifié, non aux sous-domaines. Si vous spécifiez un attributDomain
, il s’applique aussi aux sous-domaines. Un point devant le nom de domaine (par exemple,Domain=.example.com
) est facultatif. De plus, si vous spécifiez un attributDomain
, le nom de domaine de l’URL et la valeur de l’attributDomain
doivent correspondre.Vous pouvez spécifier le nom de domaine CloudFront attribué à votre distribution, par exemple d111111abcdef8.cloudfront.net, mais vous ne pouvez pas spécifier*.cloudfront.net pour le nom de domaine.
Si vous souhaitez utiliser un nom de domaine alternatif tel qu’example.com dans les URL, vous devez ajouter le nom de domaine alternatif à votre distribution, que vous spécifiiez l’attribut
Domain
ou non. Pour plus d’informations, consultez Noms de domaine alternatifs (CNAME) dans la rubrique Référence des paramètres de distribution. - (Facultatif)
Path
-
Chemin d’accès du fichier demandé. Si vous ne spécifiez pas d’attribut
Path
, la valeur par défaut est le chemin d’accès de l’URL. Secure
-
Nécessite que l’utilisateur chiffre les cookies avant d’envoyer une demande. Nous vous recommandons d'envoyer l'
Set-Cookie
en-tête via une connexion HTTPS pour vous assurer que les attributs du cookie sont protégés contre man-in-the-middle les attaques. HttpOnly
-
Définit la manière dont le navigateur (lorsqu'il est pris en charge) interagit avec la valeur du cookie. Avec
HttpOnly
, les valeurs des cookies ne sont pas accessibles à JavaScript. Cette précaution peut contribuer à atténuer les attaques par script intersite (XSS). Pour plus d'informations, consultez la section Utilisation de cookies HTTP. CloudFront-Expires
-
Spécifiez la date et l’heure d’expiration au format horaire Unix (en secondes) et en heure UTC. Par exemple, la date 1er janvier 2013 10 h 00 UTC est convertie en 1357034400 au format horaire Unix. Pour utiliser l’heure epoch, utilisez un entier de 32 bits pour une date qui ne peut pas être postérieure à 2147483647 (19 janvier 2038 à 03:14:07 UTC). Pour plus d’informations sur UTC, consultez RFC 3339, Date et heure sur Internet : Horodatages, https://tools.ietf.org/html/rfc3339
. CloudFront-Signature
-
Version hachée, signée et encodée en base 64 d’une déclaration de politique JSON. Pour plus d’informations, consultez Création d'une signature pour un cookie signé qui utilise une politique prédéfinie.
CloudFront-Key-Pair-Id
-
L'ID d'une clé CloudFront publique, par exemple,
K2JCJMDEHXQW5F
. L'ID de clé publique indique CloudFront la clé publique à utiliser pour valider l'URL signée. CloudFront compare les informations de la signature avec celles de la déclaration de politique pour vérifier que l'URL n'a pas été falsifiée.Cette clé publique doit appartenir à un groupe de clés qui est un signataire approuvé dans la distribution. Pour plus d’informations, consultez Spécifiez les signataires autorisés à créer des URL signées et des cookies signés.
- (Facultatif)
L’exemple suivant illustre les en-têtes Set-Cookie
d’un cookie signé quand vous utilisez le nom de domaine associé à votre distribution dans les URL de vos fichiers :
Set-Cookie: CloudFront-Expires=1426500000; Domain=d111111abcdef8.cloudfront.net; Path=/images/*; Secure; HttpOnly Set-Cookie: CloudFront-Signature=yXrSIgyQoeE4FBI4eMKF6ho~CA8_; Domain=d111111abcdef8.cloudfront.net; Path=/images/*; Secure; HttpOnly Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=d111111abcdef8.cloudfront.net; Path=/images/*; Secure; HttpOnly
L’exemple suivant illustre les en-têtes Set-Cookie
d’un cookie signé quand vous utilisez le nom de domaine alternatif example.org dans les URL de vos fichiers :
Set-Cookie: CloudFront-Expires=1426500000; Domain=example.org; Path=/images/*; Secure; HttpOnly Set-Cookie: CloudFront-Signature=yXrSIgyQoeE4FBI4eMKF6ho~CA8_; Domain=example.org; Path=/images/*; Secure; HttpOnly Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=example.org; Path=/images/*; Secure; HttpOnly
Si vous souhaitez utiliser un nom de domaine alternatif tel qu’example.com dans les URL, vous devez ajouter le nom de domaine alternatif à votre distribution, que vous spécifiiez l’attribut Domain
ou non. Pour plus d’informations, consultez Noms de domaine alternatifs (CNAME) dans la rubrique Référence des paramètres de distribution.
Création d'une signature pour un cookie signé qui utilise une politique prédéfinie
Pour créer la signature d'un cookie signé qui utilise une politique prédéfinie, procédez comme suit.
Rubriques
Création d'une déclaration de politique pour un cookie signé qui utilise une politique prédéfinie
Lorsque vous définissez un cookie signé qui utilise une politique prédéfinie, l’attribut CloudFront-Signature
est une version hachée et signée d’une déclaration de politique. Pour les cookies signés qui utilisent une politique prédéfinie, vous n’incluez pas la déclaration de politique dans l’en-tête Set-Cookie
, comme vous le faites pour les cookies signés qui utilisent une politique personnalisée. Pour créer l’a déclaration de politique, procédez comme suit.
Pour créer une déclaration de politique pour un cookie signé qui utilise une politique prédéfinie
-
Construisez la déclaration de politique à l’aide du format JSON suivant et de l’encodage de caractères UTF-8. Incluez la ponctuation et les autres valeurs littérales exactement comme spécifié. Pour plus d’informations sur les paramètres
Resource
etDateLessThan
, consultez Valeurs que vous spécifiez dans la déclaration de politique d’une politique prédéfinie pour les cookies signés.{ "Statement": [ { "Resource": "base URL or stream name", "Condition": { "DateLessThan": { "AWS:EpochTime": ending date and time in Unix time format and UTC } } } ] }
-
Supprimez tous les espaces vides (y compris les tabulations et les caractères de nouvelle ligne) de la déclaration de politique. Il se peut que vous ayez à inclure des caractères d’échappement dans la chaîne du code d’application.
Valeurs que vous spécifiez dans la déclaration de politique d’une politique prédéfinie pour les cookies signés
Lorsque vous créez une déclaration de politique pour une politique prédéfinie, vous spécifiez les valeurs suivantes :
- Ressource
-
L’URL de base incluant vos chaînes de requête, le cas échéant ; par exemple :
https://d111111abcdef8.cloudfront.net/images/horizon.jpg?size=large&license=yes
Vous ne pouvez spécifier qu’une seule valeur pour
Resource
.Remarques :
-
Protocole : la valeur doit commencer par
http://
ouhttps://
. -
Paramètres de chaîne de requête : si vous n’avez aucun paramètre de chaîne de requête, omettez le point d’interrogation.
-
Noms de domaine alternatifs : si vous spécifiez un nom de domaine alternatif (CNAME) dans l’URL, vous devez le spécifier lorsque vous référencez le fichier dans votre page ou application web. Ne spécifiez pas l’URL Amazon S3 pour le fichier.
-
- DateLessThan
-
Date et heure d’expiration de l’URL au format horaire Unix (en secondes) et en heure UTC. N’entourez pas la valeur de points d’interrogation.
Par exemple, la date 16 mars 2015 10 h 00 UTC est convertie en 1426500000 au format horaire Unix.
Cette valeur doit correspondre à la valeur de l’attribut
CloudFront-Expires
de l’en-têteSet-Cookie
. N’entourez pas la valeur de points d’interrogation.Pour plus d’informations, consultez Quand CloudFront vérifie la date et l'heure d'expiration dans un cookie signé.
Exemple de déclaration de politique pour une politique prédéfinie
Lorsque vous utilisez l’exemple de déclaration de politique suivant dans un cookie signé, un utilisateur peut accéder au fichier https://d111111abcdef8.cloudfront.net/horizon.jpg
jusqu’au 16 mars 2015 10 h 00 UTC :
{ "Statement": [ { "Resource": "https://d111111abcdef8.cloudfront.net/horizon.jpg?size=large&license=yes", "Condition": { "DateLessThan": { "AWS:EpochTime": 1426500000 } } } ] }
Signez la déclaration de politique pour créer une signature pour un cookie signé qui utilise une politique prédéfinie
Pour créer la valeur de l’attribut CloudFront-Signature
d’un en-tête Set-Cookie
, vous hachez et signez la déclaration de politique que vous avez créée dans Pour créer une déclaration de politique pour un cookie signé qui utilise une politique prédéfinie.
Pour plus d’informations et d’exemples sur la façon de hacher, signer et encoder la déclaration de politique, consultez les rubriques suivantes :
Pour créer une signature pour un cookie signé qui utilise une politique prédéfinie
-
Utilisez la fonction de hachage SHA-1 et RSA pour hacher et signer la déclaration de politique que vous avez créée dans la procédure Pour créer une déclaration de politique pour un cookie signé qui utilise une politique prédéfinie. Utilisez la version de la déclaration de politique qui ne contient plus d'espaces vides.
Pour la clé privée requise par la fonction de hachage, utilisez une clé privée dont la clé publique se trouve dans un groupe de clés approuvé actif pour la distribution.
Note
La méthode que vous utilisez pour hacher et signer la déclaration de politique dépend du langage de programmation et de la plateforme. Pour un exemple de code, consultez Exemples de code pour la création de la signature d’une URL signée.
-
Supprimez les espaces vides (y compris les tabulations et les caractères de nouvelle ligne) de la chaîne hachée et signée.
-
Encodez en base64 la chaîne à l’aide de l’encodage MIME base64. Pour plus d’informations, consultez Section 6.8, Base64 Content-Transfer-Encoding
dans RFC 2045, MIME (Multipurpose Internet Mail Extensions) Part One: Format of Internet Message Bodies. -
Remplacez les caractères non valides d’une chaîne de requête d’URL par les caractères valides. Le tableau suivant répertorie les caractères valides et non valides.
Remplacer ces caractères non valides Par ces caractères valides +
- (trait d’union)
=
_ (soulignement)
/
~ (tilde)
-
Incluez la valeur obtenue dans l’en-tête
Set-Cookie
de la paire nom-valeurCloudFront-Signature
. Puis retournez à Pour définir un cookie signé à l’aide d’une politique prédéfinie pour ajouter l’en-têteSet-Cookie
deCloudFront-Key-Pair-Id
.