Utiliser l'authentification à double jeton

Pour appliquer l'authentification à double jeton lorsque les spectateurs accèdent à une ressource de streaming, vous devez configurer des routes distinctes. Une route est une configuration qui correspond aux requêtes pour Media CDN et 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 à deux jetons via des cookies et des 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 :

  1. 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 si nécessaire pour la compatibilité avec d'autres CDN.

  2. 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. L'ensemble de clés 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 leurs clés requises.

    Algorithme de signature Clés requises dans le jeu 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 jeux 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 des fichiers DASH et des fichiers MPD (Media Presentation Description), vous devez utiliser le même ensemble de clés pour les jetons de longue durée et de courte durée.

  3. Pour les jetons de longue durée, choisissez l'un des formats de jeton 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

  1. Générez une clé privée:

    openssl genpkey -algorithm ed25519 -outform PEM -out SSL_KEY_NAME.private.key
    

    Remplacez SSL_KEY_NAME par un nom de clé.

  2. 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])"
    
  3. Créez une collection de clés avec une seule clé publique:

    Console

    1. Dans la console Google Cloud, accédez à la page Media CDN.

      Accéder à Media CDN

    2. Cliquez sur l'onglet Collections de clés.

    3. Cliquez sur Créer une collection de clés.

    4. Dans le champ Nom, saisissez un nom unique pour le jeu de clés.

    5. Facultatif: Dans le champ Description, saisissez une description de votre ensemble de clés.

    6. Facultatif: cliquez sur Ajouter un libellé, puis saisissez une ou plusieurs paires clé-valeur pour votre ensemble de clés.

    7. Cliquez sur Ajouter une clé publique, puis procédez comme suit:

      1. Dans le champ ID, saisissez un ID alphanumérique.
      2. Sélectionnez Saisissez la valeur, puis spécifiez la valeur encodée en base64 de votre clé publique Ed25519.
    8. 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 jeu de clés (par exemple, prod-vod-keyset)
    • SSL_PUBLIC_KEY_NAME: nom de votre clé publique SSL
    • SSL_PUBLIC_KEY_VALUE: valeur de votre clé publique SSL

    Pour examiner les clés associées au jeu de clés, exécutez 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

    resource "google_network_services_edge_cache_keyset" "default" {
      name        = "prod-vod-keyset"
      description = "Keyset for prod.example.com"
      public_key {
        id    = "key-20200918"
        value = "FHsTyFHNmvNpw4o7-rp-M1yqMyBF8vXSBRkZtkQ0RKY" # Update Ed25519 public key
      }
      public_key {
        id    = "key-20200808"
        value = "Lw7LDSaDUrbDdqpPA6JEmMF5BA5GPtd7sAjvsnh7uDA=" # Update Ed25519 public key
      }
    }

HMAC à clé symétrique

  1. Si vous n'avez jamais utilisé Secret Manager, configurez-le.

  2. Créez un secret.

  3. Ajoutez une version de secret au format binaire.

  4. Attribuez le rôle d'accès Secret Manager (roles/secretmanager.secretAccessor) au compte de service Media CDN:

    Console

    1. Dans la console Google Cloud, accédez à la page Secret Manager.

      Accéder à Secret Manager

    2. Cochez la case à côté du nom du secret.

    3. Cliquez sur Afficher le panneau d'informations.

    4. Dans le panneau d'informations, cliquez sur Ajouter un compte principal.

    5. 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 votre numéro de projet.

    6. Pour Sélectionner un rôle, sélectionnez Gestionnaire de secrets, 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 projet
    • SECRET_ID: ID du secret
  5. Accédez à vos versions de secrets et copiez les chemins d'accès aux secrets, y compris les numéros de version.

  6. Créez une collection de clés avec les secrets partagés dans une clé de validation partagée:

    Console

    1. Dans la console Google Cloud, accédez à la page Media CDN.

      Accéder à Media CDN

    2. Cliquez sur l'onglet Collections de clés.

    3. Cliquez sur Créer une collection de clés.

    4. Dans le champ Nom, saisissez un nom unique pour le jeu de clés.

    5. Facultatif: Dans le champ Description, saisissez une description de votre ensemble de clés.

    6. Facultatif: cliquez sur Ajouter un libellé, puis saisissez une ou plusieurs paires clé-valeur pour votre ensemble de clés.

    7. Pour spécifier une clé de validation partagée, cliquez sur Ajouter une clé de validation partagée, puis procédez comme suit:

      1. Pour Secret, sélectionnez un secret dans la liste, saisissez un secret manuellement en spécifiant son ID de ressource ou créez un secret, puis sélectionnez-le.

      2. Pour Version du secret, sélectionnez une version dans la liste ou créez une version de secret, puis sélectionnez-la.

    8. 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 jeu de clés (par exemple, prod-vod-keyset)
    • PROJECT_NUMBER : ID de votre projet.
    • SECRET_ID: ID de la ressource du secret
    • KEY_VERSION: version du secret que vous souhaitez utiliser

