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 erstellen Sie einen String, der signiert werden soll. In dieser Anleitung wird er als signierter Wert bezeichnet. Der signierte Wert enthält Parameter, die den Inhalt beschreiben, den Sie schützen, die Ablaufzeit des signierten Werts usw.
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 symmetrischem Schlü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 verketten, der die erforderlichen Tokenfelder und die gewünschten optionalen Token felder enthält. Trennen Sie die einzelnen Felder und Parameter durch eine Tilde
~.Signieren Sie den signierten Wert entweder mit einer Ed25519-Signatur oder einem symmetrischen HMAC-Schlüssel.
Erstellen Sie das Token, indem Sie einen String verketten, der die erforderlichen Tokenfelder und optionalen Tokenfelder enthält. 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 Token-String identisch, mit folgenden Ausnahmen:
FullPathHeaders
Das folgende Codebeispiel zeigt, wie Sie ein Token programmatisch erstellen:
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 Felder:
PathGlobsURLPrefixFullPath
- Eines der folgenden Felder:
Signaturehmac
Wenn nicht anders angegeben, wird bei Parameternamen und ihren Werten die Groß-/Kleinschreibung beachtet.
In der folgenden Tabelle wird jeder 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 durch Kommas (
Pfadparameter, die mit Semikolons ( Aus diesen Gründen darf Ihre URL die folgenden
Sonderzeichen nicht enthalten: |
PathGlobs=PATHS |
URLPrefix |
Eine websichere, mit Base64 codierte URL einschließlich des Protokolls
Beispiele für gültige URLPrefix-Werte für `https://example.com/foo/bar.ts` sind `https://example.com`, `https://example.com/foo` und `https://example.com/foo/bar`. |
URLPrefix=BASE_64_URL_PREFIX |
FullPath |
– Wenn Sie FullPath in einem Token angeben, duplizieren Sie den Pfad nicht, den Sie im signierten Wert angegeben haben. Fügen Sie in einem Token den Feld
namen ohne ein = 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 |
Platzhaltersyntax für PathGlobs
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. Es entspricht weder
/videos/s01main.m3u8 noch /videos/s/main.m3u8.
|
Globs müssen für URL-Pfade entweder 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 müssen Ihre Globs mit den Inhalten übereinstimmen, für 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 Parameternamen, Aliase 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. Wenn Sie beispielsweise
die IP-Bereiche „192.6.13.13/32,193.5.64.135/32“ angeben möchten, geben Sie
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 vorkommen, 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 Loganalyse oder die Wiedergabeverfolgung nützlich ist. Verwenden Sie %-codierte oder websichere
mit 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, der für die Loganalyse nützlich ist. Verwenden Sie %-codierte oder websichere
mit 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 Header-Namen wird bei der Suche in der Anfrage die Groß-/Kleinschreibung nicht beachtet. Bei Header-Namen in den signierten Werten wird die Groß-/Kleinschreibung beachtet. Wenn ein Header fehlt, ist der Wert ein leerer String. Wenn mehrere Kopien eines Headers vorhanden sind, werden sie durch Kommas getrennt verkettet. | 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:
- Angefragtes Element:
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 symmetrischen HMAC-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 Ed25519-Signatur des zuvor erstellten signierten Werts.
Symmetrischer HMAC-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 aber 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:
- Angefragtes Element:
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 ersetzt: aHR0cDovL2V4YW1wbGUuY29tL3R2L215LXNob3cvczAxL2UwMS9wbGF5bGlzdC5tM3U4.
Um ein Token zu erstellen, signieren Sie den signierten Wert entweder mit einer Ed25519-Signatur oder einem symmetrischen HMAC-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 Ed25519-Signatur des zuvor erstellten signierten Werts.
Symmetrischer HMAC-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:
- Angefragtes Element:
http://example.com/tv/my-show/s01/e01/playlist.m3u8 - Ablaufzeit: 160000000
- PathGlobs-Wert:
* - Erwartete Anfrageheader:
user-agent: browseraccept: 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 symmetrischen HMAC-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 Ed25519-Signatur des zuvor erstellten signierten Werts.
Symmetrischer HMAC-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 Header-Werte werden aber 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.