Usar la autenticación de doble token

Para aplicar la autenticación con dos tokens cuando los usuarios acceden a un recurso de transmisión, debes configurar rutas separadas. Una ruta es un parámetro de configuración que coincide con las solicitudes de Media CDN y dirige el tráfico HTTP a un origen. Media CDN admite rutas para recursos de transmisión en vivo a través de HTTP (HLS) o transmisión adaptable y dinámica a través de HTTP (DASH). Para obtener más información sobre las rutas en Media CDN, consulta Configura rutas de servicio.

En el caso de las transmisiones de HLS, Media CDN admite la autenticación con dos tokens a través de cookies y parámetros de consulta de URL (sin cookies). En el caso de las transmisiones de DASH, Media CDN solo admite la autenticación con doble token basada en cookies.

En esta página, se describe cómo configurar rutas de Media CDN para proteger el contenido con la autenticación de doble token.

Antes de comenzar

Haz lo siguiente:

  1. Para los tokens de corta duración, elige uno de los siguientes algoritmos de firma:

    • Firmas Ed25519
    • Códigos de autenticación de mensajes basados en hash (HMAC) con clave simétrica

    Solo puedes habilitar algoritmos de firma HMAC simétricos para rutas configuradas para generar tokens nuevos de larga duración. Te recomendamos que uses firmas Ed25519 para obtener un rendimiento y una seguridad óptimos, y HMAC con clave simétrica solo cuando sea necesario para la compatibilidad con otras CDN.

  2. Incluye las claves obligatorias en un recurso EdgeCacheKeyset.

    Los tokens deben firmarse o verificarse con claves en un recurso EdgeCacheKeyset. El conjunto de claves debe incluir las claves correctas para el algoritmo de firma seleccionado. En la siguiente tabla, se describen cada uno de los algoritmos de firma y sus claves requeridas.

    Algoritmo de firma Claves obligatorias en el conjunto de claves
    Ed25519 Claves públicas
    HMAC-SHA1 Claves compartidas de validación
    HMAC‑SHA256 Claves compartidas de validación

    Como práctica recomendada, crea dos conjuntos de claves separados, uno para los tokens de corta duración y otro para los de larga duración.

    Sin embargo, si usas DASH y archivos de descripción de presentación multimedia (MPD) dinámicos, debes usar el mismo conjunto de claves para los tokens de larga y corta duración.

  3. Para los tokens de larga duración, elige uno de los siguientes formatos:

    • Cookies
    • Parámetros de consulta de URL

Configura tokens de corta duración

Según el algoritmo de firma que desees usar, configura tokens de corta duración con una de las siguientes opciones.

