Utiliser des cookies signés - Amazon CloudFront

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.

Utiliser des cookies signés

CloudFront les cookies signés vous permettent de contrôler qui peut accéder à votre contenu lorsque vous ne souhaitez pas modifier votre contenu actuel URLs ou lorsque vous souhaitez donner accès à plusieurs fichiers restreints, par exemple tous les fichiers de la zone réservée aux abonnés d'un site Web. Cette rubrique explique l’utilisation des cookies signés et décrit comment les définir à l’aide de politiques prédéfinies et personnalisées.

Décidez d'utiliser des politiques prédéfinies ou personnalisées pour les cookies signés

Lorsque vous créez un cookie signé, vous rédigez une déclaration de politique dans un JSON format qui précise les restrictions relatives au cookie signé, par exemple, la durée de validité du cookie. Vous pouvez utiliser une politique prédéfinie ou une politique personnalisé e. Le tableau suivant compare les politiques prédéfinies et les politiques personnalisées :

Description Politique prédéfinie Politique personnalisée

Vous pouvez réutiliser la déclaration de politique pour plusieurs fichiers. Pour ce faire, vous devez utiliser les caractères génériques de l’objet Resource. 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.)

Non

Oui

Vous pouvez indiquer la date et l’heure auxquelles les utilisateurs peuvent commencer à accéder à votre contenu

Non

Oui (facultatif)

Vous pouvez indiquer la date et l’heure auxquelles les utilisateurs ne peuvent plus accéder à votre contenu

Oui

Oui

Vous pouvez spécifier l’adresse IP ou la plage d’adresses IP des utilisateurs qui peuvent accéder à votre contenu

Non

Oui (facultatif)

Pour plus d’informations sur la création de cookies signés à l’aide d’une politique prédéfinie, consultez Définissez des cookies signés à l'aide d'une politique prédéfinie.

Pour plus d’informations sur la création de cookies signés à l’aide d’une politique personnalisée, consultez Définissez des cookies signés à l'aide d'une politique personnalisée.

Fonctionnement des cookies signés

Voici un aperçu de la façon dont vous configurez CloudFront les cookies signés et de la manière dont vous CloudFront répondez lorsqu'un utilisateur soumet une demande contenant un cookie signé.

  1. Dans votre CloudFront distribution, spécifiez un ou plusieurs groupes de clés fiables, qui contiennent les clés publiques CloudFront pouvant être utilisées pour vérifier la URL signature. Vous utilisez les clés privées correspondantes pour signer leURLs.

    Pour de plus amples informations, veuillez consulter Spécifiez les signataires autorisés à créer des cookies signés URLs et signés.

  2. Vous développez votre application pour déterminer si un utilisateur doit avoir accès à votre contenu et, si tel est le cas, pour envoyer trois en-têtes Set-Cookie à l’utilisateur. (Chaque Set-Cookie en-tête ne peut contenir qu'une seule paire nom-valeur, et un cookie CloudFront signé nécessite trois paires nom-valeur.) Vous devez envoyer les en-têtes Set-Cookie à l’utilisateur avant qu’il ne demande votre contenu privé. Si vous définissez une durée d’expiration brève sur le cookie, il se peut aussi que vous vouliez envoyer trois en-têtes Set-Cookie supplémentaires en réponse aux demandes suivantes, de telle sorte que l’utilisateur puisse continuer à y accéder.

    En général, votre CloudFront distribution aura au moins deux comportements de cache, l'un qui ne nécessite pas d'authentification et l'autre qui en nécessite une. La page d’erreur de la partie sécurisé du site inclut une redirection ou un lien vers une page de connexion.

    Si vous configurez votre distribution pour mettre en cache des fichiers basés sur des cookies, CloudFront elle ne met pas en cache des fichiers séparés en fonction des attributs des cookies signés.

  3. Un utilisateur se connecte à votre site web et paie le contenu ou satisfait à quelques autres exigences pour l’accès.

  4. Votre application renvoie les en-têtes Set-Cookie dans la réponse, et l’utilisateur stocke les paires nom-valeur.

  5. L’utilisateur demande un fichier.

    Le navigateur de cet utilisateur ou d’un autre obtient les paires nom-valeur de l’étape 4 et les ajoute à la demande dans un en-tête Cookie. Il s’agit du cookie signé.

  6. CloudFront utilise la clé publique pour valider la signature du cookie signé et pour confirmer que le cookie n'a pas été falsifié. Si la signature n’est pas valide, la demande est rejetée.

    Si la signature contenue dans le cookie est valide, CloudFront consultez la déclaration de politique contenue dans le cookie (ou créez-en une si vous utilisez une politique prédéfinie) pour confirmer que la demande est toujours valide. Par exemple, si vous avez spécifié une date et une heure de début et de fin pour le cookie, cela CloudFront confirme que l'utilisateur essaie d'accéder à votre contenu pendant la période pendant laquelle vous souhaitez autoriser l'accès.

    Si la demande répond aux exigences de la déclaration de politique, CloudFront diffuse votre contenu comme elle le fait pour le contenu non restreint : elle détermine si le fichier se trouve déjà dans le cache périphérique, transmet la demande à l'origine si nécessaire et renvoie le fichier à l'utilisateur.

Si vous spécifiez le paramètre Domain dans un en-tête Set-Cookie, spécifiez la valeur la plus précise possible pour réduire les possibilités d’accès par une personne ayant le même nom de domaine racine. Par exemple, app.example.com est préférable à example.com, particulièrement quand vous ne contrôlez pas example.com. Vous empêchez ainsi qu’une personne accède à votre contenu depuis www.example.com.

Pour contribuer à empêcher ce type d’attaque, procédez comme suit :

  • Excluez les attributs de cookie Expires et Max-Age, de telle sorte que l’en-tête Set-Cookie crée un cookie de session. Les cookies de session sont automatiquement supprimés quand l’utilisateur clôt le navigateur, ce qui réduit la possibilité que quelqu’un n’obtienne un accès non autorisé à votre contenu.

  • Incluez l’attribut Secure, de telle sorte que le cookie soit chiffré quand un utilisateur l’inclut dans une demande.

  • Chaque fois que possible, utilisez une politique personnalisée et incluez l’adresse IP de l’utilisateur.

  • Dans l’attribut CloudFront-Expires, spécifiez la durée d’expiration raisonnable la plus courte selon la période pendant laquelle vous autorisez les utilisateurs à accéder à votre contenu.

Pour déterminer si un cookie signé est toujours valide, vérifiez CloudFront la date et l'heure d'expiration indiquées dans le cookie au moment de la HTTP demande. Si un client commence à télécharger un fichier volumineux immédiatement avant la date d’expiration, le téléchargement se termine même si la date d’expiration intervient pendant le téléchargement. Si la TCP connexion est interrompue et que le client essaie de redémarrer le téléchargement après l'expiration du délai d'expiration, le téléchargement échouera.

Si un client utilise Range GETs pour obtenir un fichier en petits morceaux, toute GET demande effectuée après l'expiration du délai d'expiration échouera. Pour plus d'informations sur RangeGETs, consultezComment CloudFront traite les demandes partielles pour un objet (plageGETs).

Exemple de code et outils tiers

L'exemple de code pour le contenu privé montre uniquement comment créer la signature pour le contenu signéURLs. Cependant, le processus de création d’une signature d’un cookie signé étant très similaire, une grande partie de l’exemple de code continue à être pertinente. Pour plus d’informations, consultez les rubriques suivantes :