1

L'URL signée cloudfront peut-elle être générée à partir de données de cookies signées?L'URL signée cloudfront peut-elle être générée à partir de données de cookies signées?

J'ai une URL signé qui télécharge le contenu privé

http://1234.cloudfront.net/myfile.txt?response-content-disposition=attachment%3Bfilename%3Dfoobar.json&Expires=1510111000&Signature=someRandomSignature&Key-Pair-Id=MY-KEY-PAIR

URL Signé fonctionne très bien.

Maintenant, je suis en train de générer un moyen cookie signé d'exposer le contenu privé donc j'avais les cookies suivants ajoutés à mon objet de réponse (au printemps/JAVA):

Cookie expiresCookie = new Cookie("CloudFront-Expires", "1510111000"); 
Cookie signatureCookie = new Cookie("CloudFront-Signature", "someRandomSignature"); 
Cookie keyPairCookie = new Cookie("CloudFront-Key-Pair-Id", "MY-KEY-PAIR"); 

Une fois que le client obtient ces cookies, le client ne peut-il pas générer l'url signée et partager l'url avec les parties qui ne devraient pas y accéder?

enter image description here

Répondre

2

Bien que cela soit certainement possible, CloudFront signé URL/mécanisme des cookies permet la signature générer serveur pour verrouiller l'accès uniquement aux clients en provenance de certaines adresses IP en utilisant domaine de la politique IpAddress par CloudFront developer documentation:

IpAddress (Facultatif)

L'adresse IP du client qui effectue la requête GET. Notez les éléments suivants:

  • Pour permettre à une adresse IP d'accéder à l'objet, omettez le paramètre IpAddress .
  • Vous pouvez spécifier une adresse IP ou une plage d'adresses IP. Par exemple, vous ne pouvez pas définir la stratégie pour autoriser l'accès si l'adresse IP du client se trouve dans l'une des deux plages distinctes.
  • Pour permettre accessfrom une seule adresse IP, vous spécifiez: "IPv4 IP address/32"
  • Vous devez spécifier des plages d'adresses IP au format standard IPv4 CIDR (par exemple, 10.52.176.0/24). [...]

Si le serveur a généré l'URL signé ou cookie avec IpAddress ensemble, d'autres parties seraient autorisées que pour accéder au contenu sur CloudFront si elles proviennent de l'adresse IP correspondante.

+0

Ceci est une application web et les utilisateurs auront toutes sortes d'adresses IP. Avant de mettre le lien de la ressource sur la page de l'utilisateur, je prévois de le signer (url signée ou cookie signé) uniquement si l'utilisateur est autorisé à le télécharger. La contrainte IP n'est pas une solution viable pour moi. Merci Dimitry. – Rose

+1

@Rose, n'avez-vous pas d'informations sur l'adresse IP de l'utilisateur au moment de la génération du lien? –

+0

Hmm .. Intéressant, oui lors de la signature je peux passer une politique qui spécifie l'adresse IP de l'utilisateur. Le seul problème avec cela est - ce n'est pas unique par utilisateur. Probablement les utilisateurs dans une organisation ont une IP de sortie et je ne peux pas dire si un appel particulier provient de l'utilisateur A, ou de l'utilisateur B car ils proviennent tous deux d'une IP (du point de vue de notre serveur.) @Dmitry Guyvoronsky . – Rose