In dieser Anleitung wird erklärt, wie Sie ein Token generieren und welche Felder für Tokens erforderlich und optional sind.
Zum Erstellen eines Tokens müssen Sie einen zu signierenden String erstellen, den wir in dieser Anleitung als signierten Wert bezeichnen. Der signierte Wert enthält Parameter, die die zu schützenden Inhalte, die Ablaufzeit des signierten Werts usw. beschreiben.
Sie verwenden den signierten Wert beim Erstellen eines Token-Strings. Zum Erstellen eines Token-Strings erstellen Sie die Parameter für das Token, z. B. einen Hash-basierten Message Authentication Code (HMAC) mit Symmetrieschlüssel des signierten Werts.
Media CDN verwendet das endgültige zusammengesetzte Token, um deine Inhalte zu schützen.
Token erstellen
Erstelle einen signierten Wert, indem du einen String mit den erforderlichen Tokenfeldern und den gewünschten optionalen Tokenfeldern zusammenfügst. Trennen Sie die einzelnen Felder und Parameter durch ein Tildezeichen
~
.Signieren Sie den signierten Wert entweder mit einer Ed25519-Signatur oder einem symmetrischen HMAC-Schlüssel.
Erstellen Sie das Token, indem Sie einen String mit den erforderlichen und optionalen Tokenfeldern zusammenführen. Trennen Sie die einzelnen Felder und Parameter durch ein Tildezeichen
~
.Beim Erstellen des Tokens sind die Werte für jeden Parameter zwischen dem signierten Wert und dem Token-String mit folgenden Ausnahmen identisch:
FullPath
Headers
Das folgende Codebeispiel zeigt, wie ein Token programmatisch erstellt wird:
Python
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Media CDN zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Java
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Media CDN zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
In den folgenden Abschnitten werden die von Tokens verwendeten Felder beschrieben.
Erforderliche Tokenfelder
Die folgenden Felder sind für jedes Token erforderlich:
Expires
- Eine der folgenden Optionen:
PathGlobs
URLPrefix
FullPath
- Eine der folgenden Optionen:
Signature
hmac
Sofern nicht anders angegeben, wird bei Parameternamen und ihren Werten die Groß-/Kleinschreibung beachtet.
In der folgenden Tabelle werden die einzelnen Parameter erläutert:
Feldname / Aliasse | Tokenparameter | Signierter Wert |
---|---|---|
|
Ganzzahlsekunden, die seit der Unix-Epoche verstrichen sind (1970-01-01T00:00:00Z) | Expires=EXPIRATION_TIME , danach ist das Token nicht mehr gültig. |
|
Eine Liste mit bis zu fünf Pfadsegmenten, für die Zugriff gewährt werden soll. Die Segmente können entweder durch Kommas (
Pfadparameter, die durch Semikolons ( Achten Sie daher darauf, dass Ihre URL keine der folgenden Sonderzeichen enthält: |
PathGlobs=PATHS |
URLPrefix |
Eine websichere Base64-codierte URL, die das Protokoll Beispiele für gültige URLPrefix-Werte für https://beispiel.de/foo/bar.ts sind https://beispiel.de, https://beispiel.de/foo und https://beispiel.de/foo/bar. |
URLPrefix=BASE_64_URL_PREFIX |
FullPath |
– Wenn du FullPath in einem Token angibst, darfst du den Pfad, den du im signierten Wert angegeben hast, nicht duplizieren. Fügen Sie in einem Token den Feldnamen ohne = ein. |
FullPath=FULL_PATH_TO_OBJECT |
Signature |
Eine websichere, mit Base64 codierte Version der Signatur. | Nicht zutreffend |
hmac |
Eine websichere, mit Base64 codierte Version des HMAC-Werts. | Nicht zutreffend |
PathGlobs
-Syntax für Platzhalter
In der folgenden Tabelle wird die Syntax des Platzhalters PathGlobs
erläutert.
Operator | Stimmt überein mit | Beispiele |
---|---|---|
* (Sternchen) |
Stimmt mit null oder mehr Zeichen im Pfad der URL überein, einschließlich Schrägstrich-Zeichen (/ ).
|
|
? (Fragezeichen) |
Entspricht einem einzelnen Zeichen im Pfad der URL, ohne Schrägstriche (/ ).
|
/videos/s?main.m3u8 entspricht /videos/s1main.m3u8 . Er entspricht weder /videos/s01main.m3u8 noch /videos/s/main.m3u8 .
|
Globs für URL-Pfade müssen entweder mit einem Sternchen (*
) oder einem Schrägstrich (/
) beginnen.
Da *
und /*
mit allen URL-Pfaden übereinstimmen, empfehlen wir, sie nicht in signierten Tokens zu verwenden. Für maximalen Schutz sollten Ihre Globs mit den Inhalten übereinstimmen, für die Sie Zugriff gewähren möchten.
Optionale Tokenfelder
Sofern nicht anders angegeben, wird bei Parameternamen und ihren Werten die Groß-/Kleinschreibung beachtet.
In der folgenden Tabelle werden Parameternamen, Aliasse und Details zu optionalen Parametern erläutert:
Feldname / Aliasse | Parameter | Signierter Wert |
---|---|---|
|
Ganzzahlsekunden seit der Unix-Epoche (1970-01-01T00:00:00Z) | Starts=START_TIME |
IPRanges |
Eine Liste von bis zu fünf IPv4- und IPv6-Adressen im CIDR-Format, für die diese URL im websicheren Base64-Format gültig ist. Geben Sie beispielsweise Die Aufnahme von IPRanges in die Tokens ist möglicherweise nicht sinnvoll, wenn Kunden von WAN-Migrationen bedroht sind oder wenn der Netzwerkpfad zu Ihrem Anwendungs-Frontend ein anderer ist als der Bereitstellungspfad.
Media CDN lehnt Clients mit einem In den folgenden Fällen kann es passieren, dass Media CDN Clients mit einem
All diese Faktoren können dazu beitragen, dass ein bestimmter Client während einer Videowiedergabesitzung eine nicht-deterministische IP-Adresse hat. Wenn sich die Client-IP-Adresse nach dem Gewähren des Zugriffs ändert und der Client versucht, ein Videosegment in seinen Wiedergabebuffer herunterzuladen, erhält er eine |
IPRanges=BASE_64_IP_RANGES |
|
Ein beliebiger String, der für die Analyse von Protokollen oder die Wiedergabe-Analyse nützlich ist. Verwenden Sie %-codierte oder websichere Base64-codierte Strings, um ein ungültiges Token zu vermeiden. Die folgenden Zeichen dürfen nicht für |
SessionID=SESSION_ID_VALUE |
|
Ein beliebiger String, nützlich für die Loganalyse. Verwenden Sie %-codierte oder websichere Base64-codierte Strings, um ein ungültiges Token zu vermeiden. Die folgenden Zeichen dürfen nicht für |
data=DATA_VALUE |
Headers |
Eine durch Kommas getrennte Liste von Header-Feldnamen. Bei Suchanfragen in der Anfrage wird bei Headernamen nicht zwischen Groß- und Kleinschreibung unterschieden. Bei Headernamen in den signierten Werten wird die Groß- und Kleinschreibung berücksichtigt. Wenn ein Header fehlt, ist der Wert ein leerer String. Wenn es mehrere Kopien eines Headers gibt, werden sie durch Kommas getrennt. | Headers=HEADER_1_NAME=HEADER_1_EXPECTED_VALUE,
HEADER_2_NAME=HEADER_2_EXPECTED_VALUE |
Beispiele
In den folgenden Abschnitten finden Sie Beispiele für das Generieren von Tokens.
Beispiel für die Verwendung von FullPath
Sehen Sie sich das folgende Beispiel für das Feld FullPath
an:
- Angeforderter Artikel:
http://example.com/tv/my-show/s01/e01/playlist.m3u8
- Ablaufzeit: 160000000
Der signierte Wert ist:
Expires=160000000~FullPath=/tv/my-show/s01/e01/playlist.m3u8
Zum Erstellen eines Tokens signieren Sie den signierten Wert entweder mit einer Ed25519-Signatur oder einem HMAC mit symmetrischem Schlüssel.
Im Folgenden finden Sie Beispiele für Tokens, die aus einem signierten Wert erstellt wurden:
Ed25519-Signatur
Expires=160000000~FullPath~Signature=SIGNATURE_OF_SIGNED_VALUE
Dabei ist SIGNATURE_OF_SIGNED_VALUE die ED25519-Signatur des zuvor erstellten signierten Werts.
HMAC mit symmetrischem Schlüssel
Expires=160000000~FullPath~hmac=HMAC_OF_SIGNED_VALUE
Dabei ist HMAC_OF_SIGNED_VALUE der HMAC mit symmetrischem Schlüssel des zuvor erstellten signierten Werts.
In den vorherigen Beispielen ist FullPath
im Token angegeben, der Wert wird jedoch nicht aus dem im signierten Wert angegebenen Pfad wiederholt. So können Sie den vollständigen Pfad der Anfrage signieren, ohne die Anfrage im Token zu duplizieren.
Beispiel für die Verwendung von URLPrefix
Sehen Sie sich das folgende Beispiel für das Feld URLPrefix
an:
- Angeforderter Artikel:
http://example.com/tv/my-show/s01/e01/playlist.m3u8
- Ablaufzeit: 160000000
Der signierte Wert ist:
Expires=160000000~URLPrefix=aHR0cDovL2V4YW1wbGUuY29tL3R2L215LXNob3cvczAxL2UwMS9wbGF5bGlzdC5tM3U4
Im vorherigen Beispiel wurde der Pfad zum angeforderten Element http://example.com/tv/my-show/s01/e01/playlist.m3u8
durch den Pfad zum Element im websicheren Base64-Format aHR0cDovL2V4YW1wbGUuY29tL3R2L215LXNob3cvczAxL2UwMS9wbGF5bGlzdC5tM3U4
ersetzt.
Zum Erstellen eines Tokens signieren Sie den signierten Wert entweder mit einer Ed25519-Signatur oder einem HMAC mit symmetrischem Schlüssel.
Im Folgenden finden Sie Beispiele für Tokens, die aus einem signierten Wert erstellt wurden:
Ed25519-Signatur
Expires=160000000~URLPrefix=aHR0cDovL2V4YW1wbGUuY29tL3R2L215LXNob3cvczAxL2UwMS9wbGF5bGlzdC5tM3U4~Signature=SIGNATURE_OF_SIGNED_VALUE
Dabei ist SIGNATURE_OF_SIGNED_VALUE die ED25519-Signatur des zuvor erstellten signierten Werts.
HMAC mit symmetrischem Schlüssel
Expires=160000000~URLPrefix=aHR0cDovL2V4YW1wbGUuY29tL3R2L215LXNob3cvczAxL2UwMS9wbGF5bGlzdC5tM3U4~hmac=HMAC_OF_SIGNED_VALUE
Dabei ist HMAC_OF_SIGNED_VALUE der HMAC mit symmetrischem Schlüssel des zuvor erstellten signierten Werts.
Beispiel für die Verwendung von Headers
Sehen Sie sich das folgende Beispiel für das Feld Headers
an:
- Angeforderter Artikel:
http://example.com/tv/my-show/s01/e01/playlist.m3u8
- Ablaufzeit: 160000000
- PathGlobs-Wert:
*
- Erwartete Anfrageheader:
user-agent: browser
accept: text/html
Der signierte Wert ist:
Expires=160000000~PathGlobs=*~Headers=user-agent=browser,accept=text/html
Zum Erstellen eines Tokens signieren Sie den signierten Wert entweder mit einer Ed25519-Signatur oder einem HMAC mit symmetrischem Schlüssel.
Im Folgenden finden Sie Beispiele für Tokens, die aus einem signierten Wert erstellt wurden:
Ed25519-Signatur
Expires=160000000~PathGlobs=*~Headers=user-agent,accept~Signature=SIGNATURE_OF_SIGNED_VALUE
Dabei ist SIGNATURE_OF_SIGNED_VALUE die ED25519-Signatur des zuvor erstellten signierten Werts.
HMAC mit symmetrischem Schlüssel
Expires=160000000~PathGlobs=*~Headers=user-agent,accept~hmac=HMAC_OF_SIGNED_VALUE
Dabei ist HMAC_OF_SIGNED_VALUE der HMAC mit symmetrischem Schlüssel des zuvor erstellten signierten Werts.
In den vorherigen Beispielen ist Headers=user-agent,accept
im Token angegeben, die erwarteten Headerwerte werden jedoch nicht aus dem signierten Wert wiederholt. So können Sie bestimmte Anfrageheader-Schlüssel/Wert-Paare signieren, ohne die Werte im Token zu duplizieren.