In diesem Leitfaden werden die erforderlichen und optionalen -Felder für Tokens.
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. Sie erstellen ein Tokenstrings durch Erstellen der Parameter für das Token, z. B. Einen symmetrischen Hash-basierten Nachrichten-Authentifizierungscode (HMAC) des signierten Wert.
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 als Tilde-Zeichen
~
.Signieren Sie den signierten Wert entweder mit einer Ed25519-Signatur oder einem symmetrischen Schlüssel. HMAC
Erstellen Sie das Token, indem Sie einen String verketten, der die erforderlichen Token-Felder und optionale Token-Felder. Trennen Sie die einzelnen Felder und Parameter mit dem 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 Sie ein Token programmatisch erstellen können:
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:
<ph type="x-smartling-placeholder">
- </ph>
PathGlobs
URLPrefix
FullPath
- Eine der folgenden Möglichkeiten:
<ph type="x-smartling-placeholder">
- </ph>
Signature
hmac
Sofern nicht anders angegeben, wird bei Parameternamen und ihren Werten zwischen Groß- und Kleinschreibung unterschieden.
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 wird der
Token ist nicht mehr gültig. |
|
Eine Liste mit bis zu fünf Pfadsegmenten, auf die Zugriff gewährt werden soll. Die Segmente
können durch Kommas (
Pfadparameter, die durch Semikolons ( Achten Sie daher darauf, dass Ihre URL Folgendes nicht enthält:
Sonderzeichen: |
PathGlobs=PATHS |
URLPrefix |
Eine websichere Base64-codierte URL mit dem 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 das Attribut nicht duplizieren
Pfad, den Sie im signierten Wert angegeben haben. Fügen Sie in ein Token das Feld
ohne = . |
FullPath=FULL_PATH_TO_OBJECT |
Signature |
Eine websichere 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 URL-Pfad überein, einschließlich
Schrägstrich (/ ) Zeichen.
|
|
? (Fragezeichen) |
Stimmt mit einem einzelnen Zeichen in
den URL-Pfad ohne Schrägstrich (/ )
Zeichen.
|
/videos/s?main.m3u8 Übereinstimmungen
/videos/s1main.m3u8 . Keine Übereinstimmung
/videos/s01main.m3u8 oder /videos/s/main.m3u8 .
|
Globs müssen entweder mit einem Sternchen (*
) oder einem Schrägstrich (/
) beginnen
für URL-Pfade.
Da *
und /*
mit allen URL-Pfaden übereinstimmen, raten wir davon ab,
Verwenden Sie eines der beiden in Ihren signierten Tokens. Für maximalen Schutz
dass Ihre Globs mit den Inhalten übereinstimmen, auf die Sie Zugriff gewähren möchten.
Optionale Tokenfelder
Sofern nicht anders angegeben, wird bei Parameternamen und ihren Werten zwischen Groß- und Kleinschreibung unterschieden.
In der folgenden Tabelle werden die Parameternamen, etwaige Aliasse und Details für Optionale Parameter:
Feldname / Aliasse | 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
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 IP-Bereichen in Tokens ist möglicherweise nicht hilfreich, wenn Clients
Es besteht das Risiko von WAN-Migrationen oder Fällen, bei denen der Netzwerkpfad zu Ihrem
dass sich das Frontend der Anwendung vom
Bereitstellungspfad unterscheidet.
Media CDN lehnt Kunden mit einem Die folgenden Fälle können zu Media CDN führen
Kunden 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 die
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 |
|
Beliebiger String, der für die Analyse oder Wiedergabe von Protokollen nützlich ist Tracing von Daten. 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
|
SessionID=SESSION_ID_VALUE |
|
Beliebiger String, der für die Loganalyse nützlich ist. 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 eine Überschrift fehlt, ist der Wert der leere Wert . Mehrere Kopien einer Kopfzeile sind erforderlich, durch Kommas verkettet sind. | 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 vorzeichenbehaftete 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.
Die folgenden Beispieltokens werden aus einem signierten Wert erstellt:
Ed25519-Signatur
Expires=160000000~FullPath~Signature=SIGNATURE_OF_SIGNED_VALUE
Dabei ist SIGNATURE_OF_SIGNED_VALUE die ED25519-Signatur des signierten Wert erstellt.
Symmetrischer Schlüssel-HMAC
Expires=160000000~FullPath~hmac=HMAC_OF_SIGNED_VALUE
Dabei ist HMAC_OF_SIGNED_VALUE der HMAC mit dem symmetrischen Schlüssel den zuvor erstellten Wert.
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 mit 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
.
Signieren Sie den signierten Wert entweder mit einer Ed25519-Signatur oder mit einem symmetrischen Schlüssel-HMAC an.
Die folgenden Beispieltokens werden aus einem signierten Wert erstellt:
Ed25519-Signatur
Expires=160000000~URLPrefix=aHR0cDovL2V4YW1wbGUuY29tL3R2L215LXNob3cvczAxL2UwMS9wbGF5bGlzdC5tM3U4~Signature=SIGNATURE_OF_SIGNED_VALUE
Dabei ist SIGNATURE_OF_SIGNED_VALUE die ED25519-Signatur des signierten Wert erstellt.
Symmetrischer Schlüssel-HMAC
Expires=160000000~URLPrefix=aHR0cDovL2V4YW1wbGUuY29tL3R2L215LXNob3cvczAxL2UwMS9wbGF5bGlzdC5tM3U4~hmac=HMAC_OF_SIGNED_VALUE
Dabei ist HMAC_OF_SIGNED_VALUE der HMAC mit dem symmetrischen Schlüssel den zuvor erstellten Wert.
Beispiel mit 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:
<ph type="x-smartling-placeholder">
- </ph>
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.
Die folgenden Beispieltokens werden aus einem signierten Wert erstellt:
Ed25519-Signatur
Expires=160000000~PathGlobs=*~Headers=user-agent,accept~Signature=SIGNATURE_OF_SIGNED_VALUE
Dabei ist SIGNATURE_OF_SIGNED_VALUE die ED25519-Signatur des signierten Wert erstellt.
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 den zuvor erstellten Wert.
In den vorherigen Beispielen wird Headers=user-agent,accept
im Token bereitgestellt.
aber die erwarteten Headerwerte werden aus dem signierten Wert nicht wiederholt. Dadurch können
bestimmte Schlüssel/Wert-Paare des Anfrageheaders signieren, ohne die Werte zu duplizieren
im Token.