Firma Ed25519

  1. Genera una clave privada:

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

    Reemplaza SSL_KEY_NAME por un nombre de clave.

  2. Genera una clave pública a partir de la clave privada:

    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. Crea un conjunto de claves nuevo con una sola clave pública:

    Console

    1. En la consola de Google Cloud , ve a la página Media CDN.

      Ir a Media CDN

    2. Haz clic en la pestaña Keysets.

    3. Haz clic en Crear conjunto de claves.

    4. En Nombre, ingresa un nombre único para el conjunto de claves.

    5. En Descripción, ingresa una descripción para tu conjunto de claves (opcional).

    6. Opcional: Haz clic en Agregar etiqueta y, luego, ingresa uno o más pares clave-valor para tu conjunto de claves.

    7. Haz clic en Agregar clave pública y, luego, haz lo siguiente:

      1. En ID, ingresa un ID alfanumérico.
      2. Selecciona Ingresa el valor y, luego, especifica el valor con codificación base64 de tu clave pública Ed25519.
    8. Haz clic en Crear conjunto de claves.

    gcloud

    Usa el comando 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'
    

    Reemplaza lo siguiente:

    • SHORT_KEYSET_NAME: Es un nombre único del conjunto de claves, por ejemplo, prod-vod-keyset.
    • SSL_PUBLIC_KEY_NAME: el nombre de tu clave pública SSL
    • SSL_PUBLIC_KEY_VALUE: El valor de tu clave pública SSL

    Para revisar las claves asociadas con el conjunto de claves, usa el comando gcloud edge-cache keysets describe.

    gcloud edge-cache keysets describe prod-vod-keyset
    

    El resultado es similar a este:

    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 con clave simétrica

  1. Si nunca usaste Secret Manager, configúralo.

  2. Crea un secreto.

  3. Agrega una versión del secreto en formato binario.

  4. Otorga el rol de acceso a Secret Manager (roles/secretmanager.secretAccessor) a la cuenta de servicio de Media CDN:

    Console

    1. En la consola de Google Cloud , ve a la página Secret Manager.

      Ir a Secret Manager

    2. Selecciona la casilla de verificación junto al nombre del secreto.

    3. Haz clic en Mostrar panel de información.

    4. En el panel de información, haz clic en Agregar principal.

    5. En Principales nuevos, ingresa la cuenta de servicio de Media CDN con este formato:

      service-PROJECT_NUMBER@gcp-sa-mediaedgefill.iam.gserviceaccount.com
      

      Reemplaza PROJECT_NUMBER por el número de tu proyecto.

    6. En Selecciona un rol, selecciona Secret Manager y, luego, Descriptor de acceso a secretos de Secret Manager.

    gcloud

    Usa el comando 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"
    

    Reemplaza lo siguiente:

    • PROJECT_NUMBER: Es el número de tu proyecto.
    • SECRET_ID: ID del secreto
  5. Accede a tus versiones de secretos y copia las rutas de los secretos, incluidos los números de versión.

  6. Crea un nuevo conjunto de claves con los secretos compartidos en una clave compartida de validación:

    Console

    1. En la consola de Google Cloud , ve a la página Media CDN.

      Ir a Media CDN

    2. Haz clic en la pestaña Keysets.

    3. Haz clic en Crear conjunto de claves.

    4. En Nombre, ingresa un nombre único para el conjunto de claves.

    5. En Descripción, ingresa una descripción para tu conjunto de claves (opcional).

    6. Opcional: Haz clic en Agregar etiqueta y, luego, ingresa uno o más pares clave-valor para tu conjunto de claves.

    7. Para especificar una clave compartida de validación, haz clic en Agregar clave compartida de validación y, luego, haz lo siguiente:

      1. En Secret, selecciona un secreto de la lista, ingresa uno manualmente especificando su ID de recurso o crea uno nuevo y, luego, selecciónalo.

      2. En Versión del secreto, selecciona una versión de la lista o crea una nueva versión del secreto y, luego, selecciónala.

    8. Haz clic en Crear conjunto de claves.

    gcloud

    Usa el comando 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'
    

    Reemplaza lo siguiente:

    • SHORT_KEYSET_NAME: Es un nombre único para el conjunto de claves, por ejemplo, prod-vod-keyset.
    • PROJECT_NUMBER: El ID de tu proyecto
    • SECRET_ID: ID del recurso del secreto
    • KEY_VERSION: Es la versión del secreto que deseas usar.

Configura tokens de larga duración

Google-owned and managed keys se define según el conjunto de claves. Esto significa que dos conjuntos de claves diferentes tienen diferentesGoogle-owned and managed keys. Google-owned and managed keys se rotan con frecuencia.

Configura tokens de larga duración con una de las siguientes opciones:

Console

  1. Crea o modifica un conjunto de claves.

  2. En la sección Claves, selecciona UsarGoogle-owned and managed key para la autenticación de token doble.

gcloud y YAML

Usa una de las siguientes opciones:

  • Crea una clave de firma administrada por Google:

    gcloud edge-cache keysets create LONG_KEYSET_NAME \
        --public-key='id=google-managed-key,managed=true'
    

    Reemplaza LONG_KEYSET_NAME por un nombre de clave, por ejemplo, prod-vod-keyset-long.

  • Cómo modificar un conjunto de claves existente:

    1. Exporta tu conjunto de claves a un archivo YAML. Usa el comando gcloud edge-cache keysets export.

      gcloud edge-cache keysets export LONG_KEYSET_NAME \
         --destination=prod-vod-keyset-long.yaml
      
    2. En un editor de texto o en tus herramientas de administración de configuración, edita la configuración del conjunto de claves para que se vea similar a la siguiente:

      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. Importa el conjunto de claves editado. Usa el comando gcloud edge-cache keysets import:

      gcloud edge-cache keysets import LONG_KEYSET_NAME \
          --source=prod-vod-keyset-long.yaml
      

