In dieser Anleitung wird erklärt, wie Sie ein Token generieren und welche Felder für Token erforderlich und optional sind.
Um ein Token zu erstellen, müssen Sie einen String zum Signieren erstellen, der in dieser Anleitung als signierter Wert bezeichnet wird. 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 Ihre Inhalte zu schützen.
Token erstellen
Erstellen Sie einen signierten Wert, indem Sie einen String mit den erforderlichen Tokenfeldern und den gewünschten optionalen Tokenfeldern verketten. Trennen Sie die einzelnen Felder und Parameter durch eine Tilde
~
.Signieren Sie den signierten Wert entweder mit einer Ed25519-Signatur oder einem HMAC mit symmetrischem Schlüssel.
Erstellen Sie das Token, indem Sie einen String mit den erforderlichen und optionalen Tokenfeldern verketten. Trennen Sie die einzelnen Felder und Parameter durch eine Tilde
~
.Beim Erstellen des Tokens sind die Werte für die einzelnen Parameter zwischen dem signierten Wert und dem Tokenstring identisch, mit den folgenden Ausnahmen:
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
- Eines der folgenden Elemente:
PathGlobs
URLPrefix
FullPath
- Eines der folgenden Elemente:
Signature
hmac
Wenn nicht anders angegeben, wird bei Parameternamen und ihren Werten die Groß-/Kleinschreibung beachtet.
In der folgenden Tabelle werden die einzelnen Parameter erläutert:
Feldname / Aliase | 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 mit Semikolons ( Aus diesen Gründen darf Ihre URL die folgenden Sonderzeichen nicht enthalten: |
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 |
Keine. Wenn Sie FullPath in einem Token angeben, dürfen Sie den Pfad, den Sie im signierten Wert angegeben haben, nicht duplizieren. Geben Sie in einem Token den Feldnamen ohne = an. |
FullPath=FULL_PATH_TO_OBJECT |
Signature |
Eine websichere, mit Base64 verschlüsselte Version der Signatur. | Nicht zutreffend |
hmac |
Eine websichere, mit Base64 verschlüsselte Version des HMAC-Werts. | Nicht zutreffend |
PathGlobs
-Platzhaltersyntax
In der folgenden Tabelle wird die Platzhaltersyntax für PathGlobs
erläutert.
Operator | Stimmt überein mit | Beispiele |
---|---|---|
* (Sternchen) |
Entspricht null oder mehr Zeichen im Pfad der URL, einschließlich Schrägstrichen (/ ).
|
|
? (Fragezeichen) |
Entspricht einem einzelnen Zeichen im Pfad der URL, ohne Schrägstriche (/ ).
|
/videos/s?main.m3u8 entspricht /videos/s1main.m3u8 . Sie stimmt weder mit /videos/s01main.m3u8 noch mit /videos/s/main.m3u8 überein.
|
Globs für URL-Pfade müssen mit einem Sternchen (*
) oder einem Schrägstrich (/
) beginnen.
Da *
und /*
mit allen URL-Pfaden übereinstimmen, empfehlen wir, sie nicht in Ihren signierten Tokens zu verwenden. Für maximalen Schutz sollten Sie darauf achten, dass Ihre Glob-Muster mit den Inhalten übereinstimmen, auf die Sie Zugriff gewähren möchten.
Optionale Tokenfelder
Wenn nicht anders angegeben, wird bei Parameternamen und ihren Werten die Groß-/Kleinschreibung beachtet.
In der folgenden Tabelle werden die Parameternamen, Aliasse und Details für optionale Parameter erläutert:
Feldname / Aliase | Parameter | Signierter Wert |
---|---|---|
|
Ganzzahlsekunden seit der Unix-Epoche (1970-01-01T00:00:00Z) | Starts=START_TIME |
IPRanges |
Eine Liste mit 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 dem Code In den folgenden Fällen kann es dazu kommen, dass Media CDN Clients mit dem Code
All diese Faktoren können dazu beitragen, dass ein bestimmter Client während einer Videowiedergabesitzung eine nicht-deterministische IP-Adresse hat. Wenn sich die IP-Adresse des Clients ändert, nachdem Sie den Zugriff gewährt haben, und der Client dann versucht, ein Videosegment in seinen Wiedergabepuffer herunterzuladen, erhält er von Media CDN den Fehler |
IPRanges=BASE_64_IP_RANGES |
|
Ein beliebiger String, der für die Log-Analyse oder die Wiedergabe-Tracerstellung nützlich ist. Verwenden Sie %-codierte oder websichere Base64-codierte Strings, um ungültige Tokens zu vermeiden. Die folgenden Zeichen dürfen nicht für |
SessionID=SESSION_ID_VALUE |
|
Ein beliebiger String, der für die Loganalyse nützlich ist. Verwenden Sie %-codierte oder websichere Base64-codierte Strings, um ungültige Tokens zu vermeiden. Die folgenden Zeichen dürfen nicht für |
data=DATA_VALUE |
Headers |
Eine Liste mit durch Kommas getrennten Header-Feldnamen. Bei Header-Namen wird bei der Suche in der Anfrage nicht zwischen Groß- und Kleinschreibung unterschieden. Bei Header-Namen in den signierten Werten wird die Groß-/Kleinschreibung berücksichtigt. Wenn ein Header fehlt, ist der Wert der leere String. Wenn es mehrere Kopien eines Headers gibt, werden sie durch Kommas getrennt zusammengefügt. | 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 mit FullPath
Sehen Sie sich das folgende Beispiel mit dem Feld FullPath
an:
- Angefragter 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
Um ein Token zu erstellen, signieren Sie den signierten Wert entweder mit einer Ed25519-Signatur oder einem HMAC mit symmetrischem Schlüssel.
Im Folgenden finden Sie Beispiel-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 zuvor erstellte ED25519-Signatur des signierten Werts.
HMAC mit symmetrischem Schlüssel
Expires=160000000~FullPath~hmac=HMAC_OF_SIGNED_VALUE
Dabei ist HMAC_OF_SIGNED_VALUE der symmetrische HMAC-Schlüssel des zuvor erstellten signierten Werts.
In den vorherigen Beispielen wird 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 mit URLPrefix
Sehen Sie sich das folgende Beispiel mit dem Feld URLPrefix
an:
- Angefragter Artikel:
http://example.com/tv/my-show/s01/e01/playlist.m3u8
- Ablaufzeit: 160000000
Der signierte Wert ist:
Expires=160000000~URLPrefix=aHR0cDovL2V4YW1wbGUuY29tL3R2L215LXNob3cvczAxL2UwMS9wbGF5bGlzdC5tM3U4
Im vorherigen Beispiel haben wir den 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.
Um ein Token zu erstellen, signieren Sie den signierten Wert entweder mit einer Ed25519-Signatur oder einem HMAC mit symmetrischem Schlüssel.
Im Folgenden finden Sie Beispiel-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 zuvor erstellte ED25519-Signatur des signierten Werts.
HMAC mit symmetrischem Schlüssel
Expires=160000000~URLPrefix=aHR0cDovL2V4YW1wbGUuY29tL3R2L215LXNob3cvczAxL2UwMS9wbGF5bGlzdC5tM3U4~hmac=HMAC_OF_SIGNED_VALUE
Dabei ist HMAC_OF_SIGNED_VALUE der symmetrische HMAC-Schlüssel des zuvor erstellten signierten Werts.
Beispiel mit Headers
Sehen Sie sich das folgende Beispiel mit dem Feld Headers
an:
- Angefragter 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
Um ein Token zu erstellen, signieren Sie den signierten Wert entweder mit einer Ed25519-Signatur oder einem HMAC mit symmetrischem Schlüssel.
Im Folgenden finden Sie Beispiel-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 zuvor erstellte ED25519-Signatur des 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 symmetrische HMAC-Schlüssel des zuvor erstellten signierten Werts.
In den vorherigen Beispielen wird Headers=user-agent,accept
im Token angegeben, die erwarteten Headerwerte werden jedoch nicht aus dem signierten Wert wiederholt. So können Sie bestimmte Schlüssel/Wert-Paare für Anfrageheader signieren, ohne die Werte im Token zu duplizieren.