Wiedergabe-Tokens generieren und signieren - Amazon Interactive Video Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Wiedergabe-Tokens generieren und signieren

Weitere Informationen zum Arbeiten mit JWTs und den unterstützten Bibliotheken zum Signieren von Token finden Sie unter jwt.io. In der jwt.io-Oberfläche müssen Sie Ihren privaten Schlüssel eingeben, um Token zu signieren. Der öffentliche Schlüssel wird nur benötigt, wenn Sie Token verifizieren möchten.

Token-Schema

Alle JWTs haben drei Felder: Header, Nutzlast und Signatur.

  • Der Header gibt Folgendes an:

    • alg ist der Signaturalgorithmus. Dies ist ES384, ein ECDSA-Signaturalgorithmus, der den SHA-384-Hash-Algorithmus verwendet.

    • typ ist der Tokentyp, JWT.

    { "alg": "ES384", "typ": "JWT" }
  • Die Nutzlast enthält spezifische Daten für Amazon IVS:

    • channel-arn ist eine Referenz für die Videowiedergabeanforderung.

    • access-control-allow-origin ist ein optionales Feld, das verwendet werden kann, um die Wiedergabe auf eine bestimmte Herkunft zu beschränken, d. h., um einen Stream nur von einer bestimmten Website aus sichtbar zu machen. Beispielsweise können Sie verhindern, dass Benutzer den Player auf anderen Websites einbetten. Standardmäßig ist die Wiedergabe von allen Ursprüngen aus zugelassen. (Beachten Sie, dass dies nur den Browser-Client einschränkt, jedoch nicht die Wiedergabe von einem Nicht-Browser-Client.) Dieses Feld kann mehrere Ursprünge enthalten, die durch Kommas getrennt sind. Platzhalterdomänen sind erlaubt: jeder Ursprung kann seinen Hostnamen mit * beginnen (Beispiel: https://*.amazon.com).

    • strict-origin-enforcement ist ein optionales Feld, das verwendet werden kann, um die im access-control-allow-origin-Feld angegebene Herkunftsbeschränkung zu verstärken. Standardmäßig gilt die access-control-allow-origin-Einschränkung nur für die multivariante Wiedergabeliste. Wenn strict-origin-enforcement aktiviert ist, setzt der Server die Anforderung durch, dass der anfordernde Ursprung dem Token für alle Wiedergabeanforderungen entspricht (einschließlich multivarianter Wiedergabelisten, variantener Wiedergabelisten und Segmente). Das bedeutet, dass alle Clients (auch Nicht-Browser-Clients) bei jeder Anfrage einen gültigen Origin-Anforderungsheader angeben müssen. Verwenden Sie die setOrigin-Methode, um den Header in den iOS- und Android-Player-SDKs von IVS festzulegen. Es wird automatisch in Webbrowsern außer iOS Safari eingestellt. Für iOS Safari müssen Sie dem Videoelement crossorigin="anonymous" hinzufügen, um sicherzustellen, dass der Origin-Anforderungsheader gesendet wird. Beispiel: <video crossorigin="anonymous"></video>.

    • single-use-uuid ist ein optionales Feld mit einem gültigen Universally Unique Identifier (UUID), den Sie im Rahmen der Erstellung des Tokens generieren. Wenn Sie dieses Feld und einen UUID-Wert hinzufügen, wird das zugehörige generierte Token ungültig, sobald damit eine multivariante Wiedergabeliste abgerufen und ein Stream angesehen wird. Einweg-Authentifizierungstoken erschweren es böswilligen Benutzern, einen Stream auf Ihren privaten Kanälen mit anderen Zuschauern zu teilen. Hinweis: Bei Verwendung des single-use-uuid-Antrags beträgt der Höchstwert für den exp-Antrag 10 Minuten in der Zukunft.

    • viewer-id ist ein optionales Feld, das eine ID enthält, die zur Nachverfolgung verwendet wird und auf den Viewer verweist, dem das Token gewährt wird. Dieses Feld ist erforderlich, damit die Viewer-Sitzung des Viewers in Zukunft rückgängig gemacht werden kann. Die maximale Länge beträgt 40 Zeichen, und der Wert muss als Zeichenfolge gelten. Verwenden Sie dieses Feld nicht für persönlich identifizierbare, vertrauliche oder sensible Informationen. Hinweis: Bei Verwendung von viewer-id beträgt der Höchstwert für exp 10 Minuten in der Zukunft.

    • viewer-session-version ist ein optionales Feld, das eine Version enthält, die mit dieser Viewer-Sitzung verknüpft werden soll. Beim Widerrufen von Viewer-Sitzungen kann dieser Wert verwendet werden, um zu filtern, welche Viewer-Sitzungen gesperrt werden. Wenn Sie hier beispielsweise einen Unix-Zeitstempel angeben, können alle Sitzungen, die vor dem angegebenen Zeitpunkt gestartet wurden, widerrufen werden. Der Wert muss eine 64-Bit-Ganzzahl mit Vorzeichen (Int64) sein. Dieses Feld soll (optional) zusammen mit viewer-id bereitgestellt werden. Von alleine macht es nichts. Der Standardwert lautet 0.

    • exp ist ein Unix-UTC-Zeitstempel für den Zeitpunkt, an dem das Token abläuft. Dies gibt nicht an, wie lange der Stream angezeigt werden kann. Das Token wird überprüft, wenn der Viewer die Wiedergabe initialisiert, nicht im gesamten Stream. Geben Sie diesen Wert als Ganzzahltyp ein.

      Beachten Sie, dass ein Unix-Zeitstempel ein numerischer Wert ist, der die Anzahl der Sekunden von 1970-01-01T00:00:00Z UTC bis zum angegebenen UTC-Datum/Uhrzeit angibt, wobei Schaltsekunden ignoriert werden. Verschiedene Sprachen messen Unix-Zeitstempel in verschiedenen Einheiten; z. B. gibt die Zeit in Millisekunden JavaScript Date.now() zurück. (Siehe exp im Abschnitt 4.1.4 von JWT RFC.)

    { "aws:channel-arn": "<channel_arn>", "aws:access-control-allow-origin": "<your-origin>", "aws:strict-origin-enforcement": true, "aws:single-use-uuid": "<UUID>", "aws:viewer-id": "<viewer_id>", "aws:viewer-session-version": "<viewer_session_version>", "exp": <unix timestamp> }
  • Zum Erstellen der Signatur verwenden Sie den privaten Schlüssel im Header (ES384) mit dem angegebenen Algorithmus, um den codierten Header, die codierte Nutzlast und den privaten Schlüssel zu signieren.

    ECDSASHA384( base64UrlEncode(header) + "." + base64UrlEncode(payload), <private-key> )

Anweisungen

  1. Generieren Sie die Signatur des Tokens mit dem ES384-Signaturalgorithmus und einem privaten Schlüssel, der einer Ihrer Wiedergabe-Schlüssel-Ressourcen zugeordnet ist (siehe ECDSASHA384-Beispiel oben).

  2. Montieren des Token.

    base64UrlEncode(header) + "." + base64UrlEncode(payload) + "." + base64UrlEncode(signature)
  3. Hängen Sie das signierte Token als Abfrageparameter an die Wiedergabe-URL an.

    https://b37c565f6d790a14a0e78afaa6808a80.us-west-2.playback.live-video.net/ api/video/v1/aws.ivs.us-west-2.123456789. channel.fbc789c1-2c56-4ce6-a30a-d99275dc4481.m3u8?token=<token>