Puedes incluir claves públicas adicionales en el conjunto de claves de tokens de larga duración. El conjunto de claves puede tener como máximo tres claves públicas. En la práctica, esto significa que el conjunto de claves puede tener dos claves administradas por el usuario y una claveGoogle-owned and managed key.

Media CDN siempre usa la Google-owned and managed keypara generar tokens. Las claves administradas por el usuario solo se pueden usar para la verificación.

Incluir claves públicas adicionales es útil para permitir que tu aplicación de reproductor acceda a playlists y segmentos de medios con solicitudes firmadas que se generan con tus propias claves privadas.

Configura el intercambio de tokens

En esta sección, se muestra cómo configurar el intercambio de tokens creando varias rutas. Una ruta te permite optimizar el comportamiento en función del tipo de contenido, los atributos del cliente y tus requisitos de actualización. En los siguientes ejemplos, usamos rutas para configurar el intercambio de tokens para cada parte de una solicitud de medios.

Configura la ruta del manifiesto principal para que requiera tokens de corta duración

Configura Media CDN para que requiera tokens de corta duración en la ruta del manifiesto principal.

Console

Habilita la autenticación con tokens de corta duración en la ruta del manifiesto principal:

  1. En la consola de Google Cloud , ve a la página Media CDN.

    Ir a Media CDN

  2. Para abrir la página Detalles de un servicio, haz clic en su nombre.

  3. Para cambiar al modo de edición, haz clic en el botón Editar.

  4. Para navegar a la sección Enrutamiento, haz clic en Siguiente.

  5. Expande la regla de host a la que deseas agregar la regla de ruta del manifiesto principal.

  6. Haz clic en Add route rule.

    Como alternativa, para editar una regla de ruta, haz clic en Editar en la fila correspondiente.

  7. En el panel Editar regla de ruta, en Prioridad, establece un valor, por ejemplo, 1.

  8. En Descripción, proporciona una breve descripción que pueda ayudar a identificar la regla en la lista de reglas.

  9. En la sección Coincidencia, haz clic en Agregar una condición de coincidencia. A continuación, sigue estos pasos:

    1. En Tipo de coincidencia, selecciona Coincidencia de plantilla de ruta.
    2. En Coincidencia de ruta de acceso, especifica los nombres o las plantillas de ruta de acceso para el archivo de lista de reproducción principal HLS (M3U8) o el archivo de manifiesto DASH (MPD). Para obtener más información, consulta Coincidencia de rutas de acceso.
  10. Haz clic en Configuración avanzada.

  11. En la sección Route action, haz clic en Agregar un elemento.

  12. En Tipo, selecciona CDN policy.

  13. En la sección Solicitud firmada, para Modo de solicitud firmada, selecciona Require tokens.

  14. En la sección Conjunto de claves de solicitud firmada, haz lo siguiente:

    1. Para especificar el conjunto de claves para los tokens de corta duración, haz clic en Seleccionar un conjunto de claves y selecciona tu conjunto de claves de tokens de corta duración.

      Como alternativa, para crear un conjunto de claves nuevo que tenga las claves que necesitas, haz clic en Crear un conjunto de claves nuevo. Luego, selecciónala.

    2. En Algoritmo de firma, selecciona Ed25519 con claves públicas.

    3. En Parámetro de consulta de token, conserva el valor predeterminado, edge-cache-token.

      Como alternativa, si planeas usar parámetros de consulta de URL de manifiesto de HLS en lugar de cookies para la autenticación, especifica el parámetro en el que se almacenarán los tokens de solicitud.

    4. En Tiempo de vida máximo, especifica, en segundos, la vida útil máxima de los tokens de solicitud entrantes.

  15. Para guardar los cambios en la sección Acción de ruta, haz clic en Listo.

  16. Para guardar los cambios en la regla de ruta, haz clic en Guardar.

