Dual-Token-Authentifizierung verwenden

Um die Dual-Token-Authentifizierung zu erzwingen, wenn Betrachter auf eine Streamingressource zugreifen, konfigurieren Sie separate Routen. Eine Route ist eine Konfiguration, für Media CDN und leitet HTTP-Traffic an einen Ursprung weiter. Media CDN unterstützt Routen für HTTP-Livestreaming (HLS) oder DASH-Ressourcen (Dynamic Adaptive Streaming over HTTP). Weitere Informationen Informationen zu Routen in Media CDN finden Sie unter Dienstrouten konfigurieren.

Bei HLS-Streams unterstützt Media CDN die Dual-Token-Authentifizierung über Cookies und URL-Suchparameter (ohne Cookies). Für DASH-Streams: Media CDN unterstützt nur die cookiebasierte Dual-Token-Authentifizierung.

Auf dieser Seite wird beschrieben, wie Sie Media CDN-Routen konfigurieren, um Inhalte mit Dual-Token-Authentifizierung zu schützen.

Hinweise

Gehen Sie dazu so vor:

  1. Wählen Sie für Kurzzeit-Tokens einen der folgenden Signaturalgorithmen aus:

    • Ed25519-Signaturen
    • Symmetric-key hash-based message authentication Codes (HMACs)

    Sie können symmetrische HMAC-Signaturalgorithmen nur für konfigurierte Routen aktivieren um neue Langzeit-Tokens zu generieren. Wir empfehlen die Verwendung von Ed25519 Signaturen für optimale Leistung und Sicherheit sowie HMACs mit symmetrischen Schlüsseln wenn dies für die Kompatibilität mit anderen CDNs erforderlich ist.

  2. Fügen Sie die erforderlichen Schlüssel in eine EdgeCacheKeyset-Ressource ein.

    Tokens müssen mit Schlüsseln in einem EdgeCacheKeyset signiert oder verifiziert werden . Der Schlüsselsatz muss die richtigen Schlüssel für den ausgewählten Signaturalgorithmus verwendet. In der folgenden Tabelle werden die einzelnen Signaturen und den erforderlichen Schlüsseln.

    Signaturalgorithmus Erforderliche Schlüssel im Schlüsselsatz
    Ed25519 Öffentliche Schlüssel
    HMAC-SHA1 Freigegebene Validierungsschlüssel
    HMAC-SHA256 Freigegebene Validierungsschlüssel

    Erstellen Sie als Best Practice zwei separate Keysets, einen für und ein weiteres für Langzeit-Tokens.

    Wenn Sie jedoch DASH und die Präsentationsbeschreibung für dynamische Medien verwenden, MPD-Dateien verwenden, müssen Sie für beide Lang- und Kurzzeit-Tokens.

  3. Wählen Sie für Langzeit-Tokens eines der folgenden Tokenformate aus:

    • Cookies
    • URL-Suchparameter

Kurzzeit-Tokens einrichten

Richten Sie je nach Signaturalgorithmus, den Sie verwenden möchten, Tokens mit einer der folgenden Optionen.

