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 personnalisée
Pour définir un cookie signé qui utilise une politique personnalisée, effectuez la procédure suivante.
Pour définir un cookie signé utilisant une politique personnalisée
-
Si vous utilisez. NETou Java pour créer une clé signéeURLs, et si vous n'avez pas reformaté la clé privée de votre paire de clés du format .pem par défaut à un format compatible avec. NETou avec Java, faites-le maintenant. Pour de plus amples informations, veuillez consulter Reformatez la clé privée (. NETet 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-Policy
,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
. Cette exclusion 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 de plus amples informations, veuillez consulter 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-Policy=
base64 encoded version of the policy statement
; 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 aucun
Domain
attribut, la valeur par défaut est le nom de domaine dans leURL, et elle s'applique uniquement au nom de domaine spécifié, pas 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. En outre, si vous spécifiez unDomain
attribut, le nom de domaine URL et la valeur de l'Domain
attribut 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 autre nom de domaine tel que exemple.com dansURLs, vous devez ajouter le nom de domaine alternatif à votre distribution, que vous spécifiiez ou non l'
Domain
attribut. Pour plus d’informations, consultez Noms de domaine alternatifs (CNAMEs) 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 aucun
Path
attribut, la valeur par défaut est le chemin dans leURL. 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 HTTPS connexion pour vous assurer que les attributs du cookie sont protégés contre man-in-the-middle les attaques. HttpOnly
-
Nécessite que le spectateur envoie le cookie uniquement HTTP ou qu'il en fasse la HTTPS demande.
CloudFront-Policy
-
Votre déclaration de politique au JSON format, avec les espaces vides supprimés, puis encodée en base64. Pour de plus amples informations, veuillez consulter Création d'une signature pour un cookie signé qui utilise une politique personnalisée.
La déclaration de politique contrôle l’accès accordé par un cookie signé à un utilisateur. Il inclut les fichiers auxquels l'utilisateur peut accéder, une date et une heure d'expiration, une date et une heure facultatives URL de validité, ainsi qu'une adresse IP facultative ou une plage d'adresses IP autorisées à accéder au fichier.
CloudFront-Signature
-
Une version hachée, signée et codée en base64 de la JSON déclaration de politique. Pour de plus amples informations, veuillez consulter Création d'une signature pour un cookie signé qui utilise une politique personnalisée.
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 le document signéURL. CloudFrontcompare les informations de la signature avec celles de la déclaration de politique pour vérifier qu'elles n'ont pas URL été falsifiées.Cette clé publique doit appartenir à un groupe de clés qui est un signataire approuvé dans la distribution. Pour de plus amples informations, veuillez consulter Spécifiez les signataires autorisés à créer des cookies signés URLs et signés.
- (Facultatif)
Exemples d'Set-Cookie
en-têtes pour les politiques personnalisées
Consultez les exemples de paires d'Set-Cookie
en-têtes suivants.
Si vous souhaitez utiliser un autre nom de domaine tel que exemple.org dansURLs, vous devez ajouter le nom de domaine alternatif à votre distribution, que vous spécifiiez ou non l'Domain
attribut. Pour plus d’informations, consultez Noms de domaine alternatifs (CNAMEs) dans la rubrique Référence des paramètres de distribution.
Exemple 1
Vous pouvez utiliser Set-Cookie
les en-têtes d'un cookie signé lorsque vous utilisez le nom de domaine associé à votre distribution dans URLs vos fichiers.
Set-Cookie: CloudFront-Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QxMTExMTFhYmNkZWY4LmNsb3VkZnJvbnQubmV0L2dhbWVfZG93bmxvYWQuemlwIiwiQ29uZGl0aW9uIjp7IklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIxOTIuMC4yLjAvMjQifSwiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE0MjY1MDAwMDB9fX1dfQ__; Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Signature=dtKhpJ3aUYxqDIwepczPiDb9NXQ_; Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly
Exemple 2
Vous pouvez utiliser Set-Cookie
les en-têtes d'un cookie signé lorsque vous utilisez un autre nom de domaine (exemple.org) URLs pour vos fichiers.
Set-Cookie: CloudFront-Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QxMTExMTFhYmNkZWY4LmNsb3VkZnJvbnQubmV0L2dhbWVfZG93bmxvYWQuemlwIiwiQ29uZGl0aW9uIjp7IklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIxOTIuMC4yLjAvMjQifSwiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE0MjY1MDAwMDB9fX1dfQ__; Domain=example.org; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Signature=dtKhpJ3aUYxqDIwepczPiDb9NXQ_; Domain=example.org; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=example.org; Path=/; Secure; HttpOnly
Exemple 3
Vous pouvez utiliser les paires d'Set-Cookie
en-têtes pour une demande signée lorsque vous utilisez le nom de domaine associé à votre distribution dans vos fichiers. URLs
Set-Cookie: CloudFront-Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QxMTExMTFhYmNkZWY4LmNsb3VkZnJvbnQubmV0L2dhbWVfZG93bmxvYWQuemlwIiwiQ29uZGl0aW9uIjp7IklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIxOTIuMC4yLjAvMjQifSwiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE0MjY1MDAwMDB9fX1dfQ__; Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Signature=dtKhpJ3aUYxqDIwepczPiDb9NXQ_; Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=dd111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly
Exemple 4
Vous pouvez utiliser les paires d'Set-Cookie
en-têtes pour une demande signée lorsque vous utilisez un autre nom de domaine (exemple.org) associé à votre distribution dans vos fichiers. URLs
Set-Cookie: CloudFront-Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QxMTExMTFhYmNkZWY4LmNsb3VkZnJvbnQubmV0L2dhbWVfZG93bmxvYWQuemlwIiwiQ29uZGl0aW9uIjp7IklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIxOTIuMC4yLjAvMjQifSwiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE0MjY1MDAwMDB9fX1dfQ__; Domain=example.org; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Signature=dtKhpJ3aUYxqDIwepczPiDb9NXQ_; Domain=example.org; Path=/; Secure; HttpOnly Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=example.org; Path=/; Secure; HttpOnly
Création d'une déclaration de politique pour un cookie signé qui utilise une politique personnalisée
Pour créer une déclaration de politique pour une politique personnalisée, effectuez la procédure suivante. Pour obtenir des exemples de déclaration de politique qui contrôlent l’accès aux fichiers de différentes façons, consultez Exemple d’une déclaration de politique pour un cookie signé qui utilise une politique personnalisée.
Pour créer la déclaration de politique d’un cookie signé qui utilise une politique personnalisée
-
Construisez la déclaration de politique en utilisant le JSON format suivant.
{ "Statement": [ { "Resource": "URL of the file", "Condition": { "DateLessThan": { "AWS:EpochTime":required ending date and time in Unix time format and UTC }, "DateGreaterThan": { "AWS:EpochTime":optional beginning date and time in Unix time format and UTC }, "IpAddress": { "AWS:SourceIp": "optional IP address" } } } ] }
Notez ce qui suit :
-
Vous pouvez inclure une seule instruction.
-
Utilisez un codage UTF de -8 caractères.
-
Incluez la ponctuation et les noms de paramètre exactement comme spécifié. Les abréviations ne sont pas acceptées pour les noms de paramètre.
-
L’ordre des paramètres de la section
Condition
n’importe pas. -
Pour plus d’informations sur les valeurs de
Resource
,DateLessThan
,DateGreaterThan
etIpAddress
, consultez Valeurs que vous spécifiez dans la déclaration de politique d’une politique personnalisée pour les cookies signés.
-
-
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.
-
Encodez la déclaration de politique en base64 à l'aide MIME du codage base64. Pour plus d'informations, voir Section 6.8, Base64 Content-Transfer-Encoding
en RFC2045, MIME (Extensions de messagerie Internet polyvalentes) Première partie : Format des corps de messages Internet. -
Remplacez les caractères non valides dans une chaîne de URL requête par des 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 votre en-tête
Set-Cookie
aprèsCloudFront-Policy=
. -
Créez une signature pour l’en-tête
Set-Cookie
deCloudFront-Signature
en hachant, signant et encodant en base64 la déclaration de politique. Pour de plus amples informations, veuillez consulter Création d'une signature pour un cookie signé qui utilise une politique personnalisée.
Valeurs que vous spécifiez dans la déclaration de politique d’une politique personnalisée pour les cookies signés
Lorsque vous créez une déclaration de politique pour une politique personnalisée, vous spécifiez les valeurs suivantes.
- Ressource
-
La baseURL, y compris vos chaînes de requête, le cas échéant :
https://d111111abcdef8.cloudfront.net/images/horizon.jpg?size=large&license=yes
Important
Si vous omettez le
Resource
paramètre, les utilisateurs peuvent accéder à tous les fichiers associés à toute distribution associée à la paire de clés que vous utilisez pour créer le fichier signéURL.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.
-
Caractères génériques : vous pouvez utiliser à tout moment dans la chaîne, le caractère générique qui correspond à zéro caractère ou plus (*) ou celui qui correspond exactement à un seul caractère (?). Par exemple, la valeur :
https://d111111abcdef8.cloudfront.net/*game_download.zip*
inclut (par exemple) les fichiers suivants :
-
https://d111111abcdef8.cloudfront.net/game_download.zip
-
https://d111111abcdef8.cloudfront.net/example_game_download.zip?license=yes
-
https://d111111abcdef8.cloudfront.net/test_game_download.zip?license=temp
-
-
Noms de domaine alternatifs : si vous spécifiez un autre nom de domaine (CNAME) dans leURL, vous devez le spécifier lorsque vous référencez le fichier sur votre page Web ou votre application. Ne spécifiez pas l'Amazon S3 URL pour le fichier.
-
- DateLessThan
-
Date et heure d'expiration du URL format Unix (en secondes) et du temps universel coordonné (UTC). N’entourez pas la valeur de points d’interrogation.
Par exemple, le 16 mars 2015 à 10 h est UTC converti en 1426500000 au format horaire Unix.
Pour de plus amples informations, veuillez consulter Quand CloudFront vérifie la date et l'heure d'expiration dans un cookie signé.
- DateGreaterThan (Facultatif)
-
Date et heure de début facultatives pour le URL format Unix (en secondes) et le temps universel coordonné (UTC). Les utilisateurs ne sont pas autorisés à accéder au fichier à la date et à l'heure spécifiées ou avant. N’entourez pas la valeur de points d’interrogation.
- IpAddress (Facultatif)
-
Adresse IP du client à l'origine de la GET demande. Notez ce qui suit :
-
Pour autoriser une adresse IP à accéder au fichier, omettez le paramètre
IpAddress
. -
Vous pouvez spécifier une adresse IP ou une plage d’adresses IP. Par exemple, vous pouvez définir la politique pour autoriser l’accès si l’adresse IP du client figure dans l’une des deux plages distinctes.
-
Pour autoriser l’accès depuis une seule adresse IP, vous spécifiez :
"
IPv4 IP address
/32"
-
Vous devez spécifier les plages d'adresses IP IPv4 CIDR au format standard (par exemple,
192.0.2.0/24
). Pour plus d'informations, consultez RFC4632, Classless Inter-domain Routing (CIDR) : The Internet Address Assignment and Aggrégation Plan,. https://tools.ietf.org/html/rfc4632Important
Les adresses IP au IPv6 format 2001:0 db 8:85 a3 : :8a2e : 0370:7334 ne sont pas prises en charge.
Si vous utilisez une politique personnalisée qui inclut
IpAddress
, n'activez pas IPv6 la distribution. Si vous souhaitez restreindre l'accès à certains contenus par adresse IP et répondre aux IPv6 demandes d'assistance pour d'autres contenus, vous pouvez créer deux distributions. Pour plus d’informations, consultez Activer IPv6 dans la rubrique Référence des paramètres de distribution.
-
Exemple d’une déclaration de politique pour un cookie signé qui utilise une politique personnalisée
Les exemples suivants de déclaration de politique montrent comment accéder à un fichier spécifique, à tous les objets d’un répertoire ou à tous les fichiers associés à un ID de paire de clés. Les exemples montrent aussi comment contrôler l’accès depuis une adresse IP individuelle ou une plage d’adresses IP, et comment empêcher les utilisateurs d’employer le cookie signé au-delà d’une date et heure spécifiées.
Si vous copiez et collez l'un de ces exemples, supprimez tous les espaces vides (y compris les tabulations et les caractères de nouvelle ligne), remplacez les valeurs par vos propres valeurs et insérez un caractère de nouvelle ligne après l'accolade fermante (}).
Pour de plus amples informations, veuillez consulter Valeurs que vous spécifiez dans la déclaration de politique d’une politique personnalisée pour les cookies signés.
Rubriques
- Exemple de déclaration de politique : accéder à un fichier à partir d'une plage d'adresses IP
- Exemple de déclaration de politique : accès à tous les fichiers d'un répertoire à partir d'une plage d'adresses IP
- Exemple de déclaration de politique : accédez à tous les fichiers associés à un identifiant de paire de clés à partir d'une adresse IP
Exemple de déclaration de politique : accéder à un fichier à partir d'une plage d'adresses IP
L'exemple de politique personnalisée suivant dans un cookie signé indique qu'un utilisateur peut accéder au fichier à https://d111111abcdef8.cloudfront.net/game_download.zip
partir d'adresses IP comprises dans la plage allant 192.0.2.0/24
jusqu'au 1er janvier 2023 à 10 h 00 UTC :
{ "Statement": [ { "Resource": "https://d111111abcdef8.cloudfront.net/game_download.zip", "Condition": { "IpAddress": { "AWS:SourceIp": "192.0.2.0/24" }, "DateLessThan": { "AWS:EpochTime": 1357034400 } } } ] }
Exemple de déclaration de politique : accès à tous les fichiers d'un répertoire à partir d'une plage d'adresses IP
L’exemple suivant de politique personnalisée vous permet de créer des cookies signés pour n’importe quel fichier du répertoire training
, comme indiqué par le caractère générique * du paramètre Resource
. Les utilisateurs peuvent accéder au fichier à partir d'une adresse IP comprise dans la plage 192.0.2.0/24
jusqu'au 1er janvier 2013 à 10 h 00 UTC :
{ "Statement": [ { "Resource": "https://d111111abcdef8.cloudfront.net/training/*", "Condition": { "IpAddress": { "AWS:SourceIp": "192.0.2.0/24" }, "DateLessThan": { "AWS:EpochTime": 1357034400 } } } ] }
Chaque cookie signé dans lequel vous utilisez cette politique inclut une base URL qui identifie un fichier spécifique, par exemple :
https://d111111abcdef8.cloudfront.net/training/orientation.pdf
Exemple de déclaration de politique : accédez à tous les fichiers associés à un identifiant de paire de clés à partir d'une adresse IP
L’exemple suivant de politique personnalisée vous permet de définir des cookies signés pour tout fichier associé à une distribution, comme indiqué par le caractère générique * du paramètre Resource
. L’utilisateur doit employer l’adresse IP 192.0.2.10/32
. (La valeur 192.0.2.10/32
en CIDR notation fait référence à une adresse IP unique,192.0.2.10
.) Les fichiers ne sont disponibles que du 1er janvier 2013 à 10 h UTC au 2 janvier 2013 à 10 h 00 UTC :
{ "Statement": [ { "Resource": "https://*", "Condition": { "IpAddress": { "AWS:SourceIp": "192.0.2.10/32" }, "DateGreaterThan": { "AWS:EpochTime": 1357034400 }, "DateLessThan": { "AWS:EpochTime": 1357120800 } } } ] }
Chaque cookie signé dans lequel vous utilisez cette politique inclut une base URL qui identifie un fichier spécifique dans une CloudFront distribution spécifique, par exemple :
https://d111111abcdef8.cloudfront.net/training/orientation.pdf
Le cookie signé inclut également un identifiant de paire de clés, qui doit être associé à un groupe de clés fiables dans la distribution (d111111abcdef8.cloudfront.net) que vous spécifiez dans la base. URL
Création d'une signature pour un cookie signé qui utilise une politique personnalisée
La signature d’un cookie signé utilisant une politique personnalisée est une version hachée, signée et encodée en base64 de la déclaration de politique.
Pour plus d’informations et d’exemples sur la façon de hacher, signer et encoder la déclaration de politique, consultez :
Pour créer une signature pour un cookie signé en utilisant une politique personnalisée
-
Utilisez la fonction de hachage SHA -1 RSA pour hacher et signer la déclaration de JSON politique que vous avez créée dans la procédure. Pour créer la déclaration de politique pour un document signé URL qui utilise une politique personnalisée Utilisez la version de la déclaration de politique qui n'inclut plus d'espaces vides mais qui n'a pas encore été codée en base64.
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 créer une signature pour un document signé URL.
-
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 la chaîne en base64 en utilisant MIME le codage base64. Pour plus d'informations, voir Section 6.8, Base64 Content-Transfer-Encoding
en RFC2045, MIME (Extensions de messagerie Internet polyvalentes) Première partie : Format des corps de messages Internet. -
Remplacez les caractères non valides dans une chaîne de URL requête par des 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=
, et retournez à Pour définir un cookie signé utilisant une politique personnalisée pour ajouter l’en-têteSet-Cookie
deCloudFront-Key-Pair-Id
.