gcloud y YAML

  1. Exporta tu configuración de CDN de medios a un archivo YAML. Usa el comando gcloud edge-cache services export.

    gcloud edge-cache services export SERVICE_NAME \
        --destination=FILENAME.yaml
    

    Reemplaza lo siguiente:

    • SERVICE_NAME: el nombre de tu servicio.
    • FILENAME : El nombre de tu archivo YAML
  2. Para habilitar la autenticación con tokens de corta duración en la regla de ruta del manifiesto principal, especifica una configuración de signedTokensOptions en la sección cdnPolicy de la ruta del archivo 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
    

    Reemplaza lo siguiente:

    • ROUTE_NAME: El nombre de la regla de ruta
    • ROUTE_DESCRIPTION: Una descripción de la regla de ruta
    • ORIGIN_NAME: el nombre del origen
    • MANIFEST_OR_PLAYLIST: Es el nombre del archivo de lista de reproducción principal (M3U8) de HLS o del manifiesto (MPD) de DASH. Para obtener más información, consulta Coincidencia de rutas de acceso.
    • SHORT_KEYSET_NAME: Es el nombre del conjunto de claves que se usará para los tokens de corta duración.
    • SIGNED_REQUEST_MAXIMUM_EXPIRATION_TIME: Es la hora de vencimiento de las solicitudes firmadas, por ejemplo, 600s. Para obtener más información, consulta signedRequestMaximumExpirationTtl.
    • Opcional: SHORT_TOKEN_NAME: Parámetro de consulta en el que se encuentra el token corto. El valor predeterminado es edge-cache-token. Para obtener más información, consulta SignedTokenOptions:

    Cuando se usan HMAC de clave simétrica, en la sección signedTokenOptions, agrega allowedSignatureAlgorithms con su valor como HMAC_SHA_256:

           allowedSignatureAlgorithms:
           - HMAC_SHA_256
    
  3. Para actualizar el servicio, importa tu configuración de CDN de Media desde el archivo YAML. Usa el comando gcloud edge-cache services import.

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

Con esto, se completa el proceso para habilitar la autenticación con un solo token.

Para configurar la autenticación con dos tokens, continúa con las siguientes secciones.

Configura la regla de ruta del manifiesto principal para generar tokens de larga duración

Configura Media CDN para que genere tokens de larga duración en la ruta del manifiesto principal. Elige cookies o parámetros de consulta de URL para generar estos tokens.

Console

Modifica la regla de ruta del manifiesto principal para que Media CDN pueda generar tokens de larga duración en la ruta:

  1. En la página Editar regla de ruta, haz clic en Configuraciones avanzadas.
  2. En Tipo, selecciona CDN policy.
  3. Expande Autenticación de doble token.
  4. En Acción de firma, selecciona Generar un token de larga duración nuevo.
  5. En Tipo de firma, selecciona una de las siguientes opciones:

    • a través de cookies (para transmisiones HLS y DASH): Configura Media CDN para que devuelva un Edge-Cache-Cookie con la respuesta del manifiesto principal.
    • A través de parámetros de consulta de URL de manifiesto de HLS (sin cookies): Configura Media CDN para manipular el manifiesto principal de HLS agregando un token de larga duración a cada URL.
  6. En la sección Genera un token de larga duración nuevo, haz lo siguiente:

    1. Para especificar un conjunto de claves para los tokens de larga duración, haz clic en Seleccionar un conjunto de claves y elige tu conjunto de claves de tokens de larga duración.

      Como alternativa, haz clic en Crear un conjunto de claves nuevo para crear un conjunto de claves nuevo que tenga las claves que necesitas. Luego, selecciónala.

    2. En Token TTL, especifica, en segundos, la vida útil máxima del token de larga duración.

    3. En Tipo de firma, si seleccionaste la opción a través de cookies, en la sección Parámetros copiados, selecciona los parámetros que deseas que la CDN de Media copie del token de corta duración al token de larga duración. Para usar la autenticación de doble token, debes seleccionar PathGlobs (o cualquiera de sus alias, acl o paths) o URLPrefix.

      Si seleccionaste la opción a través de parámetros de consulta de URL de manifiesto de HLS, conserva el valor predeterminado edge-cache-token para Parámetro de consulta de token.

  7. Para guardar los cambios en la sección Acción de ruta, haz clic en Listo.

  8. Para guardar los cambios en la regla de ruta, haz clic en Guardar.

    Aparecerá un mensaje en el que se te preguntará si deseas crear las rutas para las playlists y los segmentos de medios de forma automática o manual. Si seleccionas la opción automática, se creará una sola ruta nueva para la firma de cookies y dos rutas para la firma sin cookies. Si seleccionas la opción manual, continúa con la siguiente sección.

