Usar la autenticación de doble token

Para aplicar la autenticación de token doble cuando los usuarios acceden a un recurso de transmisión, debes configurar rutas separadas. Una ruta es una 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 HTTP en vivo (HLS) o transmisión dinámica adaptable a través de HTTP (DASH). Para obtener más información sobre las rutas en Media CDN, consulta Configura las rutas de servicio.

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

En esta página, se describe cómo configurar las rutas de Media CDN para ayudar a proteger el contenido mediante la autenticación de dos tokens.

Antes de comenzar

Puedes hacer 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 (HMAC) basados en hash de clave simétrica

    Puedes habilitar algoritmos de firma HMAC simétricos solo para las 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 de clave simétrica solo cuando sea necesario para la compatibilidad con otras CDN.

  2. Incluye las claves requeridas 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 independientes, 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 de token:

    • Cookies
    • Parámetros de consulta de URL

Configura tokens de corta duración

Según el algoritmo de firma que quieras 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 nuevo conjunto de claves 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 Conjuntos de claves.

    3. Haz clic en Crear conjunto de claves.

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

    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 Ingresar 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 de conjunto de claves único, por ejemplo, prod-vod-keyset.
    • SSL_PUBLIC_KEY_NAME: Es 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 de clave simétrica

  1. Si nunca usaste Secret Manager, configura Secret Manager.

  2. Crea un secreto.

  3. Agrega una versión del Secret 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 Secret.

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

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

    5. En Principales nuevas, ingresa la cuenta de servicio de Media CDN en este formato:

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

      Reemplaza PROJECT_NUMBER por el número de proyecto.

    6. En Selecciona una función, selecciona Secret Manager y, luego, Administrador y descriptor de acceso a secretos.

    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: El ID del secreto
  5. Accede a tus versiones de secretos y copia las rutas de acceso 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 Conjuntos de claves.

    3. Haz clic en Crear conjunto de claves.

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

    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 Secreto, selecciona un secreto de la lista, ingresa un secreto manualmente especificando su ID de recurso o crea un secreto nuevo y, luego, selecciónalo.

      2. En Versión del Secret, selecciona una versión de la lista o crea una nueva versión del Secret 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: Es el ID del recurso del secreto.
    • KEY_VERSION: Es la versión del secreto que deseas usar.

Configura tokens de larga duración

El alcance de las claves administradas por Google se define por conjunto de claves. Esto significa que dos conjuntos de claves diferentes tienen claves administradas por Google diferentes. Las claves administradas por Google 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 Usar la clave administrada por Google 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.

  • Modifica un conjunto de claves existente:

    1. Exporta el 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 al siguiente ejemplo:

      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 clave administrada por Google.

Media CDN siempre usa la clave administrada por Google para 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 multimedia mediante solicitudes firmadas que generan tus propias claves privadas.

Configura el intercambio de tokens

En esta sección, se muestra cómo configurar el intercambio de tokens mediante la creación de 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 contenido multimedia.

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 de 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 descripción breve 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. Luego, haz lo siguiente:

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

  11. En la sección Route action, haz clic en Add an item.

  12. En Tipo, selecciona CDN policy.

  13. En la sección Solicitud firmada, en Modo de solicitud firmada, selecciona Solicitar tokens.

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

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

      Como alternativa, para crear un nuevo conjunto de claves que tenga las claves que necesitas, haz clic en Crear nuevo conjunto de claves. 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. Para Max time to live, 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 la configuración de la CDN de Media 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 : Es el nombre de tu archivo YAML.
  2. Para habilitar la autenticación de 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: Es una descripción de la regla de ruta.
    • ORIGIN_NAME: Es el nombre del origen.
    • MANIFEST_OR_PLAYLIST: Es el nombre de la playlist principal (M3U8) o del archivo de manifiesto (MPD) de HLS. Para obtener más información, consulta Coincidencia de rutas.
    • 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: El tiempo de vencimiento de las solicitudes firmadas, por ejemplo, 600s. Para obtener más información, consulta signedRequestMaximumExpirationTtl.
    • Opcional: SHORT_TOKEN_NAME: Es el parámetro de consulta en el que se debe encontrar el token corto. El valor predeterminado es edge-cache-token. Para obtener más información, consulta SignedTokenOptions:

    Cuando uses 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 la 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
    

Esto completa el proceso de habilitar la autenticación de token único.

Para configurar la autenticación de 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 de manifiesto principal. Elige las cookies o los parámetros de consulta de URL para generar estos tokens.