Ed25519-Signatur

  1. Generieren Sie einen privaten Schlüssel:

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

    Ersetzen Sie SSL_KEY_NAME durch einen Schlüsselnamen.

  2. Generieren Sie einen öffentlichen Schlüssel aus dem privaten Schlüssel:

    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. Erstellen Sie einen neuen Schlüsselsatz mit einem einzelnen öffentlichen Schlüssel:

    Console

    1. Rufen Sie in der Google Cloud Console die Seite Media CDN auf.

      Zum Media CDN

    2. Klicken Sie auf den Tab Schlüsselsätze.

    3. Klicken Sie auf Schlüsselsatz erstellen.

    4. Geben Sie unter Name einen eindeutigen Schlüsselsatznamen ein.

    5. Optional: Geben Sie unter Beschreibung eine Beschreibung für den Schlüsselsatz ein.

    6. Optional: Klicken Sie auf Label hinzufügen und geben Sie ein oder mehrere Schlüssel/Wert-Paare ein. für Ihren Schlüsselsatz.

    7. Klicken Sie auf Öffentlichen Schlüssel hinzufügen und gehen Sie dann so vor:

      1. Geben Sie unter ID eine alphanumerische ID ein.
      2. Wählen Sie Wert eingeben aus und geben Sie dann die base64-codierte Ihres öffentlichen Ed25519-Schlüssels.
    8. Klicken Sie auf Schlüsselsatz erstellen.

    gcloud

    Führen Sie den Befehl gcloud edge-cache keysets create aus.

    gcloud edge-cache keysets create SHORT_KEYSET_NAME \
      --public-key='id=SSL_PUBLIC_KEY_NAME,value=SSL_PUBLIC_KEY_VALUE'
    

    Ersetzen Sie Folgendes:

    • SHORT_KEYSET_NAME: ein eindeutiger Schlüsselsatz Name, z. B. prod-vod-keyset
    • SSL_PUBLIC_KEY_NAME: der Name Ihres Öffentlicher SSL-Schlüssel
    • SSL_PUBLIC_KEY_VALUE: der Wert Ihres Öffentlicher SSL-Schlüssel

    Um die mit dem Schlüsselsatz verknüpften Schlüssel zu überprüfen, verwenden Sie den gcloud edge-cache keysets describe-Befehl

    gcloud edge-cache keysets describe prod-vod-keyset
    

    Die Ausgabe sieht in etwa so aus:

    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
      }
    }

Symmetrischer Schlüssel-HMAC

  1. Wenn Sie Secret Manager noch nicht verwendet haben, Konfigurieren Sie Secret Manager.

  2. Secret erstellen

  3. Secret-Version hinzufügen im Binärformat.

  4. Secret Manager-Zugriffsrolle gewähren (roles/secretmanager.secretAccessor) an das Media CDN Dienstkonto:

    Console

    1. Wechseln Sie in der Google Cloud Console zur Seite Secret Manager.

      Zu Secret Manager

    2. Klicken Sie auf das Kästchen neben dem Namen des Secrets.

    3. Klicken Sie auf Infofeld anzeigen.

    4. Klicken Sie im Infofeld auf Hauptkonto hinzufügen.

    5. Geben Sie unter Neue Hauptkonten den Media CDN-Dienst ein Konto in folgendem Format:

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

      Ersetzen Sie PROJECT_NUMBER durch Ihr Projekt. Nummer.

    6. Wählen Sie unter Rolle auswählen die Option Secret Manager und dann Auf Secret Manager-Secret zugreifende Person.

    gcloud

    gcloud secrets add-iam-policy-binding-Befehl ausführen

    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"
    

    Ersetzen Sie Folgendes:

    • PROJECT_NUMBER: Ihre Projektnummer
    • SECRET_ID: die ID des Secrets
  5. Auf Secret-Versionen zugreifen und kopieren Sie die Secret-Pfade, einschließlich der Versionsnummern.

  6. Erstellen Sie einen neuen Schlüsselsatz mit den gemeinsamen Secrets in einem freigegebenen Validierungsschlüssel:

    Console

    1. Rufen Sie in der Google Cloud Console die Seite Media CDN auf.

      Zum Media CDN

    2. Klicken Sie auf den Tab Schlüsselsätze.

    3. Klicken Sie auf Schlüsselsatz erstellen.

    4. Geben Sie unter Name einen eindeutigen Schlüsselsatznamen ein.

    5. Optional: Geben Sie unter Beschreibung eine Beschreibung für den Schlüsselsatz ein.

    6. Optional: Klicken Sie auf Label hinzufügen und geben Sie ein oder mehrere Schlüssel/Wert-Paare ein. für Ihren Schlüsselsatz.

    7. Klicken Sie auf Freigegebene Validierungsschlüssel hinzufügen, um einen freigegebenen Validierungsschlüssel anzugeben. und gehen Sie dann so vor:

      1. Wählen Sie für Secret ein Secret aus der Liste aus und geben Sie ein Secret manuell durch Angabe der Ressourcen-ID oder neues Secret erstellen und wählen es dann aus.

      2. Wählen Sie für Secret-Version eine Version aus der Liste aus oder neue Secret-Version erstellen und wählen es dann aus.

    8. Klicken Sie auf Schlüsselsatz erstellen.

    gcloud

    Führen Sie den Befehl gcloud edge-cache keysets create aus.

    gcloud edge-cache keysets create SHORT_KEYSET_NAME \
      --validation-shared-key='secret_version=projects/PROJECT_NUMBER/secrets/SECRET_ID/versions/KEY_VERSION'
    

    Ersetzen Sie Folgendes:

    • SHORT_KEYSET_NAME: ein eindeutiger Name für die Keyset, z. B. prod-vod-keyset
    • PROJECT_NUMBER: Ihre Projekt-ID.
    • SECRET_ID: die Ressourcen-ID des Secrets
    • KEY_VERSION ist die Secret-Version, die die Sie verwenden möchten,