gcloud y YAML

Modifica la sección addSignatures de la regla de ruta del manifiesto principal para que Media CDN pueda generar tokens de larga duración en la ruta:

Cookies

          addSignatures:
            actions:
              - GENERATE_COOKIE
            keyset: LONG_KEYSET_NAME
            tokenTtl: TOKEN_EXPIRATION_TIME
            copiedParameters:
              - PathGlobs
              - SessionID

Reemplaza lo siguiente:

  • LONG_KEYSET_NAME: El nombre de tu conjunto de claves de tokens de larga duración

  • TOKEN_EXPIRATION_TIME: Es la hora de vencimiento del token de larga duración, por ejemplo, 86400s para una hora de vencimiento de un día.

En este ejemplo de código, se implementan los siguientes cambios:

  • addSignatures.actions: GENERATE_COOKIE: Configura Media CDN para que devuelva un addSignatures.actions: GENERATE_COOKIE con la respuesta del manifiesto principal.Edge-Cache-Cookie

  • copiedParameters.PathGlobs: Configura Media CDN para copiar el PathGlobs del token de corta duración al token de larga duración. Para usar la autenticación de doble token, debes usar copiedParameters.PathGlobs o copiedParameters.URLPrefix. Para obtener más información, consulta copiedParameters.

  • Opcional: copiedParameters.SessionID: Configura Media CDN para copiar el SessionID del token de corta duración al token de larga duración.

Cuando se aplica la acción GENERATE_COOKIE, Media CDN devuelve un encabezado Set-Cookie similar al siguiente con la respuesta del manifiesto principal:

Set-Cookie: Edge-Cache-Cookie=PathGlobs=PATHS~SessionID=SESSION_ID~Expires=EXPIRATION~_GO=Generated~Signature=SIGNATURE

Parámetros de consulta de URL

          addSignatures:
            actions:
              - GENERATE_TOKEN_HLS_COOKIELESS
            keyset: LONG_KEYSET_NAME
            tokenTtl: TOKEN_EXPIRATION_TIME
            copiedParameters:
              - PathGlobs
              - SessionID
            tokenQueryParameter: LONG_TOKEN_NAME

Reemplaza lo siguiente:

  • LONG_KEYSET_NAME: El nombre de tu conjunto de claves de larga duración

  • TOKEN_EXPIRATION_TIME: Es la fecha y hora de vencimiento del token de larga duración, por ejemplo, 86400s para una fecha y hora de vencimiento de un día.

En este ejemplo de código, se implementan los siguientes cambios:

  • addSignatures.actions: GENERATE_TOKEN_HLS_COOKIELESS: Configura Media CDN para manipular el manifiesto principal de HLS agregando un token de larga duración a cada URI presente.

  • copiedParameters.PathGlobs: Configura Media CDN para copiar el PathGlobs del token de corta duración al token de larga duración. Para usar la autenticación de doble token, debes usar copiedParameters.PathGlobs o copiedParameters.URLPrefix. Para obtener más información, consulta copiedParameters.

  • Opcional: copiedParameters.SessionID: Configura Media CDN para copiar el SessionID del token de corta duración al token de larga duración.

  • Opcional: LONG_TOKEN_NAME: Es el parámetro de consulta en el que se colocará el token largo generado. El valor predeterminado es edge-cache-token. Para obtener más información, consulta tokenQueryParameter:

