Pour appliquer l'authentification à double jeton lorsque les spectateurs accèdent à une ressource de streaming, vous configurez des routes distinctes. Une route est une configuration qui correspond aux requêtes pour Media CDN et qui dirige le trafic HTTP vers une origine. Media CDN est compatible avec les routes pour les ressources HTTP Live Streaming (HLS) ou Dynamic Adaptive Streaming over HTTP (DASH). Pour en savoir plus sur les routes dans Media CDN, consultez Configurer des routes de service.
Pour les flux HLS, Media CDN est compatible avec l'authentification à double jeton via les cookies et les paramètres de requête d'URL (sans cookie). Pour les flux DASH, Media CDN n'est compatible qu'avec l'authentification à double jeton basée sur les cookies.
Cette page explique comment configurer les routes Media CDN pour protéger le contenu à l'aide de l'authentification à double jeton.
Avant de commencer
Procédez comme suit :
Pour les jetons de courte durée, choisissez l'un des algorithmes de signature suivants :
- Signatures Ed25519
- Codes HMAC (Hash-based Message Authentication Code) à clé symétrique
Vous ne pouvez activer les algorithmes de signature HMAC symétriques que pour les routes configurées pour générer de nouveaux jetons de longue durée. Nous vous recommandons d'utiliser des signatures Ed25519 pour des performances et une sécurité optimales, et des HMAC à clé symétrique uniquement lorsque cela est nécessaire pour assurer la compatibilité avec d'autres CDN.
Incluez les clés requises dans une ressource
EdgeCacheKeyset
.Les jetons doivent être signés ou validés avec des clés dans une ressource
EdgeCacheKeyset
. Le keyset doit inclure les clés appropriées pour l'algorithme de signature sélectionné. Le tableau suivant décrit chacun des algorithmes de signature et les clés requises.Algorithme de signature Clés requises dans la collection de clés Ed25519 Clés publiques HMAC-SHA1 Clés de validation partagées HMAC-SHA256 Clés de validation partagées Il est recommandé de créer deux ensembles de clés distincts, l'un pour les jetons de courte durée et l'autre pour les jetons de longue durée.
Toutefois, si vous utilisez DASH et des fichiers de description de présentation de contenu multimédia (MPD) dynamiques, vous devez utiliser le même ensemble de clés pour les jetons de longue et de courte durée.
Pour les jetons de longue durée, choisissez l'un des formats suivants :
- Cookies
- Paramètres de requête d'URL
Configurer des jetons de courte durée
En fonction de l'algorithme de signature que vous souhaitez utiliser, configurez des jetons de courte durée à l'aide de l'une des options suivantes.
Signature Ed25519
Générez une clé privée :
openssl genpkey -algorithm ed25519 -outform PEM -out SSL_KEY_NAME.private.key
Remplacez
SSL_KEY_NAME
par le nom d'une clé.Générez une clé publique à partir de la clé privée :
openssl pkey -outform DER -pubout -in SSL_KEY_NAME.private.key |\ tail -c +13 |\ python3 -c "import base64, sys; print(('%s' % base64.urlsafe_b64encode(sys.stdin.buffer.read()))[2:-1])"
Créez une collection de clés avec une seule clé publique :
Console
Dans la console Google Cloud , accédez à la page Media CDN.
Cliquez sur l'onglet Collections de clés.
Cliquez sur
Créer une collection de clés.Dans le champ Nom, saisissez un nom unique pour le trousseau de clés.
Facultatif : Dans le champ Description, saisissez une description de votre collection de clés.
Facultatif : Cliquez sur Ajouter un libellé, puis saisissez une ou plusieurs paires clé-valeur pour votre collection de clés.
Cliquez sur Ajouter une clé publique, puis procédez comme suit :
- Dans le champ ID, saisissez un ID alphanumérique.
- Sélectionnez Saisir la valeur, puis spécifiez la valeur encodée en base64 de votre clé publique Ed25519.
Cliquez sur Créer une collection de clés.
gcloud
Exécutez la commande
gcloud edge-cache keysets create
.gcloud edge-cache keysets create SHORT_KEYSET_NAME \ --public-key='id=SSL_PUBLIC_KEY_NAME,value=SSL_PUBLIC_KEY_VALUE'
Remplacez les éléments suivants :
SHORT_KEYSET_NAME
: nom unique du keyset, par exempleprod-vod-keyset
SSL_PUBLIC_KEY_NAME
: nom de votre clé publique SSLSSL_PUBLIC_KEY_VALUE
: valeur de votre clé publique SSL
Pour examiner les clés associées au trousseau de clés, utilisez la commande
gcloud edge-cache keysets describe
.gcloud edge-cache keysets describe prod-vod-keyset
Le résultat ressemble à ce qui suit :
name: prod-vod-keyset description: "Keyset for prod.example.com" publicKeys: - id: "key-20200918" value: "DThVLjhAKm3VYOvLBAwFZ5XbjVyF98Ias8NZU0WEM9w" - id: "key-20200808" value: "Lw7LDSaDUrbDdqpPA6JEmMF5BA5GPtd7sAjvsnh7uDA="
Terraform
HMAC à clé symétrique
Si vous n'avez pas encore utilisé Secret Manager, configurez-le.
Ajoutez une version de secret au format binaire.
Attribuez le rôle d'accès Secret Manager (
roles/secretmanager.secretAccessor
) au compte de service Media CDN :Console
Dans la console Google Cloud , accédez à la page Secret Manager.
Cochez la case à côté du nom du secret.
Cliquez sur Afficher le panneau d'informations.
Dans le panneau d'informations, cliquez sur Ajouter un compte principal.
Pour Nouveaux comptes principaux, saisissez le compte de service Media CDN au format suivant :
service-PROJECT_NUMBER@gcp-sa-mediaedgefill.iam.gserviceaccount.com
Remplacez
PROJECT_NUMBER
par le numéro de votre projet.Pour Sélectionner un rôle, sélectionnez Secret Manager, puis Accesseur de secrets Secret Manager.
gcloud
Exécutez la commande
gcloud secrets add-iam-policy-binding
.gcloud secrets add-iam-policy-binding projects/PROJECT_NUMBER/secrets/SECRET_ID \ --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-mediaedgefill.iam.gserviceaccount.com" \ --role="roles/secretmanager.secretAccessor"
Remplacez les éléments suivants :
PROJECT_NUMBER
: votre numéro de projetSECRET_ID
: ID du secret
Accédez à vos versions de secrets et copiez les chemins d'accès aux secrets, y compris les numéros de version.
Créez une collection de clés avec les secrets partagés dans une clé de validation partagée :
Console
Dans la console Google Cloud , accédez à la page Media CDN.
Cliquez sur l'onglet Collections de clés.
Cliquez sur
Créer une collection de clés.Dans le champ Nom, saisissez un nom unique pour le trousseau de clés.
Facultatif : Dans le champ Description, saisissez une description de votre collection de clés.
Facultatif : Cliquez sur Ajouter un libellé, puis saisissez une ou plusieurs paires clé-valeur pour votre collection de clés.
Pour spécifier une clé de validation partagée, cliquez sur Ajouter une clé de validation partagée, puis procédez comme suit :
Pour Secret, sélectionnez un secret dans la liste, saisissez-le manuellement en spécifiant son ID de ressource ou créez-en un, puis sélectionnez-le.
Pour Version du secret, sélectionnez une version dans la liste ou créez-en une, puis sélectionnez-la.
Cliquez sur Créer une collection de clés.
gcloud
Exécutez la commande
gcloud edge-cache keysets create
.gcloud edge-cache keysets create SHORT_KEYSET_NAME \ --validation-shared-key='secret_version=projects/PROJECT_NUMBER/secrets/SECRET_ID/versions/KEY_VERSION'
Remplacez les éléments suivants :
SHORT_KEYSET_NAME
: nom unique du keyset, par exempleprod-vod-keyset
PROJECT_NUMBER
: ID de votre projet.SECRET_ID
: ID de ressource du secretKEY_VERSION
: version du secret que vous souhaitez utiliser
Configurer des jetons de longue durée
LesGoogle-owned and managed keys sont limités par ensemble de clés. Cela signifie que deux ensembles de clés différents ont desGoogle-owned and managed keysdifférents. Google-owned and managed keys sont régulièrement renouvelées.
Configurez des jetons de longue durée à l'aide de l'une des options suivantes :
Console
Dans la section Clés, sélectionnez UtiliserGoogle-owned and managed key pour l'authentification à double jeton.
gcloud et YAML
Utilisez l'une des options suivantes :
Créez une clé de signature gérée par Google :
gcloud edge-cache keysets create LONG_KEYSET_NAME \ --public-key='id=google-managed-key,managed=true'
Remplacez
LONG_KEYSET_NAME
par un nom de clé, par exempleprod-vod-keyset-long
.Modifier un ensemble de clés existant :
Exportez votre ensemble de clés dans un fichier YAML. Utilisez la commande
gcloud edge-cache keysets export
.gcloud edge-cache keysets export LONG_KEYSET_NAME \ --destination=prod-vod-keyset-long.yaml
Dans un éditeur de texte ou dans votre outil de gestion de la configuration, modifiez la configuration de votre ensemble de clés pour qu'elle ressemble à ce qui suit :
name: projects/my-project/locations/global/edgeCacheKeysets/LONG_KEYSET_NAME publicKeys: - id: some-key value: MC4CAQAwBQYDK2VwBCIEINV2iYugIWBuvGBJUQ_Ab69E4v4zcVqvgYHw-iZxGzcd - id: google-managed-key managed: true
Importez le jeu de clés modifié. Exécutez la commande
gcloud edge-cache keysets import
:gcloud edge-cache keysets import LONG_KEYSET_NAME \ --source=prod-vod-keyset-long.yaml
Vous pouvez inclure des clés publiques supplémentaires dans le jeu de clés de jeton de longue durée. La collection de clés ne peut contenir au maximum que trois clés publiques. En pratique, cela signifie que le keyset peut comporter deux clés gérées par l'utilisateur et une cléGoogle-owned and managed key.
Media CDN utilise toujours la Google-owned and managed keypour générer des jetons. Les clés gérées par l'utilisateur ne peuvent être utilisées que pour la validation.
L'inclusion de clés publiques supplémentaires est utile pour permettre à votre application de lecteur d'accéder aux playlists et aux segments multimédias à l'aide de requêtes signées générées par vos propres clés privées.
Configurer l'échange de jetons
Cette section explique comment configurer l'échange de jetons en créant plusieurs routes. Une route vous permet d'optimiser le comportement en fonction du type de contenu, des attributs client et de vos exigences d'actualisation. Dans les exemples suivants, nous utilisons des routes pour configurer l'échange de jetons pour chaque partie d'une requête média.
Configurer la route du fichier manifeste principal pour exiger des jetons de courte durée
Configurez Media CDN pour exiger des jetons de courte durée sur la route du fichier manifeste principal.
Console
Activez l'authentification par jeton de courte durée sur la route du fichier manifeste principal :
Dans la console Google Cloud , accédez à la page Media CDN.
Pour ouvrir la page Détails d'un service, cliquez sur son nom.
Pour passer en mode Édition, cliquez sur le bouton Modifier.
Pour accéder à la section Routage, cliquez sur Suivant.
Développez la règle d'hôte à laquelle vous souhaitez ajouter la règle de route du fichier manifeste principal.
Cliquez sur Ajouter une règle de routage.
Vous pouvez également modifier une règle de routage en cliquant sur
Modifier sur la ligne correspondante.Dans le volet Modifier la règle de routage, définissez une valeur pour Priorité (par exemple,
1
).Dans Description, saisissez une brève description qui vous permettra d'identifier la règle dans la liste.
Dans la section Correspondance, cliquez sur Ajouter une condition de correspondance. Ensuite, procédez comme suit :
- Pour Type de correspondance, sélectionnez Correspondance du modèle de chemin d'accès.
- Sous Correspondance du chemin d'accès, spécifiez les noms ou les modèles de chemin d'accès pour le fichier manifeste DASH (MPD) ou la playlist principale HLS (M3U8). Pour en savoir plus, consultez Correspondance des chemins d'accès.
Cliquez sur Configurations avancées.
Dans la section Action de routage, cliquez sur Ajouter un élément.
Dans le champ Type, sélectionnez Règle CDN.
Dans la section Requête signée, sélectionnez Exiger des jetons pour Mode de requête signée.
Dans la section Ensemble de clés de requête signée, procédez comme suit :
Pour spécifier le keyset pour les jetons de courte durée, cliquez sur Sélectionner un keyset, puis sélectionnez votre keyset de jetons de courte durée.
Vous pouvez également créer un ensemble de clés contenant les clés dont vous avez besoin en cliquant sur Créer un ensemble de clés. Sélectionnez-le ensuite.
Pour Algorithme de signature, sélectionnez Ed25519 avec clés publiques.
Pour Paramètre de requête de jeton, conservez la valeur par défaut
edge-cache-token
.Si vous prévoyez d'utiliser les paramètres de requête de l'URL du fichier manifeste HLS plutôt que des cookies pour l'authentification, spécifiez le paramètre dans lequel stocker les jetons de requête.
Pour Durée de vie maximale, spécifiez, en secondes, la durée de vie maximale des jetons de requête entrants.
Pour enregistrer les modifications apportées à la section Action de route, cliquez sur OK.
Pour enregistrer les modifications apportées à la règle d'itinéraire, cliquez sur Enregistrer.
gcloud et YAML
Exportez votre configuration Media CDN dans un fichier YAML. Utilisez la commande
gcloud edge-cache services export
.gcloud edge-cache services export SERVICE_NAME \ --destination=FILENAME.yaml
Remplacez les éléments suivants :
SERVICE_NAME
: nom de votre service.FILENAME
: nom de votre fichier YAML
Pour activer l'authentification par jeton de courte durée dans la règle de route du fichier manifeste principal, spécifiez une configuration
signedTokensOptions
dans la sectioncdnPolicy
de la route du fichier YAML.pathMatchers: - name: "ROUTE_NAME" routeRules: - priority: 1 description: "ROUTE_DESCRIPTION" origin: "ORIGIN_NAME" matchRules: - pathTemplateMatch: "/MANIFEST_OR_PLAYLIST" routeAction: cdnPolicy: cacheMode: CACHE_ALL_STATIC signedRequestMode: REQUIRE_TOKENS signedRequestKeyset: SHORT_KEYSET_NAME signedRequestMaximumExpirationTtl: SIGNED_REQUEST_MAXIMUM_EXPIRATION_TIME signedTokenOptions: tokenQueryParameter: SHORT_TOKEN_NAME
Remplacez les éléments suivants :
ROUTE_NAME
: nom de la règle de routage.ROUTE_DESCRIPTION
: description de la règle de routeORIGIN_NAME
: nom de l'origineMANIFEST_OR_PLAYLIST
: nom du fichier de playlist principale HLS (M3U8) ou du fichier manifeste DASH (MPD). Pour en savoir plus, consultez Correspondance des chemins d'accès.SHORT_KEYSET_NAME
: nom de la collection de clés à utiliser pour les jetons de courte duréeSIGNED_REQUEST_MAXIMUM_EXPIRATION_TIME
: délai d'expiration des requêtes signées, par exemple600s
. Pour en savoir plus, consultezsignedRequestMaximumExpirationTtl
.- Facultatif :
SHORT_TOKEN_NAME
: paramètre de requête dans lequel trouver le jeton court. La valeur par défaut estedge-cache-token
. Pour en savoir plus, consultez la section consacrée àSignedTokenOptions
.
Lorsque vous utilisez des HMAC à clé symétrique, dans la section
signedTokenOptions
, ajoutezallowedSignatureAlgorithms
avec sa valeur sous la formeHMAC_SHA_256
:allowedSignatureAlgorithms: - HMAC_SHA_256
Pour mettre à jour le service, importez votre configuration Media CDN à partir du fichier YAML. Utilisez la commande
gcloud edge-cache services import
.gcloud edge-cache services import SERVICE_NAME \ --source=FILENAME.yaml
La procédure d'activation de l'authentification par jeton unique est terminée.
Pour configurer l'authentification à double jeton, consultez les sections suivantes.
Configurer la règle de routage du fichier manifeste principal pour générer des jetons de longue durée
Configurez Media CDN pour générer des jetons de longue durée sur la route du fichier manifeste principal. Choisissez les cookies ou les paramètres de requête d'URL pour générer ces jetons.
Console
Modifiez la règle de route du fichier manifeste principal afin que Media CDN puisse générer des jetons de longue durée sur la route :
- Sur la page Modifier la règle de routage, cliquez sur Configurations avancées.
- Dans le champ Type, sélectionnez Règle CDN.
- Développez Authentification à double jeton.
- Pour Action de signature, sélectionnez Générer un nouveau jeton de longue durée.
Pour Type de signature, sélectionnez l'une des options suivantes :
- via les cookies (flux HLS et DASH) : configure Media CDN pour renvoyer un
Edge-Cache-Cookie
avec la réponse du fichier manifeste principal. - via les paramètres de requête URL du fichier manifeste HLS (sans cookie) : configure Media CDN pour manipuler le fichier manifeste HLS principal en ajoutant un jeton de longue durée à chaque URL.
- via les cookies (flux HLS et DASH) : configure Media CDN pour renvoyer un
Dans la section Générer un nouveau jeton de longue durée, procédez comme suit :
Pour spécifier un keyset pour les jetons de longue durée, cliquez sur Sélectionner un keyset, puis sélectionnez votre keyset de jetons de longue durée.
Vous pouvez également cliquer sur Créer un ensemble de clés pour créer un ensemble de clés contenant les clés dont vous avez besoin. Sélectionnez-le ensuite.
Pour Valeur TTL du jeton, spécifiez, en secondes, la durée de vie maximale du jeton de longue durée.
Pour Type de signature, si vous avez sélectionné l'option via les cookies, dans la section Paramètres copiés, sélectionnez les paramètres que vous souhaitez que Media CDN copie du jeton de courte durée vers le jeton de longue durée. Pour utiliser l'authentification à double jeton, vous devez sélectionner
PathGlobs
(ou l'un de ses alias,acl
oupaths
) ouURLPrefix
.Si vous avez sélectionné l'option via les paramètres de requête URI du fichier manifeste HLS, conservez la valeur par défaut
edge-cache-token
pour Paramètre de requête du jeton.
Pour enregistrer les modifications apportées à la section Action de route, cliquez sur OK.
Pour enregistrer les modifications apportées à la règle d'itinéraire, cliquez sur Enregistrer.
Un message s'affiche pour vous demander si vous souhaitez créer les routes pour les playlists et les segments de contenus multimédias automatiquement ou manuellement. Si vous sélectionnez l'option automatique, une seule route est créée pour la signature des cookies et deux routes pour la signature sans cookie. Si vous sélectionnez l'option manuelle, passez à la section suivante.
gcloud et YAML
Modifiez la section addSignatures
de la règle de routage du fichier manifeste principal afin que Media CDN puisse générer des jetons de longue durée sur la route :
Cookies
addSignatures:
actions:
- GENERATE_COOKIE
keyset: LONG_KEYSET_NAME
tokenTtl: TOKEN_EXPIRATION_TIME
copiedParameters:
- PathGlobs
- SessionID
Remplacez les éléments suivants :
LONG_KEYSET_NAME
: nom de votre ensemble de clés de jeton de longue duréeTOKEN_EXPIRATION_TIME
: délai d'expiration du jeton de longue durée (par exemple,86400s
pour un délai d'expiration d'un jour)
Cet exemple de code implémente les modifications suivantes :
addSignatures.actions: GENERATE_COOKIE
: configure Media CDN pour renvoyer unEdge-Cache-Cookie
avec la réponse du fichier manifeste principal.copiedParameters.PathGlobs
: configure Media CDN pour copier lePathGlobs
du jeton de courte durée vers le jeton de longue durée. Pour utiliser l'authentification à double jeton, vous devez utilisercopiedParameters.PathGlobs
oucopiedParameters.URLPrefix
. Pour en savoir plus, consultezcopiedParameters
.Facultatif :
copiedParameters.SessionID
configure Media CDN pour copierSessionID
du jeton de courte durée vers le jeton de longue durée.
Lorsque l'action GENERATE_COOKIE
est appliquée, Media CDN renvoie un en-tête Set-Cookie
semblable à celui-ci avec la réponse du fichier manifeste principal :
Set-Cookie: Edge-Cache-Cookie=PathGlobs=PATHS~SessionID=SESSION_ID~Expires=EXPIRATION~_GO=Generated~Signature=SIGNATURE
Paramètres de requête d'URL
addSignatures:
actions:
- GENERATE_TOKEN_HLS_COOKIELESS
keyset: LONG_KEYSET_NAME
tokenTtl: TOKEN_EXPIRATION_TIME
copiedParameters:
- PathGlobs
- SessionID
tokenQueryParameter: LONG_TOKEN_NAME
Remplacez les éléments suivants :
LONG_KEYSET_NAME
: nom de votre ensemble de clés de longue duréeTOKEN_EXPIRATION_TIME
: délai d'expiration du jeton de longue durée (par exemple,86400s
pour un délai d'expiration d'un jour)
Cet exemple de code implémente les modifications suivantes :
addSignatures.actions: GENERATE_TOKEN_HLS_COOKIELESS
: configure Media CDN pour manipuler le fichier manifeste principal HLS en ajoutant un jeton de longue durée à chaque URI présent.copiedParameters.PathGlobs
: configure Media CDN pour copier lePathGlobs
du jeton de courte durée vers le jeton de longue durée. Pour utiliser l'authentification à double jeton, vous devez utilisercopiedParameters.PathGlobs
oucopiedParameters.URLPrefix
. Pour en savoir plus, consultezcopiedParameters
.Facultatif :
copiedParameters.SessionID
configure Media CDN pour copierSessionID
du jeton de courte durée vers le jeton de longue durée.Facultatif :
LONG_TOKEN_NAME
: paramètre de requête dans lequel placer le jeton long généré. La valeur par défaut estedge-cache-token
. Pour en savoir plus, consultez la section consacrée àtokenQueryParameter
.
Le fichier manifeste suivant montre l'action GENERATE_TOKEN_HLS_COOKIELESS
appliquée :
#EXTM3U #EXT-X-STREAM-INF:BANDWIDTH=1280000,AVERAGE-BANDWIDTH=1000000 http://example.com/HLS_PRIMARY_PLAYLIST.m3u8?LONG_TOKEN_NAME=PathGlobs=PATHS~SessionID=SESSION_ID~Expires=EXPIRATION~_GO=Generated~Signature=SIGNATURE
Media CDN vérifie le jeton de courte durée, puis génère et stocke le jeton de longue durée dans le paramètre de requête LONG_TOKEN_NAME
.
Configurer les routes des playlists et des segments de contenus multimédias pour exiger des jetons de longue durée
Configurez les routes des playlists et des segments de médias pour qu'elles nécessitent des jetons de longue durée.
Console
Cookies
Créez une règle de routage pour la route des playlists et segments de médias :
- Sur la page Modifier le service de cache Edge, dans la section Routage, cliquez sur la règle d'hôte qui comporte la route du fichier manifeste principal.
- Cliquez sur Ajouter une règle de routage.
- Dans le volet Modifier la règle de routage, définissez une valeur Priorité supérieure à celle de la route du fichier manifeste principal (par exemple,
2
). Plus la valeur est élevée, plus la priorité est faible. - Dans Description, saisissez une brève description qui vous permettra d'identifier la règle dans la liste.
Définissez les champs suivants comme suggéré :
- Sélectionnez une origine : identique à celle de la règle de routage du fichier manifeste principal.
- Ajoutez une condition de correspondance : identique à celle de la règle de routage du fichier manifeste principal.
- Type : Règle CDN
- Mode de requête signée : Nécessite des jetons
- Sélectionnez une collection de clés : comme pour les jetons de longue durée
- Algorithme de signature : identique à celui de la règle de route du fichier manifeste principal
Développez Authentification à double jeton.
Pour Action de signature, conservez la valeur par défaut Aucune.
Cliquez sur OK, puis sur Enregistrer.
Paramètres de requête d'URL
Créez une règle de routage pour la playlist multimédia.
- Sur la page Modifier le service de cache Edge, dans la section Routage, cliquez sur la règle d'hôte qui comporte la route du fichier manifeste principal.
- Cliquez sur Ajouter une règle de routage.
- Dans le volet Modifier la règle de routage, définissez une valeur Priorité supérieure à celle de la route du fichier manifeste principal (par exemple,
2
). Plus la valeur est élevée, plus la priorité est faible. - Dans Description, saisissez une brève description qui vous aidera à identifier la règle dans la liste.
Définissez les champs suivants comme suggéré :
- Sélectionnez une origine : la même que pour la règle de route du fichier manifeste principal.
- Ajoutez une condition de correspondance : elle est identique à celle de la règle de route du fichier manifeste principal.
- Type : Règle CDN
- Mode de requête signée : Nécessite des jetons
- Sélectionnez un ensemble de clés : comme pour les jetons de longue durée
- Algorithme de signature : identique à celui de la règle de routage du fichier manifeste principal
- Paramètre de requête de jeton : identique à celui des jetons de longue durée
Développez Authentification à double jeton.
Pour Action de signature, sélectionnez Propager un jeton de longue durée existant.
Cette option n'est activée qu'une fois que Media CDN a vérifié que le jeton de longue durée a été généré à l'aide du type de signature via les paramètres de requête URI du fichier manifeste HLS (sans cookie).
Pour Paramètre de requête de jeton, conservez la valeur par défaut
edge-cache-token
.Cliquez sur OK, puis sur Enregistrer.
Créez une règle de routage pour les segments multimédias.
Cette route est semblable à celle des playlists multimédias, avec les principales différences suivantes :
- Pour Priorité, définissez une valeur supérieure à celle de la règle de routage de la playlist multimédia (par exemple,
3
). - Dans Description, saisissez une brève description qui vous aidera à identifier la règle dans la liste.
- Dans la section Authentification à double jeton, pour Action de signature, conservez la valeur par défaut Aucune.
- Pour Priorité, définissez une valeur supérieure à celle de la règle de routage de la playlist multimédia (par exemple,
gcloud et YAML
Modifiez le fichier YAML :
Cookies
Configurez la playlist et les segments multimédias pour qu'ils nécessitent des cookies de longue durée :
- priority: 2
description: "SEGMENTS_ROUTE_DESCRIPTION"
origin: "ORIGIN_NAME"
matchRules:
- pathTemplateMatch: "/**.m3u8" # HLS media playlists
- pathTemplateMatch: "/**.ts" # HLS segments
- pathTemplateMatch: "/**.m4s" # DASH / CMAF segments
routeAction:
cdnPolicy:
cacheMode: CACHE_ALL_STATIC
signedRequestMode: REQUIRE_TOKENS
signedRequestKeyset: LONG_KEYSET_NAME
Remplacez SEGMENTS_ROUTE_DESCRIPTION par une description de la route.
Cet exemple de code implémente les modifications suivantes :
priority: 2
: priorité de la route. Plus la valeur est élevée, plus la priorité est faible. Étant donné que la route de vos playlists et segments multimédias correspond à tout nom de fichier se terminant par.m3u8
, la priorité de la route doit être inférieure à celle de la route que vous avez créée précédemment pour le fichier manifeste principal.signedRequestMode: REQUIRE_TOKENS
: applique les jetons pour les playlists multimédias et les segments multimédias. Si vous utilisez des fichiers de description de présentation multimédia (MPD) statiques, les ensembles de clés longues et courtes peuvent être différents. Si vous utilisez des fichiers MPD dynamiques, les ensembles de clés longues et courtes doivent être identiques.signedRequestKeyset: LONG_KEYSET_NAME
: Media CDN utilise la collection de clés de longue durée pour valider le cookie de longue durée fourni par un agent utilisateur pour les requêtes de playlist multimédia et de segment multimédia.
Paramètres de requête d'URL
Ajoutez deux configurations de route :
Configurez les routes du fichier manifeste multimédia HLS pour propager les jetons de longue durée :
- priority: 2 description: "PLAYLIST_ROUTE_DESCRIPTION" origin: "ORIGIN_NAME" matchRules: - pathTemplateMatch: "/**.m3u8" # HLS media playlists routeAction: cdnPolicy: cacheMode: CACHE_ALL_STATIC signedRequestMode: REQUIRE_TOKENS signedRequestKeyset: LONG_KEYSET_NAME addSignatures: actions: - PROPAGATE_TOKEN_HLS_COOKIELESS
Remplacez PLAYLIST_ROUTE_DESCRIPTION par une description de la route.
Cet exemple de code implémente les modifications suivantes :
priority: 2
: priorité de la route. Plus la valeur est élevée, plus la priorité est faible. Étant donné que la route de vos playlists multimédias correspond à n'importe quel nom de fichier se terminant par.m3u8
, la priorité de la route doit être inférieure à celle de la route que vous avez créée précédemment pour le fichier manifeste principal.signedRequestMode: REQUIRE_TOKENS
: applique les jetons pour les playlists multimédias et les segments multimédias. Si vous utilisez des fichiers MPD (Media Presentation Description) statiques, les ensembles de clés longues et courtes peuvent être différents. Si vous utilisez des fichiers MPD dynamiques, les ensembles de clés longues et courtes doivent être identiques.signedRequestKeyset: LONG_KEYSET_NAME
: Media CDN utilise la collection de clés de longue durée pour valider le cookie de longue durée fourni par un agent utilisateur pour les requêtes de playlist multimédia et de segment multimédia.addSignatures.actions: PROPAGATE_TOKEN_HLS_COOKIELESS
: configure Media CDN pour copier le jeton de longue durée dans les URI des segments multimédias des playlists multimédias.
Configurez les routes de segment pour exiger des jetons de longue durée :
- priority: 3 description: "SEGMENTS_ROUTE_DESCRIPTION" origin: "ORIGIN_NAME" matchRules: - pathTemplateMatch: "/**.ts" # HLS segments routeAction: cdnPolicy: cacheMode: CACHE_ALL_STATIC signedRequestMode: REQUIRE_TOKENS signedRequestKeyset: LONG_KEYSET_NAME
Remplacez SEGMENTS_ROUTE_DESCRIPTION par une description de la route.
Cet exemple de code implémente les modifications suivantes :
priority: 3
: priorité de la route. Plus la valeur est élevée, plus la priorité est faible. La priorité de cette route doit être inférieure à celle de la route que vous avez créée précédemment pour les playlists multimédias.signedRequestMode: REQUIRE_TOKENS
: applique les jetons pour les playlists multimédias et les segments multimédias.signedRequestKeyset: LONG_KEYSET_NAME
: Media CDN utilise la collection de clés de longue durée pour valider le jeton signé de longue durée fourni par un agent utilisateur pour les requêtes de playlist multimédia et de segment multimédia.
Exemple de fichier de configuration
L'exemple de code suivant montre un fichier de configuration terminé :
Cookies
name: SERVICE_NAME
routing:
hostRules:
- hosts:
- DOMAIN_NAME
pathMatcher: routes
pathMatchers:
- name: "ROUTE_NAME"
routeRules:
- priority: 1
description: "ROUTE_DESCRIPTION"
origin: "ORIGIN_NAME"
matchRules:
- pathTemplateMatch: "/HLS_MASTER_PLAYLIST.m3u8" # HLS primary playlists
- pathTemplateMatch: "/DASH_MANIFESTS.mpd" # DASH manifests
routeAction:
cdnPolicy:
cacheMode: CACHE_ALL_STATIC
signedRequestMode: REQUIRE_TOKENS
signedRequestKeyset: SHORT_KEYSET_NAME
signedRequestMaximumExpirationTtl: SIGNED_REQUEST_MAXIMUM_EXPIRATION_TIME
addSignatures:
actions:
- GENERATE_COOKIE
keyset: LONG_KEYSET_NAME
tokenTtl: TOKEN_EXPIRATION_TIME
copiedParameters:
- PathGlobs
- SessionID
- priority: 2
description: "SEGMENTS_ROUTE_DESCRIPTION"
origin: "ORIGN_NAME"
matchRules:
- pathTemplateMatch: "/**.m3u8" # HLS media playlists
- pathTemplateMatch: "/**.ts" # HLS segments
- pathTemplateMatch: "/**.m4s" # DASH / CMAF segments
routeAction:
cdnPolicy:
cacheMode: CACHE_ALL_STATIC
signedRequestMode: REQUIRE_TOKENS
signedRequestKeyset: LONG_KEYSET_NAME
Paramètres de requête d'URL
name: SERVICE_NAME
routing:
hostRules:
- hosts:
- DOMAIN_NAME
pathMatcher: routes
pathMatchers:
- name: "ROUTE_NAME"
routeRules:
- priority: 1
description: "ROUTE_DESCRIPTION"
origin: "ORIGIN_NAME"
matchRules:
- pathTemplateMatch: "/HLS_PRIMARY_PLAYLIST.m3u8" # HLS primary playlists
routeAction:
cdnPolicy:
cacheMode: CACHE_ALL_STATIC
signedRequestMode: REQUIRE_TOKENS
signedRequestKeyset: SHORT_KEYSET_NAME
signedRequestMaximumExpirationTtl: SIGNED_REQUEST_MAXIMUM_EXPIRATION_TIME
signedTokenOptions:
tokenQueryParameter: SHORT_TOKEN_NAME
addSignatures:
actions:
- GENERATE_TOKEN_HLS_COOKIELESS
keyset: LONG_KEYSET_NAME
tokenTtl: TOKEN_EXPIRATION_TIME
tokenQueryParameter: LONG_TOKEN_NAME
copiedParameters:
- PathGlobs
- SessionID
- priority: 2
description: "PLAYLIST_ROUTE_DESCRIPTION"
origin: "ORIGIN_NAME"
matchRules:
- pathTemplateMatch: "/**.m3u8" # HLS media playlists
routeAction:
cdnPolicy:
cacheMode: CACHE_ALL_STATIC
signedRequestMode: REQUIRE_TOKENS
signedRequestKeyset: LONG_KEYSET_NAME
addSignatures:
actions:
- PROPAGATE_TOKEN_HLS_COOKIELESS
- priority: 3
description: "SEGMENTS_ROUTE_DESCRIPTION"
origin: "ORIGIN_NAME"
matchRules:
- pathTemplateMatch: "/**.ts" # HLS segments
routeAction:
cdnPolicy:
cacheMode: CACHE_ALL_STATIC
signedRequestMode: REQUIRE_TOKENS
signedRequestKeyset: LONG_KEYSET_NAME
Générez des jetons de courte durée sur votre serveur d'applications.
Pour en savoir plus sur la génération de jetons, consultez Générer des jetons.
Appliquer des protections de contenu en profondeur
Nous vous recommandons d'activer l'authentification de l'origine comme suit :
Pour Cloud Storage, utilisez les autorisations Identity and Access Management avec des buckets Cloud Storage privés.
Pour les fournisseurs de stockage compatibles avec AWS, utilisez AWS Signature Version 4. L'authentification d'origine bloque les requêtes qui tentent de contourner Media CDN et d'accéder directement à votre origine.