Configurer des jetons de longue durée

Les clés gérées par Google sont limitées par ensemble de clés. Cela signifie que deux ensembles de touches différents ont des clés gérées par Google différentes. Les clés gérées par Google sont régulièrement remplacées.

Configurez des jetons de longue durée à l'aide de l'une des options suivantes:

Console

  1. Créez ou modifiez une collection de clés.

  2. Dans la section Clés, sélectionnez Utiliser une clé gérée par Google 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 exemple prod-vod-keyset-long.

  • Modifier un jeu de clés existant:

    1. 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
      
    2. Dans un éditeur de texte ou dans vos outils de gestion de la configuration, modifiez la configuration de votre jeu de clés pour qu'elle ressemble à celle-ci:

      name: projects/my-project/locations/global/edgeCacheKeysets/LONG_KEYSET_NAME
      publicKeys:
      - id: some-key
        value: MC4CAQAwBQYDK2VwBCIEINV2iYugIWBuvGBJUQ_Ab69E4v4zcVqvgYHw-iZxGzcd
      - id: google-managed-key
        managed: true
      
    3. 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 jeu de clés peut comporter deux clés gérées par l'utilisateur et une clé gérée par Google.

Media CDN utilise toujours la clé gérée par Google pour générer des jetons. Les clés gérées par l'utilisateur ne peuvent être utilisées qu'à des fins de 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 multimédia.

Configurer le chemin du fichier manifeste principal pour qu'il exige des jetons de courte durée

Configurez Media CDN pour qu'il exige des jetons de courte durée sur le chemin du fichier manifeste principal.

Console

Activez l'authentification par jeton de courte durée sur l'itinéraire de fichier manifeste principal:

  1. Dans la console Google Cloud, accédez à la page Media CDN.

    Accéder à Media CDN

  2. Pour ouvrir la page Détails d'un service, cliquez sur son nom.

  3. Pour passer en mode Édition, cliquez sur le bouton Modifier.

  4. Pour accéder à la section Routing (Routage), cliquez sur Next (Suivant).

  5. Développez la règle d'hôte à laquelle vous souhaitez ajouter la règle de routage du fichier manifeste principal.

  6. Cliquez sur Ajouter une règle de routage.

    Pour modifier une règle de routage, cliquez sur Modifier sur la ligne correspondante.

  7. Dans le volet Modifier la règle de routage, définissez une valeur pour Priorité (par exemple, 1).

  8. Dans Description, fournissez une brève description qui peut aider à identifier la règle dans la liste des règles.

  9. Dans la section Correspondance, cliquez sur Ajouter une condition de correspondance. Ensuite, procédez comme suit:

    1. Pour Type de correspondance, sélectionnez Correspondance avec le modèle de chemin d'accès.
    2. Pour Correspondance de chemin, spécifiez les noms ou les modèles de chemin d'accès pour la playlist principale HLS (M3U8) ou le fichier manifeste DASH (MPD). Pour en savoir plus, consultez la section Correspondance de chemin d'accès.
  10. Cliquez sur Configurations avancées.

  11. Dans la section Action de routage, cliquez sur Ajouter un élément.

  12. Dans le champ Type, sélectionnez Règle CDN.

  13. Dans la section Requête signée, pour Mode de requête signée, sélectionnez Exiger des jetons.

  14. Dans la section Ensemble de clés de requête signé, procédez comme suit:

    1. Pour spécifier le jeu de clés pour les jetons de courte durée, cliquez sur Sélectionner un jeu de clés, puis sélectionnez votre jeu de clés 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.

    2. Pour Algorithme de signature, sélectionnez Ed25519 à l'aide de clés publiques.

    3. Pour Paramètre de requête de jeton, conservez la valeur par défaut, edge-cache-token.

      Si vous prévoyez d'utiliser des paramètres de requête d'URL de fichier manifeste HLS plutôt que des cookies pour l'authentification, spécifiez le paramètre dans lequel stocker les jetons de requête.

    4. Pour Durée de vie maximale, spécifiez, en secondes, la durée de vie maximale des jetons de requête entrants.

  15. Pour enregistrer les modifications apportées à la section Action de routage, cliquez sur OK.

  16. Pour enregistrer les modifications apportées à la règle de routage, cliquez sur Enregistrer.

gcloud et YAML

  1. Exportez votre configuration du CDN multimédia dans un fichier YAML. Exécutez 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
  2. 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 section cdnPolicy 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 routage
    • ORIGIN_NAME: nom de l'origine
    • MANIFEST_OR_PLAYLIST: nom du fichier de playlist principale HLS (M3U8) ou de fichier manifeste DASH (MPD). Pour en savoir plus, consultez la section Correspondance de chemin d'accès.
    • SHORT_KEYSET_NAME: nom du jeu de clés à utiliser pour les jetons de courte durée
    • SIGNED_REQUEST_MAXIMUM_EXPIRATION_TIME : délai d'expiration des requêtes signées (par exemple, 600s). Pour en savoir plus, consultez signedRequestMaximumExpirationTtl.
    • Facultatif: SHORT_TOKEN_NAME: paramètre de requête dans lequel rechercher le jeton court. La valeur par défaut est edge-cache-token. Pour en savoir plus, consultez la section consacrée à SignedTokenOptions.

    Lorsque vous utilisez des HMAC à clé symétrique, dans la section signedTokenOptions, ajoutez allowedSignatureAlgorithms avec sa valeur comme HMAC_SHA_256:

           allowedSignatureAlgorithms:
           - HMAC_SHA_256
    
  3. Pour mettre à jour le service, importez votre configuration Media CDN à partir du fichier YAML. Exécutez la commande gcloud edge-cache services import.

    gcloud edge-cache services import SERVICE_NAME \
        --source=FILENAME.yaml
    

Le processus d'activation de l'authentification par jeton unique est maintenant terminé.

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 qu'il génère des jetons de longue durée sur le chemin de fichier manifeste principal. Choisissez des cookies ou des paramètres de requête d'URL pour générer ces jetons.

Console

Modifiez la règle de routage du fichier manifeste principal afin que Media CDN puisse générer des jetons de longue durée sur le routage:

  1. Sur la page Modifier la règle de routage, cliquez sur Configurations avancées.
  2. Dans le champ Type, sélectionnez Règle CDN.
  3. Développez Authentification à double jeton.
  4. Pour Action de signature, sélectionnez Générer un nouveau jeton de longue durée.
  5. Pour Type de signature, sélectionnez l'une des options suivantes:

    • via les cookies (pour le streaming HLS et DASH): configure Media CDN pour qu'il renvoie un Edge-Cache-Cookie avec la réponse du fichier manifeste principal.
    • via les paramètres de requête de l'URL du fichier manifeste HLS (sans cookie): configure Media CDN pour manipuler le fichier manifeste principal HLS en ajoutant un jeton de longue durée à chaque URL.
  6. Dans la section Générer un nouveau jeton de longue durée, procédez comme suit:

    1. Pour spécifier un ensemble de clés pour les jetons de longue durée, cliquez sur Sélectionner un ensemble de clés, puis sélectionnez votre ensemble de clés 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.

    2. Pour TTL du jeton, spécifiez, en secondes, la durée de vie maximale du jeton de longue durée.

    3. 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 ou paths) ou URLPrefix.

      Si vous avez sélectionné l'option via les paramètres de requête de l'URL du fichier manifeste HLS, pour le paramètre de requête du jeton, conservez la valeur par défaut, edge-cache-token.

  7. Pour enregistrer les modifications apportées à la section Action de routage, cliquez sur OK.

  8. Pour enregistrer les modifications apportées à la règle de routage, cliquez sur Enregistrer.

    Un message s'affiche, vous demandant si vous souhaitez créer les routes pour les playlists et les segments de médias automatiquement ou manuellement. Si vous sélectionnez l'option automatique, un seul nouveau parcours est créé pour la signature des cookies et deux parcours 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 le parcours:

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ée

  • TOKEN_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 qu'il renvoie un Edge-Cache-Cookie avec la réponse du fichier manifeste principal

  • copiedParameters.PathGlobs: configure Media CDN pour copier le PathGlobs du jeton de courte durée vers le jeton de longue durée. Pour utiliser l'authentification à double jeton, vous devez utiliser copiedParameters.PathGlobs ou copiedParameters.URLPrefix. Pour en savoir plus, consultez copiedParameters.

  • Facultatif: copiedParameters.SessionID: configure Media CDN pour copier le SessionID 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ée

  • TOKEN_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 le PathGlobs du jeton de courte durée vers le jeton de longue durée. Pour utiliser l'authentification à double jeton, vous devez utiliser copiedParameters.PathGlobs ou copiedParameters.URLPrefix. Pour en savoir plus, consultez copiedParameters.

  • Facultatif: copiedParameters.SessionID: configure Media CDN pour copier le SessionID 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 est edge-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 de playlist et de segments de médias pour exiger des jetons de longue durée