En el siguiente archivo de manifiesto, se muestra la acción GENERATE_TOKEN_HLS_COOKIELESS aplicada:

#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 verifica el token de corta duración y, luego, genera y almacena el token de larga duración en el parámetro de consulta LONG_TOKEN_NAME.

Configura las rutas de las playlists y los segmentos de medios para que requieran tokens de larga duración

Configura las rutas de las playlists y los segmentos de medios para que requieran tokens de larga duración.

Console

Cookies

Crea una regla de ruta para la ruta de la playlist y los segmentos de medios:

  1. En la página Editar servicio de Edge Cache, en la sección Enrutamiento, haz clic en la regla de host que tiene la ruta del manifiesto principal.
  2. Haz clic en Add route rule.
  3. En el panel Editar regla de ruta, en Prioridad, establece un valor mayor que el de la ruta del manifiesto principal, por ejemplo, 2. Los valores más altos indican una prioridad más baja.
  4. En Descripción, proporciona una breve descripción que pueda ayudar a identificar la regla en la lista de reglas.
  5. Configura los siguientes campos como se sugiere:

    • Selecciona un origen: Es el mismo que para la regla de ruta del manifiesto principal.
    • Agregar una condición de coincidencia: Es igual que para la regla de ruta del manifiesto principal.
    • Tipo: Política de CDN
    • Modo de solicitud firmada: Require tokens
    • Selecciona un conjunto de claves: Es igual que para los tokens de larga duración.
    • Algoritmo de firma: Es el mismo que para la regla de ruta del manifiesto principal.
  6. Expande Autenticación de doble token.

  7. En Acción de firma, conserva el valor predeterminado Ninguna.

  8. Haz clic en Listo y, luego, en Guardar.

Parámetros de consulta de URL

  1. Crea una regla de ruta para la playlist de medios.

    1. En la página Editar servicio de Edge Cache, en la sección Enrutamiento, haz clic en la regla de host que tiene la ruta del manifiesto principal.
    2. Haz clic en Add route rule.
    3. En el panel Edit route rule, en Priority, establece un valor mayor que el de la ruta del manifiesto principal, por ejemplo, 2. Los valores más altos indican una prioridad más baja.
    4. En Descripción, proporciona una breve descripción que pueda ayudar a identificar la regla en la lista de reglas.
    5. Configura los siguientes campos como se sugiere:

      • Selecciona un origen: El mismo que para la regla de ruta del manifiesto principal
      • Agregar una condición de coincidencia: Es la misma que para la regla de ruta del manifiesto principal.
      • Tipo: Política de CDN
      • Modo de solicitud firmada: Require tokens
      • Selecciona un conjunto de claves: Es el mismo que para los tokens de larga duración.
      • Algoritmo de firma: Es el mismo que para la regla de ruta del manifiesto principal.
      • Parámetro de consulta de token: Es el mismo que para los tokens de larga duración.
    6. Expande Autenticación de doble token.

    7. En Acción de firma, selecciona Propagar un token de larga duración existente.

      Esta opción solo se habilita después de que Media CDN verifica que el token de larga duración se generó con el tipo de firma a través del parámetro de consulta del URI de manifiesto de HLS (sin cookies).

    8. En Parámetro de consulta de token, conserva el valor predeterminado, edge-cache-token.

    9. Haz clic en Listo y, luego, en Guardar.

  2. Crea una regla de ruta para los segmentos de medios.

    Esta ruta es similar a la de las playlists de medios, con las siguientes diferencias clave:

    • En Prioridad, establece un valor mayor que el de la regla de ruta de la playlist de medios, por ejemplo, 3.
    • En Descripción, proporciona una breve descripción que pueda ayudar a identificar la regla en la lista de reglas.
    • En la sección Autenticación con dos tokens, en Acción de firma, conserva el valor predeterminado Ninguna.

