ApsaraVideo VOD vous permet d'utiliser la fonctionnalité de signature d'URL pour protéger le contenu d'origine contre les téléchargements et les accès non autorisés. La signature d'URL prend en charge trois types de signature. Cette rubrique explique le fonctionnement de la signature de type A.
Fonctionnement
Principe de signature d'une URL selon le type A
http://DomainName/Filename?auth_key=timestamp-rand-uid-md5hash
Champs d'une URL signée
Field | Description |
DomainName | Le nom de domaine pour ApsaraVideo VOD. |
Filename | L'URL réelle qui pointe vers la ressource demandée sur le serveur d'origine. La valeur du champ Filename doit commencer par une barre oblique ( |
auth_key | La clé cryptographique que vous avez spécifiée. |
timestamp | L'heure à laquelle une URL signée est générée. Le timestamp et la période de validité par défaut déterminent l'heure 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, le timestamp et la période de validité de l'URL signée sont calculés selon la formule suivante : Timestamp = Timestamp UNIX sur le serveur de signature + Période de validité configurée sur le serveur de signature. Période de validité = Timestamp + Période de validité par défaut. |
rand | Un nombre aléatoire. Dans la plupart des cas, la valeur de ce champ est définie sur 0. Pour générer une URL différente à chaque fois, nous vous recommandons d'utiliser un UUID. La valeur ne doit pas contenir de tirets ( |
uid | L'ID utilisateur. Définissez ce champ sur 0. |
md5hash | La chaîne calculée à l'aide de l'algorithme MD5. Elle doit comporter 32 caractères et peut contenir des chiffres et des lettres minuscules.
|
Logique de signature
Lorsqu'un nœud de présence (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 obtenue 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 obtenue en additionnant les valeurs de
timestampet de lapériode de validité par défautest postérieure à l'heure actuelle, le POP génère une chaîne basée sur la variablesstringdécrite dans le tableau précédent. Ensuite, il 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.
RemarqueLorsque 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.
Exemple de concaténation d'une URL signée
L'exemple suivant montre comment implémenter la signature de type A.
Conditions de l'exemple
-
Récupérez un objet depuis le serveur d'origine :
http://example.aliyundoc.com/video/standard/test.mp4RemarqueSi l'URL de l'objet récupéré depuis le serveur d'origine contient des caractères chinois, vous devez encoder l'URL avant de concaténer une URL signée.
Définissez PrivateKey sur aliyunvodexp1234.
Convertissez le timestamp de génération de l'URL signée, soit 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./video/standard/test.mp4-1627747200-0-0-aliyunvodexp1234 -
Calculez la valeur de
md5hashà partir de la chaîne de signature.HashValue = md5sum("/video/standard/test.mp4-1627747200-0-0-aliyunvodexp1234") = 0e9048c8c7de46b6015618f42de7**** -
Générez une URL signée.
http://example.aliyundoc.com/video/standard/test.mp4?auth_key=1627747200-0-0-0e9048c8c7de46b6015618f42de7****
Lorsqu'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 0e9048c8c7de46b6015618f42de7****, la requête passe l'authentification. Sinon, l'authentification échoue.