Langzeit-Tokens einrichten

Von Google verwaltete Schlüssel werden durch einen Schlüsselsatz begrenzt. Das bedeutet, dass zwei verschiedene Keysets unterschiedliche von Google verwaltete Schlüssel haben. Von Google verwaltete Schlüssel werden regelmäßig rotiert.

Richten Sie Langzeit-Tokens mit einer der folgenden Optionen ein:

Console

  1. Schlüsselsatz erstellen oder ändern

  2. Wählen Sie im Abschnitt Schlüssel die Option Von Google verwalteten Schlüssel für Dual-Token verwenden. Authentifizierung.

gcloud und YAML

Verwenden Sie eine der folgenden Optionen:

  • Erstellen Sie einen von Google verwalteten Signaturschlüssel:

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

    LONG_KEYSET_NAME durch einen Schlüssel ersetzen Name, z. B. prod-vod-keyset-long.

  • So ändern Sie einen vorhandenen Schlüsselsatz:

    1. Exportieren Sie Ihr Keyset in eine YAML-Datei. Führen Sie den Befehl gcloud edge-cache keysets export aus.

      gcloud edge-cache keysets export LONG_KEYSET_NAME \
         --destination=prod-vod-keyset-long.yaml
      
    2. Bearbeiten Sie die Daten in einem Texteditor oder in Ihren Tools zur Konfigurationsverwaltung. Keyset-Konfiguration so, dass sie in etwa so aussieht:

      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. Importieren Sie den bearbeiteten Schlüsselsatz. Führen Sie den Befehl gcloud edge-cache keysets import aus:

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

Sie können zusätzliche öffentliche Schlüssel in den Schlüsselsatz für Langzeit-Tokens aufnehmen. Die Keyset darf höchstens drei öffentliche Schlüssel haben. In der Praxis bedeutet dies, Keyset kann zwei vom Nutzer verwaltete Schlüssel und einen von Google verwalteten Schlüssel haben.

Media CDN verwendet immer den von Google verwalteten Schlüssel, um Tokens zu generieren. Die vom Nutzer verwalteten Schlüssel können nur zur Bestätigung verwendet werden.

Das Hinzufügen zusätzlicher öffentlicher Schlüssel ist nützlich, damit deine Player-App Zugriff auf Medienplaylists und ‐segmente mithilfe von signierten Anfragen, die mit Ihren eigenen privaten Schlüsseln generiert werden.

Tokenaustausch konfigurieren

In diesem Abschnitt wird gezeigt, wie Sie den Tokenaustausch durch Erstellen mehrerer Routen konfigurieren. Mit einer Route können Sie das Verhalten je nach Inhaltstyp, Client Attribute und Ihre Aktualitätsanforderungen. In den folgenden Beispielen verwenden wir -Routen, um den Tokenaustausch für jeden Teil einer Medienanfrage zu konfigurieren.

Konfigurieren Sie die primäre Manifestroute so, dass Kurzzeit-Tokens erforderlich sind

Konfigurieren Sie Media CDN so, dass Kurzzeit-Tokens für das primären Manifest-Route.

Console

