ApsaraVideo VOD vous permet d'utiliser la fonctionnalité de signature d'URL pour protéger le contenu source contre les téléchargements et les accès non autorisés. Cette fonctionnalité prend en charge trois types de signature. Cette rubrique décrit le fonctionnement de la signature de type B.
Fonctionnement
Chiffrement d'une URL selon le type B
http://DomainName/timestamp/md5hash/FileName
Champs d'une URL signée
Champ | Description |
DomainName | Le nom de domaine pour ApsaraVideo VOD. |
timestamp | L'heure de génération de l'URL signée. L'horodatage et la période de validité par défaut déterminent le moment d'expiration de l'URL signée. L'heure est exprimée au format UTC+8 et suit le format AAAAMMJJHHMM. Remarque Dans la plupart des cas, une URL signée expire après l'écoulement de la période de validité par défaut que vous avez spécifiée dans ApsaraVideo VOD. Si vous spécifiez une période de validité pour une URL signée sur le serveur de signature, l'horodatage et la période de validité de l'URL signée sont calculés selon la formule suivante : Horodatage = Horodatage UNIX sur le serveur de signature + Période de validité configurée sur le serveur de signature. Période de validité = Horodatage + Période de validité par défaut. |
md5hash | La chaîne calculée à l'aide de l'algorithme MD5. Cette chaîne doit comporter 32 caractères et peut contenir des chiffres et des lettres minuscules. |
NomFichier | L'URL réelle pointant vers la ressource demandée sur le serveur source. La valeur du champ NomFichier doit commencer par une barre oblique ( |
Logique de signature
Lorsqu'un nœud de périphérie (POP) Alibaba Cloud CDN reçoit une requête, il vérifie si l'heure obtenue en additionnant les valeurs de timestamp et de la période de validité par défaut est antérieure à l'heure actuelle.
Si l'heure calculée en additionnant les valeurs de
timestampet de lapériode de validité par défautest antérieure à l'heure actuelle, le POP considère que l'URL a expiré et renvoie le code d'état HTTP 403.-
Si l'heure calculée en additionnant
timestampet lapériode de validité par défautest postérieure à l'heure actuelle, le POP génère une chaîne basée sur lasstringdécrite dans le tableau précédent. Ensuite, le POP utilise l'algorithme MD5 pour calculer la valeur demd5hashet compare la valeurmd5hashcalculée avec la valeurmd5hashprésente dans la requête.Si les deux valeurs diffèrent, l'authentification échoue. Le POP renvoie le code d'état HTTP 403.
-
Si les deux valeurs sont identiques, la requête passe l'authentification. Le POP renvoie la ressource demandée.
RemarqueSi la requête passe l'authentification, les paramètres spécifiques à l'authentification sont supprimés de l'URL afin d'augmenter le taux de succès du cache et de réduire le trafic vers l'origine.
Le format de l'URL dans la requête de retour à l'origine est
http://DomainName/FileName.Le format de l'URL utilisée pour générer une clé de cache est
http://DomainName/FileName.
Exemples
L'exemple suivant montre comment implémenter la signature de type B.
Conditions de l'exemple
-
Récupération d'un objet depuis le serveur source :
http://example.aliyundoc.com/video/standard/test.mp4RemarqueSi l'URL de l'objet que vous récupérez depuis le serveur source contient des caractères chinois, vous devez encoder l'URL avant de concaténer une URL signée.
Définissez PrivateKey sur aliyunvodexp1234.
Convertissez l'horodatage de génération de l'URL signée 2021-08-01 00:00:00 (UTC+8) en entier décimal 1627747200.
Procédure de concaténation
-
Générez une chaîne de signature utilisée pour calculer la valeur de
md5hash.aliyunvodexp12341627747200/video/standard/test.mp4 -
Calculez la valeur de
md5hashà l'aide de la chaîne de signature.md5hash = md5sum("aliyunvodexp12341627747200/video/standard/test.mp4") = 9044548ef1527deadafa49a890a3**** -
Générez une URL signée.
http://example.aliyundoc.com/1627747200/9044548ef1527deadafa49a890a3****/video/standard/test.mp4
Si un client utilise une URL signée pour demander une ressource, le POP compare la valeur md5hash calculée avec la valeur md5hash présente dans la requête. Si les deux valeurs sont identiques, par exemple 9044548ef1527deadafa49a890a3, la requête passe l'authentification. Dans le cas contraire, l'authentification échoue.