La signature d'URL protège les ressources de votre serveur d'origine contre les accès non autorisés. Alibaba Cloud CDNDCDN propose quatre méthodes de signature d'URL. Le type F utilise le hachage MD5 avec une clé privée et des noms de paramètres par défaut pour une authentification simple.
Le type F utilise le hachage MD5 avec une clé privée et les noms de paramètres par défaut sign et time. Cette méthode convient à la plupart des scénarios d'authentification de base.
L'URL signée ne doit pas contenir de caractères chinois.
La signature d'URL ne prend pas en charge les URL contenant déjà des paramètres de requête (?), car elle ajoute ses propres paramètres.
Fonctionnement
-
Format de l'URL signée
Une URL signée utilise le format suivant :
http://DomainName/FileName?{sign=<md5hash>&time=<timestamp>}RemarqueLe contenu entre
{}indique les paramètres d'authentification ajoutés à l'URL standard.Les noms de paramètres
signettimesont définis par défaut. Personnalisez les champs Signature Parameter et Timestamp Parameter dans la console Configurer la signature d'URL. -
Paramètre
Description
DomainName
Nom de domaine accéléré par CDN.
PrivateKey
Clé cryptographique personnalisée de 16 à 32 caractères, composée de lettres majuscules, de lettres minuscules et de chiffres.
FileName
Chemin d'accès à la ressource pour la requête vers l'origine. Doit commencer par une barre oblique (
/).timestamp
Heure à laquelle le serveur de signature génère l'URL signée. Combinée à la période de validité, cette valeur détermine l'expiration de l'URL signée. L'heure est un horodatage UNIX, c'est-à-dire le nombre de secondes écoulées depuis le 1er janvier 1970 à 00:00:00 UTC. Il s'agit d'un entier décimal positif à 10 chiffres, indépendant des fuseaux horaires. Dans la console Configurer la signature d'URL, vous pouvez définir le format de l'horodatage en décimal (horodatage UNIX) ou en hexadécimal (horodatage UNIX).
RemarqueConfigurez le champ TTL dans la console Configurer la signature d'URL. L'URL signée expire à
timestamp+ la période de validité configurée.md5hash
Chaîne de 32 caractères générée par l'algorithme MD5. Contient les chiffres 0–9 et les lettres minuscules a–z.
La valeur
md5hashest générée à partir de la chaîne de signature suivante :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) -
Logique d'authentification
Lorsqu'un nœud périphérique CDNDCDN reçoit une requête, il vérifie d'abord si
timestamp+validity periodest écoulé.Si
timestamp+validity periodest antérieur à l'heure actuelle, la requête a expiré. Le serveur renvoie une erreur HTTP 403.-
Si
timestamp+validity periodest postérieur à l'heure actuelle, le serveur construit une chaîne de signature au formatsstring, calcule sa valeur MD5 et compare le résultat avec la valeurmd5hashde la requête.-
Si les valeurs correspondent, l'authentification réussit et le serveur renvoie la ressource demandée.
RemarqueAprès une authentification réussie, le nœud périphérique supprime les paramètres d'authentification de l'URL pour améliorer le taux de succès du cache et réduire le trafic vers l'origine. Par exemple :
URL avec les paramètres de signature :
http://DomainName/FileName?{sign=<md5hash>&time=<timestamp>}-
Après authentification :
URL utilisée pour générer la clé de cache :
http://DomainName/FileNameURL pour la requête vers l'origine :
http://DomainName/FileName
Si les valeurs ne correspondent pas, l'authentification échoue et le serveur renvoie une erreur HTTP 403.
-
Exemple
L'exemple suivant illustre la signature d'URL de type F.
-
Conditions de l'exemple
-
Récupération d'un objet depuis le serveur d'origine :
http://domain.example.com/test.flvRemarqueSi l'URL de la requête contient des caractères non ASCII, encodez d'abord l'URL. Utilisez l'URL encodée pour construire la chaîne de hachage. Par exemple :
URL d'origine :
https://example.com/image/AlibabaCloud.jpgURL encodée :
https://example.com/image/%E9%98%BF%E9%87%8C%E4%BA%91.jpg
Définissez PrivateKey sur
aliyuncdnexp1234.Définissez timestamp sur
55CE8100.
-
-
Procédure
-
Construisez la chaîne de signature
sstringau formatPrivatekey+URI+timestamp.aliyuncdnexp1234/test.flv55CE8100 -
Calculez le hachage MD5 de la chaîne de signature :
md5hash = md5sum(aliyuncdnexp1234/test.flv55CE8100) = a37fa50a5fb8f71214b1e7c95ec7a1bd -
Ajoutez le résultat de la signature et l'horodatage en tant que paramètres de requête pour former l'URL signée :
http://domain.example.com/test.flv?sign=a37fa50a5fb8f71214b1e7c95ec7a1bd&time=55CE8100
-
Lorsqu'un client demande une ressource avec une URL signée, l'authentification réussit si la valeur md5hash calculée par le serveur CDNDCDN correspond à la valeur md5hash de la requête — par exemple, a37fa50a5fb8f71214b1e7c95ec7a1bd — et si l'URL n'a pas expiré. Sinon, l'authentification échoue.