Swift obtener objetos temporales de e URL

URL, de carácter temporal, utiliza una firma criptográfica de tipo " HMAC-SHA1 ", que incluye los siguientes elementos:

  • El valor del método de solicitud, GET por ejemplo.

  • La hora de caducidad, en el formato de segundos desde la época, es decir, la hora de Unix.

  • La vía de acceso de solicitud que empieza a partir de v1 en adelante.

Los elementos se normalizan con líneas nuevas que se añaden entre ellos. Se genera un HMAC que utiliza el algoritmo de hash SHA-1 contra una de las claves temporales (Temp URL ) publicadas anteriormente.

El ejemplo siguiente es un script python de ejemplo para demostrarlo.

Ejemplo

import hmac
from hashlib import sha1
from time import time

method = 'GET'
host = 'https://objectstore.example.com'
duration_in_seconds = 300  # Duration for which the url is valid
expires = int(time() + duration_in_seconds)
path = '/v1/your-bucket/your-object'
key = 'secret'
hmac_body = '%s\n%s\n%s' % (method, expires, path)
hmac_body = hmac.new(key, hmac_body, sha1).hexdigest()
sig = hmac.new(key, hmac_body, sha1).hexdigest()
rest_uri = "{host}{path}?temp_url_sig={sig}&temp_url_expires={expires}".format(
     host=host, path=path, sig=sig, expires=expires)
print rest_uri

Salida de ejemplo

https://objectstore.example.com/v1/your-bucket/your-object?temp_url_sig=ff4657876227fc6025f04fcf1e82818266d022c6&temp_url_expires=1423200992