gcloud y YAML

Edita el archivo YAML:

Cookies

Configura la playlist y los segmentos de medios para que requieran cookies de larga duración:

    - 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

Reemplaza SEGMENTS_ROUTE_DESCRIPTION por una descripción de la ruta.

En este ejemplo de código, se implementan los siguientes cambios:

  • priority: 2: La prioridad de la ruta. Los valores más altos indican una prioridad más baja. Dado que la ruta de acceso para tus playlists y segmentos de medios coincide con cualquier nombre de archivo que termine en .m3u8, la prioridad de la ruta debe ser inferior a la de la ruta que creaste anteriormente para el manifiesto principal.
  • signedRequestMode: REQUIRE_TOKENS: Aplica tokens para las playlists de medios y los segmentos de medios. Si usas archivos de descripción de presentación de medios (MPD) estáticos, es posible que los conjuntos de claves largas y cortas sean diferentes. Si usas archivos MPD dinámicos, los conjuntos de claves largos y cortos deben ser iguales.
  • signedRequestKeyset: LONG_KEYSET_NAME: Media CDN usa el conjunto de claves de larga duración para validar la cookie de larga duración que proporciona un usuario-agente para las solicitudes de segmentos y listas de reproducción de contenido multimedia.

Parámetros de consulta de URL

Agrega dos configuraciones de rutas:

  1. Configura las rutas del manifiesto de medios de HLS para propagar tokens de larga duración:

       - 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
    

    Reemplaza PLAYLIST_ROUTE_DESCRIPTION por una descripción de la ruta.

    En este ejemplo de código, se implementan los siguientes cambios:

    • priority: 2: La prioridad de la ruta. Los valores más altos indican una prioridad más baja. Dado que la ruta de tus playlists de medios coincide con cualquier nombre de archivo que termine en .m3u8, la prioridad de la ruta debe ser inferior a la de la ruta que creaste anteriormente para el manifiesto principal.
    • signedRequestMode: REQUIRE_TOKENS: Aplica tokens para las playlists de medios y los segmentos de medios. Si usas archivos de descripción de presentación de medios (MPD) estáticos, es posible que los conjuntos de claves largas y cortas sean diferentes. Si usas archivos MPD dinámicos, los conjuntos de claves largos y cortos deben ser los mismos.
    • signedRequestKeyset: LONG_KEYSET_NAME: Media CDN usa el conjunto de claves de larga duración para validar la cookie de larga duración que proporciona un usuario-agente para las solicitudes de segmentos y listas de reproducción de contenido multimedia.
    • addSignatures.actions: PROPAGATE_TOKEN_HLS_COOKIELESS: Configura Media CDN para copiar el token de larga duración en los URIs de los segmentos multimedia de las playlists de medios.
  2. Configura las rutas de segmentos para que requieran tokens de larga duración:

       - 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
    

    Reemplaza SEGMENTS_ROUTE_DESCRIPTION por una descripción de la ruta.

    En este ejemplo de código, se implementan los siguientes cambios:

    • priority: 3: La prioridad de la ruta. Los valores más altos indican una prioridad más baja. La prioridad de esta ruta debe ser inferior a la de la ruta que creaste anteriormente para las playlists de medios.
    • signedRequestMode: REQUIRE_TOKENS: Aplica tokens para las playlists de medios y los segmentos de medios.
    • signedRequestKeyset: LONG_KEYSET_NAME: Media CDN usa el conjunto de claves de larga duración para validar el token firmado de larga duración que proporciona un usuario-agente para las solicitudes de segmentos de medios y listas de reproducción de medios.

Archivo de configuración de ejemplo

En el siguiente muestra de código, se muestra un archivo de configuración completo:

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

Parámetros de consulta de 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

Genera tokens de corta duración en el servidor de tu aplicación

Para obtener información sobre cómo generar tokens, consulta Genera tokens.

Aplica protecciones de contenido en profundidad

Como práctica recomendada, habilita la autenticación de origen de la siguiente manera: