La firma de URL protege los recursos del servidor de origen contra accesos no autorizados. Alibaba Cloud CDNDCDN ofrece cuatro métodos de firma de URL. El tipo F utiliza hash MD5 con una clave privada y nombres de parámetros predeterminados para lograr una autenticación sencilla.
El tipo F emplea MD5 con una clave privada y los nombres de parámetros predeterminados sign y time. Este método es adecuado para la mayoría de los escenarios básicos de autenticación.
La URL firmada no debe contener caracteres chinos.
La firma de URL no admite URL que ya contienen parámetros de consulta (?), ya que el proceso de firma agrega sus propios parámetros de consulta.
Funcionamiento
-
Formato de la URL firmada
Una URL firmada utiliza el siguiente formato:
http://DomainName/FileName?{sign=<md5hash>&time=<timestamp>}NotaEl contenido dentro de
{}indica los parámetros de autenticación que se agregan a la URL estándar.Los nombres de los parámetros
signytimeson los valores predeterminados. Puede personalizar el Signature Parameter y el Timestamp Parameter en la consola Configure URL signing. -
Parámetro
Descripción
DomainName
El nombre de dominio acelerado por CDN.
PrivateKey
Una clave criptográfica personalizada de 16 a 32 caracteres, compuesta por letras mayúsculas, letras minúsculas y dígitos.
FileName
La ruta del recurso para la solicitud de retorno al origen. Debe comenzar con una barra diagonal (
/).timestamp
La hora en que el servidor de firma genera la URL firmada. En combinación con el periodo de validez, este valor determina cuándo caduca la URL firmada. La hora es una marca de tiempo UNIX, es decir, el número de segundos transcurridos desde las 00:00:00 UTC del 1 de enero de 1970. Se trata de un entero decimal positivo de 10 dígitos, independiente de las zonas horarias. En la consola Configure URL signing, puede establecer el formato de la marca de tiempo como decimal (marca de tiempo UNIX) o hexadecimal (marca de tiempo UNIX).
NotaConfigure el TTL en la consola Configure URL Signing. La URL firmada caduca en
timestamp+ el periodo de validez configurado.md5hash
Una cadena de 32 caracteres generada por el algoritmo MD5. Contiene los dígitos del 0 al 9 y las letras minúsculas de la a a la z.
El valor
md5hashse genera a partir de la siguiente cadena de firma:sstring = "Privatekey+URI+timestamp" (where URI is the relative path of the requested object, such as /Filename, and does not include query parameters) md5hash = md5sum(sstring) -
Lógica de autenticación
Cuando un nodo perimetral de CDNDCDN recibe una solicitud, primero comprueba si ha transcurrido el tiempo correspondiente a
timestamp+validity period.Si
timestamp+validity periodes anterior a la hora actual, la solicitud ha caducado. El servidor devuelve un error HTTP 403.-
Si
timestamp+validity periodes posterior a la hora actual, el servidor construye una cadena de firma con el formatosstring, calcula su valor MD5 y compara el resultado con el valormd5hashpresente en la solicitud.-
Si los valores coinciden, la autenticación se realiza correctamente y se devuelve el recurso solicitado.
NotaUna vez que la autenticación se completa con éxito, el nodo perimetral elimina los parámetros de autenticación de la URL para mejorar la tasa de aciertos de caché y reducir el tráfico de retorno al origen. Por ejemplo:
URL con parámetros de firma:
http://DomainName/FileName?{sign=<md5hash>&time=<timestamp>}-
Después de la autenticación:
URL utilizada para generar la clave de caché:
http://DomainName/FileNameURL para la solicitud de retorno al origen:
http://DomainName/FileName
Si los valores no coinciden, la autenticación falla y el servidor devuelve un error HTTP 403.
-
Ejemplo
A continuación se muestra un ejemplo que ilustra la firma de URL tipo F.
-
Condiciones de muestra
-
Recuperar un objeto del servidor de origen:
http://domain.example.com/test.flvNotaSi la URL de solicitud contiene caracteres no ASCII, debe codificar primero la URL. Utilice la URL codificada para construir la cadena de hash. Por ejemplo:
URL original:
https://example.com/image/AlibabaCloud.jpgURL codificada:
https://example.com/image/%E9%98%BF%E9%87%8C%E4%BA%91.jpg
Establezca PrivateKey como
aliyuncdnexp1234.Establezca timestamp como
55CE8100.
-
-
Proceso
-
Construya la cadena de firma
sstringcon el formatoPrivatekey+URI+timestamp.aliyuncdnexp1234/test.flv55CE8100 -
Calcule el hash MD5 de la cadena de firma:
md5hash = md5sum(aliyuncdnexp1234/test.flv55CE8100) = a37fa50a5fb8f71214b1e7c95ec7a1bd -
Agregue el resultado de la firma y la marca de tiempo como parámetros de consulta para formar la URL firmada:
http://domain.example.com/test.flv?sign=a37fa50a5fb8f71214b1e7c95ec7a1bd&time=55CE8100
-
Cuando un cliente solicita un recurso mediante una URL firmada, la autenticación se realiza correctamente si el valor md5hash calculado por el servidor CDNDCDN coincide con el valor md5hash de la solicitud (por ejemplo, a37fa50a5fb8f71214b1e7c95ec7a1bd) y la URL no ha caducado. De lo contrario, la autenticación falla.