Generare e firmare token di riproduzione - Amazon Interactive Video Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Generare e firmare token di riproduzione

Per informazioni dettagliate su come lavorare con i JWT e le librerie supportate per la firma dei token, visita jwt.io. Nell'interfaccia jwt.io, per firmare i token devi inserire la tua chiave privata. La chiave pubblica è necessaria solo se desideri verificare i token.

Schema dei token

Tutti i JWT hanno tre campi: intestazione, payload e firma.

  • L'Intestazione specifica:

    • alg è l'algoritmo di firma. Questo è ES384, un algoritmo di firma ECDSA che utilizza l'algoritmo hash SHA-384.

    • typ è il tipo di token, JWT.

    { "alg": "ES384", "typ": "JWT" }
  • Il payload contiene dati specifici di Amazon IVS:

    • channel-arn è un riferimento per la richiesta di riproduzione video.

    • access-control-allow-origin è un campo opzionale che può essere utilizzato per limitare la riproduzione a un'origine specificata, ad esempio per rendere un flusso visualizzabile solo da un sito Web specificato. Ad esempio, è possibile che tu voglia impedire alle persone di incorporare il lettore su altri siti Web. Per impostazione predefinita, la riproduzione è consentita su tutte le origini. Ciò limita solo il client del browser; non limita la riproduzione da parte di un client non browser. Questo campo può contenere più origini separate da virgole. Sono consentiti domini jolly: ogni origine può iniziare il proprio nome host con * (esempio: https://*.amazon.com).

    • strict-origin-enforcement è un campo opzionale che può essere utilizzato per rafforzare la restrizione di origine specificata nel campo access-control-allow-origin. Per impostazione predefinita, la restrizione access-control-allow-origin si applica solo alla playlist multivariante. Se l'opzione strict-origin-enforcement è abilitata, il server applicherà un requisito in base al quale l'origine richiedente deve corrispondere al token per tutte le richieste di riproduzione (incluse playlist multivarianti, playlist di varianti e segmenti). Ciò implica che tutti i client (inclusi client non browser) dovranno fornire un'intestazione di richiesta di origine valida per ogni richiesta. Usa il metodo setOrigin per impostare l'intestazione negli SDK di iOS Player e Android Player di IVS. Viene impostato automaticamente nei browser web, ad eccezione di iOS Safari. Per iOS Safari, devi aggiungere crossorigin="anonymous" all'elemento video per accertarti che l'intestazione della richiesta di origine venga inviata. Esempio: <video crossorigin="anonymous"></video>.

    • single-use-uuid è un campo facoltativo che contiene un identificatore univoco universale (UUID) valido generato durante la creazione del token. Se aggiungi questo campo e un valore UUID, il token associato generato viene invalidato una volta utilizzato per recuperare una playlist multivariante e guardare un contenuto in streaming. I token di autenticazione monouso rendono più difficile per gli utenti malintenzionati condividere un contenuto in streaming sui tuoi canali privati con altri spettatori. Tieni presente che quando utilizzi la richiesta single-use-uuid, il valore massimo per la richiesta exp è di 10 minuti nel futuro.

    • viewer-id è un campo opzionale che contiene un ID utilizzato per il tracciamento e che fa riferimento allo spettatore a cui è concesso il token. Questo campo è necessario per abilitare la possibilità di revocare la sessione di visualizzazione dello spettatore in futuro. La lunghezza massima è di 40 caratteri e il valore deve classificarsi come stringa. Non utilizzare questo campo per informazioni di identificazione personale, riservate o sensibili. Tieni presente che quando utilizzi viewer-id, il valore massimo per exp è di 10 minuti nel futuro.

    • viewer-session-version è un campo opzionale che contiene una versione da associare a questa sessione dello spettatore. Quando si revocano le sessioni dello spettatore, questo valore può essere utilizzato per filtrare quali sessioni dello spettatore vengono revocate. Ad esempio, specificare un timestamp Unix qui consentirebbe la revoca di tutte le sessioni avviate prima dell'ora specificata. Il valore deve essere un numero intero con segno a 64 bit (Int64). Questo campo è pensato per essere fornito (facoltativamente) insieme a viewer-id; da solo non ha alcuna funzione. Il valore predefinito è 0.

    • exp è un timestamp Unix UTC che specifica quando scade il token. Questo non indica il periodo di tempo in cui il flusso può essere visualizzato. Il token viene convalidato quando lo spettatore inizializza la riproduzione, non durante tutto il flusso. Inserisci questo valore come valore di tipo intero.

      Tenere presente che un timestamp Unix è un valore numerico che rappresenta il numero di secondi da 1970-01-01T00:00:00Z UTC fino alla data/ora UTC specificata, ignorando i secondi intercalari. Lingue diverse misurano i timestamp Unix in unità diverse; ad esempio, Date.now() restituisce l'ora in JavaScript millisecondi. (Consulta exp nella Sezione JWT RFC 4.1.4.)

    { "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> }
  • Per creare la firma, utilizza la chiave privata con l'algoritmo specificato nell'intestazione (ES384) per firmare l'intestazione codificata e il payload codificato.

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

Istruzioni

  1. Genera la firma del token con l'algoritmo di firma ES384 e una chiave privata associata a una delle risorse della chiave di riproduzione (consulta l'esempio ECDSASHA384 sopra).

  2. Assemblare il token.

    base64UrlEncode(header) + "." + base64UrlEncode(payload) + "." + base64UrlEncode(signature)
  3. Aggiungere il token firmato all'URL di riproduzione come parametro di query.

    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>