Aktivieren Sie die kurzzeitige Tokenauthentifizierung auf der primären Manifestroute:

  1. Rufen Sie in der Google Cloud Console die Seite Media CDN auf.

    Zum Media CDN

  2. Klicken Sie auf den Namen eines Dienstes, um die Seite Details zu öffnen.

  3. Klicken Sie auf die Schaltfläche Bearbeiten, um in den Bearbeitungsmodus zu wechseln.

  4. Klicken Sie auf Weiter, um zum Abschnitt Routing zu gehen.

  5. Erweitern Sie die Hostregel, der Sie das primäre Manifest hinzufügen möchten. Routingregel.

  6. Klicken Sie auf Weiterleitungsregel hinzufügen.

    Wenn Sie eine Routingregel bearbeiten möchten, klicken Sie auf Bearbeiten Sie in der entsprechenden Zeile.

  7. Legen Sie im Bereich Routingregel bearbeiten für Priorität einen Wert fest – für Beispiel: 1.

  8. Geben Sie unter Beschreibung eine kurze Beschreibung ein, damit der Regel in der Regelliste.

  9. Klicken Sie im Bereich Übereinstimmung auf Übereinstimmungsbedingung hinzufügen. Führen Sie dann Folgendes:

    1. Wählen Sie unter Übereinstimmungstyp die Option Übereinstimmung mit Pfadvorlage aus.
    2. Geben Sie unter Pfadabgleich die Namen oder Pfadvorlagen für die Primäre HLS-Playlist (M3U8) oder DASH-Manifestdatei (MPD). Weitere Informationen Weitere Informationen
  10. Klicken Sie auf Erweiterte Konfigurationen.

  11. Klicken Sie im Abschnitt Routingaktion auf Element hinzufügen.

  12. Wählen Sie für Typ die Option CDN-Richtlinie aus.

  13. Wählen Sie im Abschnitt Signierte Anfrage für Modus für signierte Anfrage die Option Token erforderlich

  14. Führen Sie im Abschnitt Keyset für signierte Anfrage die folgenden Schritte aus:

    1. Um den Schlüsselsatz für Kurzzeit-Tokens anzugeben, klicken Sie auf Wählen Sie einen Schlüsselsatz aus und wählen Sie den gewünschten Kurzzeit-Token-Schlüsselsatz.

      Alternativ können Sie zum Erstellen eines neuen Schlüsselsatzes mit den benötigten Schlüsseln Klicken Sie auf Neuen Schlüsselsatz erstellen. Wählen Sie es dann aus.

    2. Wählen Sie für Signature algorithm (Signaturalgorithmus) die Option Ed25519 using public keys (Ed25519 mit öffentlichen Schlüsseln verwenden) aus.

    3. Behalten Sie für Token-Abfrageparameter den Standardwert bei. edge-cache-token

      Wenn Sie URL-Suchparameter des HLS-Manifests verwenden möchten, statt Cookies zur Authentifizierung, geben Sie den Parameter in in dem die Anfragetokens gespeichert werden sollen.

    4. Geben Sie unter Maximale Gültigkeitsdauer die maximale Lebensdauer in Sekunden an. für eingehende Anfragetokens.

  15. Klicken Sie zum Speichern der Änderungen im Abschnitt Routenaktion auf Fertig.

  16. Klicken Sie auf Speichern, um die Änderungen an der Routingregel zu speichern.