Configurez les routes de playlist et de segments de médias pour qu'elles exigent 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:

  1. Sur la page Modifier le service de cache Edge, dans la section Routage, cliquez sur la règle d'hôte contenant le routage du fichier manifeste principal.
  2. Cliquez sur Ajouter une règle de routage.
  3. Dans le volet Modifier la règle de routage, pour Priorité, définissez une valeur supérieure à celle du routage de fichier manifeste principal (par exemple, 2). Plus la valeur est élevée, plus la priorité est faible.
  4. Dans Description, fournissez une brève description qui peut aider à identifier la règle dans la liste des règles.
  5. Définissez les champs suivants comme suggéré:

    • Sélectionner une origine: identique à la règle de routage du fichier manifeste principal
    • Ajouter une condition de correspondance: identique à la règle de routage du fichier manifeste principal
    • Type: Règle CDN
    • Mode de requête signée: Exiger des jetons
    • Sélectionner une collection de clés: identique à celle pour les jetons de longue durée
    • Algorithme de signature: identique à celui de la règle de route de fichier manifeste principale
  6. Développez Authentification à double jeton.

  7. Pour Action de signature, conservez la valeur par défaut Aucune.

  8. Cliquez sur OK, puis sur Enregistrer.

Paramètres de requête d'URL

  1. Créez une règle de routage pour la playlist multimédia.

    1. Sur la page Modifier le service de cache Edge, dans la section Routage, cliquez sur la règle d'hôte contenant le routage de fichier manifeste principal.
    2. Cliquez sur Ajouter une règle de routage.
    3. Dans le volet Modifier la règle de routage, pour Priorité, définissez une valeur supérieure à celle du routage du fichier manifeste principal (par exemple, 2). Plus la valeur est élevée, plus la priorité est faible.
    4. Dans Description, fournissez une brève description qui peut aider à identifier la règle dans la liste des règles.
    5. Définissez les champs suivants comme suggéré:

      • Sélectionner une origine: identique à la règle de routage du fichier manifeste principal
      • Ajouter une condition de correspondance: identique à la règle de routage du fichier manifeste principal
      • Type: Règle CDN
      • Mode de requête signée: Exiger des jetons
      • Sélectionner un ensemble de clés: identique à celui des 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
    6. Développez Authentification à double jeton.

    7. Pour Action de signature, sélectionnez Propager un jeton de longue durée existant.

      Cette option n'est activée que lorsque Media CDN vérifie 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).

    8. Pour Paramètre de requête de jeton, conservez la valeur par défaut, edge-cache-token.

    9. Cliquez sur OK, puis sur Enregistrer.

  2. Créez une règle de routage pour les segments multimédias.

    Ce parcours est semblable à celui 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, fournissez une brève description qui peut aider à identifier la règle dans la liste des règles.
    • Dans la section Authentification à double jeton, pour Action de signature, conservez la valeur par défaut Aucune.

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 l'itinéraire.

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 le chemin d'accès de vos playlists et segments multimédias correspond à tout nom de fichier se terminant par .m3u8, la priorité du chemin d'accès doit être inférieure à celle que vous avez précédemment créée pour le fichier manifeste principal.
  • signedRequestMode: REQUIRE_TOKENS: applique des jetons aux playlists et aux segments multimédias. Si vous utilisez des fichiers MPD (Media Presentation Description) statiques, les ensembles de clés longs et courts peuvent être différents. Si vous utilisez des fichiers MPD dynamiques, les ensembles de clés longs et courts 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 user-agent pour les requêtes de playlist multimédia et de segment multimédia.

Paramètres de requête d'URL

Ajoutez deux configurations de routage:

  1. 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 l'itinéraire.

    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 le chemin d'accès de vos playlists multimédias correspond à tous les noms de fichiers se terminant par .m3u8, la priorité du chemin d'accès doit être inférieure à celle que vous avez précédemment créée pour le fichier manifeste principal.
    • signedRequestMode: REQUIRE_TOKENS: applique des jetons aux playlists et aux segments multimédias. Si vous utilisez des fichiers MPD (Media Presentation Description) statiques, les ensembles de clés longs et courts peuvent être différents. Si vous utilisez des fichiers MPD dynamiques, les ensembles de clés longs et courts 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 user-agent 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 de segments multimédias des playlists multimédias.
  2. Configurez les routes de segment pour qu'elles exigent 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 l'itinéraire.

    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 que vous avez précédemment créée pour les playlists multimédias.
    • signedRequestMode: REQUIRE_TOKENS: applique des jetons aux playlists et aux 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 user-agent pour les requêtes de playlist et de segment multimédia.

Exemple de fichier de configuration

L'exemple de code suivant présente 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érer 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 défense en profondeur

Nous vous recommandons d'activer l'authentification de l'origine comme suit: