In dieser Anleitung wird erklärt, wie Sie ein Token generieren und welche Felder für Tokens erforderlich und optional sind.
Um ein Token zu erstellen, erstellen Sie eine zu signierende Zeichenfolge, die wir als signierte Wert in diesem Leitfaden. Der vorzeichenbehaftete Wert enthält Parameter, die den Inhalte, die Sie schützen, die Ablaufzeit des signierten Werts usw. weiter.
Sie verwenden den signierten Wert beim Erstellen eines Tokenstrings. 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 Token für die endgültige Erstellung, um Ihre Inhalte.
Token erstellen
Erstellen Sie einen signierten Wert, indem Sie einen String verketten, der den Parameter Erforderliche Token-Felder und gewünschte optionale Tokens enthalten. 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 der Parameter die ist gleich zwischen dem signierten Wert und dem Tokenstring, wobei Folgendes verwendet wird: Ausnahmen:
FullPath
Headers
Das folgende Codebeispiel zeigt, wie ein Token programmatisch erstellt wird:
Python
Richten Sie 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 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
- Einer der folgenden Typen:
PathGlobs
URLPrefix
FullPath
- Eine der folgenden Möglichkeiten:
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 |
---|---|---|
|
Ganzzahlige Sekunden, die seit der Unix-Epoche vergangen 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, auf 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 Einige 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 Sie FullPath in einem Token angeben, dürfen Sie den Pfad, den Sie im signierten Wert angegeben haben, 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 Base64-codierte Version des HMAC-Werts. | Nicht zutreffend |
Platzhaltersyntax PathGlobs
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 Übereinstimmungen
/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, raten wir davon ab,
Verwenden Sie eines der beiden in Ihren signierten Tokens. 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. Beispiel:
zum Angeben der IP-Bereiche „192.6.13.13/32,193.5.64.135/32“, 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 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 der Parameter
Client-IP-Adresse ändert sich, nachdem Sie Zugriff gewährt haben, und
Client versucht, ein Videosegment in die Wiedergabe 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 %-codiert oder websicher, um das Erstellen eines ungültigen Tokens zu vermeiden
base64-codierte Strings. Die folgenden Zeichen dürfen nicht für
|
data=DATA_VALUE |
Headers |
Eine durch Kommas getrennte Liste von Header-Feldnamen. Headernamen sind Groß- und Kleinschreibung für Lookups in der Anfrage nicht berücksichtigt wird. Headernamen in der signierten Datei wird zwischen Groß- und Kleinschreibung unterschieden. 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
Die folgenden Abschnitte enthalten Beispiele zum Generieren von Tokens.
Beispiel mit FullPath
Sehen Sie sich das folgende Beispiel mit dem 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
Signieren Sie den signierten Wert entweder mit einer Ed25519-Signatur oder mit einem symmetrischen Schlüssel-HMAC an.
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.
Symmetrischer Schlüssel-HMAC
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 wird FullPath
im Token angegeben, aber der Wert
aus dem Pfad, der im Wert mit Vorzeichen angegeben ist, nicht wiederholt wird. 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 mit dem Feld URLPrefix
an:
- Angeforderter Artikel:
http://example.com/tv/my-show/s01/e01/playlist.m3u8
- Ablaufzeit: 160000000
Der vorzeichenbehaftete Wert ist:
Expires=160000000~URLPrefix=aHR0cDovL2V4YW1wbGUuY29tL3R2L215LXNob3cvczAxL2UwMS9wbGF5bGlzdC5tM3U4
Im vorherigen Beispiel haben wir den Pfad zum angeforderten Element ersetzt.
http://example.com/tv/my-show/s01/e01/playlist.m3u8
durch den Pfad zum Element
im websicheren Base64-Format,
aHR0cDovL2V4YW1wbGUuY29tL3R2L215LXNob3cvczAxL2UwMS9wbGF5bGlzdC5tM3U4
.
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.
Symmetrischer Schlüssel-HMAC
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 mit dem 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 vorzeichenbehaftete Wert ist:
Expires=160000000~PathGlobs=*~Headers=user-agent=browser,accept=text/html
Signieren Sie den signierten Wert entweder mit einer Ed25519-Signatur oder mit einem symmetrischen Schlüssel-HMAC an.
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.
Symmetrischer Schlüssel-HMAC
Expires=160000000~PathGlobs=*~Headers=user-agent,accept~hmac=HMAC_OF_SIGNED_VALUE
Dabei ist HMAC_OF_SIGNED_VALUE der HMAC mit dem symmetrischen Schlüssel -Wert angezeigt.
In den vorherigen Beispielen ist Headers=user-agent,accept
im Token angegeben, die erwarteten Headerwerte werden jedoch nicht aus dem signierten Wert wiederholt. Dadurch können
bestimmte Schlüssel/Wert-Paare des Anfrageheaders signieren, ohne die Werte zu duplizieren
im Token.