gcloud und YAML

  1. Media CDN-Konfiguration exportieren in eine YAML-Datei umwandeln. Verwenden Sie die Methode gcloud edge-cache services export-Befehl

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

    Ersetzen Sie Folgendes:

    • SERVICE_NAME: der Name Ihres Dienstes
    • FILENAME : der Name Ihrer YAML-Datei
  2. So aktivieren Sie die kurzzeitige Tokenauthentifizierung im primären Manifest: der Routingregel im Abschnitt cdnPolicy der YAML-Datei eine signedTokensOptions-Konfiguration angeben.

      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
    

    Ersetzen Sie Folgendes:

    • ROUTE_NAME: der Name der Routingregel
    • ROUTE_DESCRIPTION: eine Beschreibung des Routingregel
    • ORIGIN_NAME: Name des Ursprungs
    • MANIFEST_OR_PLAYLIST: der Name der HLS primäre Playlist (M3U8) oder eine DASH-Manifestdatei (MPD) hochladen. Weitere Informationen Weitere Informationen
    • SHORT_KEYSET_NAME: der zu verwendende Schlüsselsatzname für Kurzzeit-Tokens
    • SIGNED_REQUEST_MAXIMUM_EXPIRATION_TIME: Die Ablaufzeit für signierte Anfragen, z. B. 600s. Für Weitere Informationen finden Sie unter signedRequestMaximumExpirationTtl.
    • Optional: SHORT_TOKEN_NAME: die Abfrage -Parameter, in dem das kurze Token gesucht wird. Der Standardwert ist edge-cache-token. Weitere Informationen finden Sie unter SignedTokenOptions.

    Bei Verwendung von HMACs mit symmetrischem Schlüssel geben Sie im Abschnitt signedTokenOptions Fügen Sie allowedSignatureAlgorithms mit dem Wert HMAC_SHA_256 an:

           allowedSignatureAlgorithms:
           - HMAC_SHA_256
    
  3. Importieren Sie Ihre Media CDN-Konfiguration, um den Dienst zu aktualisieren. aus der YAML-Datei. Verwenden Sie die Methode gcloud edge-cache services import-Befehl

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

Damit ist die Aktivierung der Einzeltoken-Authentifizierung abgeschlossen.

Fahren Sie mit den folgenden Abschnitten fort, um die Dual-Token-Authentifizierung zu konfigurieren.

Primäre Routingregel für Manifeste konfigurieren, um Langzeit-Tokens zu generieren

Media CDN so konfigurieren, dass Langzeit-Tokens auf der primären Manifest-Route. Wählen Sie entweder Cookies oder URL-Suchparameter aus um diese Tokens zu generieren.

Console

Ändern Sie die Routingregel des primären Manifests so, dass Media CDN Langzeit-Tokens auf der Route generieren:

  1. Klicken Sie auf der Seite Routingregel bearbeiten auf Erweiterte Konfigurationen.
  2. Wählen Sie für Typ die Option CDN-Richtlinie aus.
  3. Maximieren Sie Dual-Token-Authentifizierung.
  4. Wählen Sie unter Signature action (Signaturaktion) die Option Generate new long-duration token (Neues Langzeit-Token generieren) aus.
  5. Wählen Sie für Signaturtyp eine der folgenden Optionen aus:

    • über Cookies (für HLS- und DASH-Streaming): konfiguriert Media CDN, das ein Edge-Cache-Cookie mit die primäre Manifestantwort.
    • über HLS-Manifest-URL-Suchparameter (ohne Cookies): konfiguriert Media CDN kann das primäre HLS-Manifest bearbeiten, indem ein Langzeit-Token an jede URL angehängt.
  6. Führen Sie im Bereich Neues Langzeit-Token generieren die folgenden Schritte aus:

    1. Um einen Schlüsselsatz für Langzeit-Tokens anzugeben, klicken Sie auf Wählen Sie einen Schlüsselsatz aus und wählen Sie den gewünschten Langzeit-Token-Schlüsselsatz.

      Alternativ können Sie auf Neuen Schlüsselsatz erstellen klicken, um einen neuen Schlüsselsatz zu erstellen, der enthält die benötigten Schlüssel. Wählen Sie es dann aus.

    2. Geben Sie für Token-TTL die maximale Lebensdauer in Sekunden an. das Langzeit-Token.

    3. Wenn Sie für Signaturtyp die Option über Cookies ausgewählt haben, Wählen Sie dann im Bereich Kopierte Parameter die Parameter das Media CDN aus der Kurzzeit-App kopiert. in das Langzeit-Token. Für die Dual-Token-Authentifizierung Sie müssen entweder PathGlobs oder einen der zugehörigen Aliasse, acl oder paths) oder URLPrefix.

      Wenn du die Option über HLS-Manifest-URL-Suchparameter ausgewählt hast, Behalten Sie für Token-Suchparameter den Standardwert bei. edge-cache-token

  7. Klicken Sie zum Speichern der Änderungen im Abschnitt Routenaktion auf Fertig.

  8. Klicken Sie auf Speichern, um die Änderungen an der Routingregel zu speichern.

    Sie werden in einer Meldung gefragt, ob Sie die Routen für Medien erstellen möchten. automatisch oder manuell segmentieren. Wenn Sie das Option „Automatisch“ wird eine einzelne neue Route für die Cookie-Signatur erstellt. und zwei Routen für die Signatur ohne Cookies. Wenn Sie das Handbuch können Sie mit dem nächsten Abschnitt fortfahren.