Console

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

  1. En la página Editar regla de enrutamiento, 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 los parámetros de consulta de la URL del manifiesto de HLS (sin cookies): Configura la CDN de Media 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 tokens de larga duración, haz clic en Seleccionar un conjunto de claves y elige tu conjunto de claves de token de larga duración.

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

    2. Para TTL del token, 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 Media CDN copie del token de corta duración al token de larga duración. Para usar la autenticación de token doble, debes seleccionar PathGlobs (o cualquiera de sus alias, acl o paths) o URLPrefix.

      Si seleccionaste la opción a través de los parámetros de consulta de la URL del manifiesto de HLS, para el Parámetro de consulta de token, conserva el valor predeterminado, edge-cache-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 contenido multimedia de forma automática o manual. Si seleccionas la opción automática, se crea 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 token de larga duración

  • TOKEN_EXPIRATION_TIME: Es el tiempo de vencimiento del token de larga duración; por ejemplo, 86400s para un tiempo 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 Edge-Cache-Cookie con la respuesta del manifiesto principal.

  • copiedParameters.PathGlobs: Configura Media CDN para que copie 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 muestra 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: Es el nombre de tu conjunto de claves de larga duración.

  • TOKEN_EXPIRATION_TIME: Es la fecha de vencimiento del token de larga duración; por ejemplo, 86400s para un tiempo 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 que copie 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 que copie 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 debe 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 enrutamiento para la ruta de las playlists y los segmentos de medios:

  1. En la página Editar servicio de caché de Edge, en la sección Enrutamiento, haz clic en la regla de host que tiene la ruta de manifiesto principal.
  2. Haz clic en Add route rule.
  3. En el panel Editar regla de ruta, en Prioridad, establece un valor que sea superior al 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 descripción breve que pueda ayudar a identificar la regla en la lista de reglas.
  5. Configura los siguientes campos como se sugiere:

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

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

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

Parámetros de consulta de URL

  1. Crea una regla de enrutamiento para la playlist de contenido multimedia.

    1. En la página Editar servicio de caché de Edge, en la sección Enrutamiento, haz clic en la regla de host que tiene la ruta de manifiesto principal.
    2. Haz clic en Add route rule.
    3. En el panel Editar regla de enrutamiento, en Prioridad, establece un valor que sea 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:

      • Seleccionar un origen: Es igual que para la regla de ruta del manifiesto principal.
      • Agrega una condición de concordancia: Es igual que para la regla de ruta del manifiesto principal.
      • Tipo: Política de CDN
      • Modo de solicitud firmada: Solicita tokens
      • Selecciona un conjunto de claves: Es lo mismo que para los tokens de larga duración.
      • Algoritmo de firma: Es el mismo que el de 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 Propaga un token de larga duración existente.

      Esta opción se habilita solo 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 de la URL del 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 enrutamiento para segmentos de contenido multimedia.

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

    • En Prioridad, establece un valor mayor que el de la regla de ruta de reproducción multimedia, 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 de token doble, en Acción de firma, conserva el valor predeterminado None.

gcloud y YAML

Edita el archivo YAML:

Cookies

Configura la playlist y los segmentos de contenido multimedia 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. Debido a que la ruta de acceso de tus playlists y segmentos multimedia coincide con cualquier nombre de archivo que termine en .m3u8, la prioridad de la ruta debe ser menor que la que creaste anteriormente para el manifiesto principal.
  • signedRequestMode: REQUIRE_TOKENS: Aplica tokens para las playlists 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 largos y cortos 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 playlist y segmento de contenido multimedia.

Parámetros de consulta de URL

Agrega dos configuraciones de ruta:

  1. Configura las rutas de manifiesto de contenido multimedia 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. Debido a que la ruta de tus playlists multimedia coincide con cualquier nombre de archivo que finaliza en .m3u8, la prioridad de la ruta debe ser menor que la que creaste anteriormente para el manifiesto principal.
    • signedRequestMode: REQUIRE_TOKENS: Aplica tokens para las playlists 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 largos y cortos 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 playlist y segmento de contenido multimedia.
    • addSignatures.actions: PROPAGATE_TOKEN_HLS_COOKIELESS: Configura Media CDN para que copie el token de larga duración en los URIs de segmentos de contenido multimedia en las playlists multimedia.
  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 ruta que creaste anteriormente para las playlists multimedia.
    • signedRequestMode: REQUIRE_TOKENS: Aplica tokens para las playlists 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 playlist y segmentos multimedia.

Archivo de configuración de ejemplo

En la 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 tu servidor de aplicaciones

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

Aplica protecciones de contenido de defensa en profundidad

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