gcloud und YAML

Ändern Sie den Abschnitt addSignatures der Routingregel des primären Manifests so, dass Media CDN kann Langzeit-Tokens für die Route generieren:

Cookies

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

Ersetzen Sie Folgendes:

  • LONG_KEYSET_NAME: der Name Ihres Langzeit-Token-Schlüsselsatz

  • TOKEN_EXPIRATION_TIME: die Ablaufzeit des Langzeit-Tokens, z. B. 86400s für einen Tag Ablaufzeit

In diesem Codebeispiel werden die folgenden Änderungen implementiert:

  • addSignatures.actions: GENERATE_COOKIE: konfiguriert Media CDN, mit dem ein Edge-Cache-Cookie zurückgegeben werden soll die primäre Manifestantwort

  • copiedParameters.PathGlobs: Konfiguriert Media CDN zum Kopieren PathGlobs vom Kurzzeit-Token in das Langzeit-Token Token. Für die Dual-Token-Authentifizierung müssen Sie entweder copiedParameters.PathGlobs oder copiedParameters.URLPrefix. Weitere Informationen Weitere Informationen finden Sie unter copiedParameters.

  • Optional: copiedParameters.SessionID: konfiguriert Media CDN zum Kopieren der SessionID aus der Kurzzeit-App Token zum Langzeit-Token

Wenn die Aktion GENERATE_COOKIE angewendet wird, gibt einen Set-Cookie-Header ähnlich dem folgenden mit dem primären Wert zurück. Manifest-Antwort:

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

URL-Suchparameter

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

Ersetzen Sie Folgendes:

  • LONG_KEYSET_NAME: der Name Ihres Langzeit-Schlüsselsatz

  • TOKEN_EXPIRATION_TIME: die Ablaufzeit Zeitpunkt des Langzeit-Tokens, z. B. 86400s für eine Ablaufzeit von einem Tag

In diesem Codebeispiel werden die folgenden Änderungen implementiert:

  • addSignatures.actions: GENERATE_TOKEN_HLS_COOKIELESS: Konfiguriert Media CDN so, dass die primäre HLS-Datei bearbeitet wird durch Anfügen eines Langzeit-Tokens an jeden vorhandenen URI.

  • copiedParameters.PathGlobs: Konfiguriert Media CDN zum Kopieren PathGlobs vom Kurzzeit-Token in das Langzeit-Token Token. Für die Dual-Token-Authentifizierung müssen Sie eine der folgenden Optionen verwenden: copiedParameters.PathGlobs oder copiedParameters.URLPrefix. Weitere Informationen Weitere Informationen finden Sie unter copiedParameters.

  • Optional: copiedParameters.SessionID: Konfiguriert Media CDN um SessionID aus dem Kurzzeit-Token in den Langzeit-Token.

  • Optional: LONG_TOKEN_NAME: die Abfrage -Parameter, in den das generierte lange Token eingefügt werden soll. Der Standardwert ist edge-cache-token. Weitere Informationen finden Sie unter tokenQueryParameter.

Die folgende Manifestdatei zeigt den GENERATE_TOKEN_HLS_COOKIELESS Aktion angewendet:

#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 prüft das Kurzzeit-Token und generiert und speichert das Langzeit-Token im LONG_TOKEN_NAME.

Konfigurieren Sie die Mediaplaylist und segmentieren Sie Routen so, dass Langzeit-Tokens erforderlich sind

Konfigurieren Sie die Medienplaylist und segmentieren Sie Routen so, dass sie lange dauern. Tokens.

Console

Cookies

Erstellen Sie eine Routingregel für die Route der Medienplaylist und der Segmente:

  1. Gehen Sie auf der Seite Edge-Cache-Dienst bearbeiten im Abschnitt Routing so vor: Klicken Sie auf die Hostregel mit der primären Manifestroute.
  2. Klicken Sie auf Weiterleitungsregel hinzufügen.
  3. Legen Sie im Bereich Routingregel bearbeiten für Priorität einen Wert fest, der größer als die primäre Manifestroute ist, z. B. 2. Höhere Werte zeigen eine niedrigere Priorität an.
  4. Geben Sie unter Beschreibung eine kurze Beschreibung ein, damit der Regel in der Regelliste.
  5. Legen Sie die folgenden Felder wie empfohlen fest:

    • Ursprung auswählen: derselbe wie für die Routingregel des primären Manifests
    • Übereinstimmungsbedingung hinzufügen: wie für die primäre Manifestroute Regel
    • Type (Typ): CDN-Richtlinie
    • Modus für signierte Anfrage: Token erforderlich
    • Schlüsselsatz auswählen: wie für Langzeit-Tokens
    • Signaturalgorithmus: derselbe wie für die Routingregel des primären Manifests
  6. Maximieren Sie Dual-Token-Authentifizierung.

  7. Behalten Sie für Signature action (Signaturaktion) den Standardwert None (Keine) bei.

  8. Klicken Sie auf Fertig und anschließend auf Speichern.

URL-Suchparameter

  1. Erstellen Sie eine Routingregel für die Medienplaylist.

    1. Gehen Sie auf der Seite Edge-Cache-Dienst bearbeiten im Abschnitt Routing so vor: Klicken Sie auf die Hostregel mit der primären Manifestroute.
    2. Klicken Sie auf Weiterleitungsregel hinzufügen.
    3. Legen Sie im Bereich Routingregel bearbeiten für Priorität einen Wert fest. größer als die des primären Manifests ist – Beispiel: 2. Höhere Werte zeigen eine niedrigere Priorität an.
    4. Geben Sie unter Description (Beschreibung) eine kurze Beschreibung ein, identifizieren Sie die Regel in der Liste.
    5. Legen Sie die folgenden Felder wie empfohlen fest:

      • Ursprung auswählen: derselbe wie für die primäre Manifestroute Regel
      • Übereinstimmungsbedingung hinzufügen: dieselbe wie für das primäre Manifest Routingregel
      • Type (Typ): CDN-Richtlinie
      • Modus für signierte Anfrage: Token erforderlich
      • Schlüsselsatz auswählen: identisch mit Langzeit-Tokens
      • Signaturalgorithmus: derselbe wie für das primäre Manifest Routingregel
      • Token-Suchparameter: derselbe wie für „Langzeit“ Tokens
    6. Maximieren Sie Dual-Token-Authentifizierung.

    7. Wählen Sie unter Signature action (Signaturaktion) die Option Propagate existing long-duration (Vorhandene Langzeitdauer weitergeben) aus. Token

      Diese Option wird erst aktiviert, nachdem Media CDN verifiziert hat dass das Langzeit-Token mithilfe der Methode über HLS-Manifest-URL-Suchparameter (ohne Cookies) Typ.

    8. Behalten Sie für Token-Abfrageparameter den Standardwert bei. edge-cache-token

    9. Klicken Sie auf Fertig und anschließend auf Speichern.

  2. Erstellen Sie eine Routingregel für Mediensegmente.

    Diese Route entspricht der Route für Medienplaylists und enthält Folgendes: Hauptunterschiede:

    • Legen Sie für Priority (Priorität) einen Wert fest, der größer als der der Medien ist. Playlist-Routingregel, z. B. 3.
    • Geben Sie unter Description (Beschreibung) eine kurze Beschreibung ein, identifizieren Sie die Regel in der Liste.
    • Geben Sie im Abschnitt Dual-Token-Authentifizierung für Signatureaktion, behalten Sie den Standardwert Keine bei.

gcloud und YAML

Bearbeiten Sie die YAML-Datei:

Cookies

Konfigurieren Sie die Mediaplaylist und die Segmente so, dass Langzeit-Cookies erforderlich sind:

    - 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

Ersetzen Sie SEGMENTS_ROUTE_DESCRIPTION durch einen Beschreibung der Route.

In diesem Codebeispiel werden die folgenden Änderungen implementiert:

  • priority: 2: die Priorität der Route. Höhere Werte bedeuten niedrigere Werte. Priorität haben. Da die Route für Ihre Medienplaylists und Mediensegmente mit beliebigen Dateinamen mit der Endung .m3u8 übereinstimmt, muss die Priorität der Route niedriger sein muss als die Route, die Sie zuvor für das primäre Manifest erstellt haben.
  • signedRequestMode: REQUIRE_TOKENS: Erzwingt Tokens für Medien Playlists und Mediensegmenten. Bei Verwendung statischer Medien Präsentationsbeschreibung (MPD), dann die langen und kurzen Keysets können abweichen. Wenn Sie dynamische MPD-Dateien verwenden, Kurze Schlüsselsätze müssen identisch sein.
  • signedRequestKeyset: LONG_KEYSET_NAME: Media CDN verwendet den Schlüsselsatz für Langzeit, um die Langzeit-Cookie, das von einem User-Agent für die Medienplaylist bereitgestellt wird, und Mediasegment-Anfragen

URL-Suchparameter

Fügen Sie zwei Routenkonfigurationen hinzu:

  1. HLS-Medienmanifestrouten für die Weitergabe von Langzeit konfigurieren Tokens:

       - 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
    

    Ersetzen Sie PLAYLIST_ROUTE_DESCRIPTION durch einen Beschreibung der Route.

    In diesem Codebeispiel werden die folgenden Änderungen implementiert:

    • priority: 2: die Priorität der Route. Höhere Werte zeigen an, mit niedrigerer Priorität. Weil die Route für Ihre Medienplaylists einem beliebigen Dateinamen mit der Endung .m3u8 hat, muss die Priorität der Route so lauten: niedriger als die Route, die Sie zuvor für das primäre Manifest erstellt haben.
    • signedRequestMode: REQUIRE_TOKENS: Erzwingt Tokens für Medien Playlists und Mediensegmenten. Bei Verwendung statischer Medien Präsentationsbeschreibung (MPD), die langen und kurzen Keysets können abweichen. Wenn Sie dynamische MPD-Dateien verwenden, und die kurzen Keysets müssen identisch sein.
    • signedRequestKeyset: LONG_KEYSET_NAME: Media CDN verwendet den Schlüsselsatz für Langzeit, um die Langzeit-Cookie, das von einem User-Agent für die Medienplaylist bereitgestellt wird, und Mediasegment-Anfragen
    • addSignatures.actions: PROPAGATE_TOKEN_HLS_COOKIELESS: konfiguriert Media CDN zum Kopieren des Langzeit-Tokens in Medien die Segment-URIs in den Mediaplaylists.
  2. Konfigurieren Sie die Segmentrouten so, dass Langzeit-Tokens erforderlich sind:

       - 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
    

    Ersetzen Sie SEGMENTS_ROUTE_DESCRIPTION durch einen Beschreibung der Route.

    In diesem Codebeispiel werden die folgenden Änderungen implementiert:

    • priority: 3: die Priorität der Route. Höhere Werte zeigen an, mit niedrigerer Priorität. Die Priorität dieser Route muss niedriger sein als die die Sie zuvor für die Medienplaylists erstellt haben.
    • signedRequestMode: REQUIRE_TOKENS: Erzwingt Tokens für Medien Playlists und Mediensegmenten.
    • signedRequestKeyset: LONG_KEYSET_NAME: Media CDN verwendet den Schlüsselsatz für Langzeit, um die Langzeit-Signiertes Token, das von einem User-Agent für Medien bereitgestellt wird Playlist- und Mediasegment-Anfragen.

Beispiel: Konfigurationsdatei

Das folgende Codebeispiel zeigt eine fertige Konfigurationsdatei:

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

URL-Suchparameter

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

Kurzzeit-Tokens auf dem Anwendungsserver generieren

Informationen zum Generieren von Tokens finden Sie unter Token generieren.

Gestaffelte Sicherheitsebenen anwenden

Als Best Practice sollten Sie die Ursprungsauthentifizierung so aktivieren: