Manuale dell’integrazione di Amazon FireOS (legacy) amazon-fireos-integration-cookbook

NOTE
Il contenuto di questa pagina viene fornito solo a scopo informativo. L’utilizzo di questa API richiede una licenza corrente da Adobe. Non è consentito alcun uso non autorizzato.
IMPORTANT
Assicurati di essere sempre informato sugli ultimi annunci di prodotto per l'autenticazione di Adobe Pass e sulle timeline di disattivazione aggregate nella pagina Annunci di prodotto.

Introduzione intro

Questo documento descrive i flussi di lavoro per l'adesione che un'applicazione di livello superiore di un programmatore può implementare tramite le API esposte dalla libreria AccessEnabler di Amazon FireOS.

La soluzione di autenticazione Adobe Pass per Amazon FireOS è infine suddivisa in due domini:

  • Dominio dell'interfaccia utente: è il livello superiore dell'applicazione che implementa l'interfaccia utente e utilizza i servizi forniti dalla libreria AccessEnabler per fornire l'accesso al contenuto con restrizioni.

  • Dominio AccessEnabler: in questo caso i flussi di lavoro per l'adesione vengono implementati sotto forma di:

    • Chiamate di rete effettuate ai server back-end di Adobe
    • Regole della logica di business relative ai flussi di lavoro di autenticazione e autorizzazione
    • Gestione di varie risorse ed elaborazione dello stato del flusso di lavoro (ad esempio la cache dei token)

L'obiettivo del dominio AccessEnabler è nascondere tutte le complessità dei flussi di lavoro di adesione e fornire all'applicazione di livello superiore (tramite la libreria AccessEnabler) un set di semplici primitive di adesione. Questo processo consente di implementare i flussi di lavoro per l’adesione:

  1. Imposta l'identità del richiedente.
  2. Verifica e ottieni l’autenticazione per un determinato provider di identità.
  3. Controlla e ottieni l’autorizzazione per una particolare risorsa.
  4. Disconnetti.

L'attività di rete di AccessEnabler viene eseguita in un thread diverso, pertanto il thread dell'interfaccia utente non viene mai bloccato. Di conseguenza, il canale di comunicazione bidirezionale tra i due domini dell’applicazione deve seguire un modello completamente asincrono:

  • Il livello applicazione dell'interfaccia utente invia messaggi al dominio AccessEnabler tramite le chiamate API esposte dalla libreria AccessEnabler.
  • AccessEnabler risponde al livello dell'interfaccia utente tramite i metodi di callback inclusi nel protocollo AccessEnabler che il livello dell'interfaccia utente registra con la libreria AccessEnabler.

Flussi di diritti entitlement

A. Prerequisiti prereqs

  1. Creare le funzioni di callback:

    • "setRequestorComplete()"

      • Attivato da setRequestor(), restituisce esito positivo o negativo. Il successo indica che puoi procedere con le chiamate di adesione.
    • displayProviderDialog(mvpds)

      • Attivato da getAuthentication() solo se l'utente non ha selezionato un provider (MVPD) e non è ancora autenticato. Il parametro mvpds è un array di provider disponibili per l'utente.
    • "setAuthenticationStatus(status, reason)"

      • Attivato da checkAuthentication() ogni volta. Attivato da getAuthentication() solo se l'utente è già autenticato e ha selezionato un provider.

      • Lo stato restituito è autenticato o non autenticato. Il motivo descrive un errore di autenticazione o un'azione di disconnessione.

    • navigateToUrl(url)

      • Ignorato in AmazonFireOS SDK, il metodo viene utilizzato sulle piattaforme Android in cui viene attivato da getAuthentication() dopo che l'utente ha selezionato un MVPD. Il parametro url fornisce il percorso della pagina di accesso di MVPD.
    • sendTrackingData(event, data)

      • Attivato da checkAuthentication(), getAuthentication(), checkAuthorization(), getAuthorization(), setSelectedProvider().
        Il parametro event indica quale evento di adesione si è verificato; il parametro data è un elenco di valori relativi all'evento.
    • "setToken(token, resource)"

      • Attivazione eseguita da checkAuthorization() e getAuthorization() dopo un'autorizzazione di visualizzazione di una risorsa completata.
      • Il parametro token è il token multimediale di breve durata; il parametro resource è il contenuto che l'utente è autorizzato a visualizzare.
    • "tokenRequestFailed(resource, code, description)"

      • Attivato da checkAuthorization() e getAuthorization() dopo un'autorizzazione non riuscita.
      • Il parametro resource è il contenuto che l'utente stava tentando di visualizzare. Il parametro code è il codice di errore che indica il tipo di errore che si è verificato. Il parametro description descrive l'errore associato al codice di errore.
    • "selectedProvider(mvpd)"

      • Attivato da getSelectedProvider().
      • Il parametro mvpd fornisce informazioni sul provider selezionato dall'utente.
    • "setMetadataStatus(metadata, key, arguments)"

      • Attivato da getMetadata().
      • Il parametro metadata fornisce i dati specifici richiesti; il parametro key è la chiave utilizzata nella richiesta getMetadata() e il parametro arguments è lo stesso dizionario passato a getMetadata().
    • "preauthorizedResources(resources)"

      • Attivato da checkPreauthorizedResources().
      • Il parametro authorizedResources presenta le risorse che l'utente è autorizzato a visualizzare.

B. Flusso di avvio startup_flow

  1. Avvia l'applicazione di livello superiore.

  2. Avvia l'autenticazione Adobe Pass.

    1. Chiamare getInstance per creare una singola istanza dell'autenticazione Adobe Pass AccessEnabler.

      • Dipendenza: Libreria Amazon FireOS nativa per l'autenticazione di Adobe Pass (AccessEnabler)
    2. Chiamare setRequestor() per stabilire l'identità del programmatore; passare requestorID del programmatore e (facoltativamente) un array di endpoint di autenticazione Adobe Pass.

      • Dipendenza: ID richiedente autenticazione Adobe Pass valido (rivolgiti al tuo Adobe Pass Authentication Account Manager per risolvere il problema).

      • Trigger: callback setRequestorComplete()

    Non è possibile completare alcuna richiesta di adesione finché non viene stabilita l'identità completa del richiedente. Ciò significa che mentre setRequestor() è ancora in esecuzione, tutte le richieste di adesione successive (ad esempio,checkAuthentication()) sono bloccate.

    Sono disponibili due opzioni di implementazione: una volta inviate le informazioni di identificazione del richiedente al server backend, il livello applicazione dell’interfaccia utente può scegliere uno dei due approcci seguenti:

    1. Attendere l'attivazione del callback setRequestorComplete() (parte del delegato AccessEnabler). Questa opzione fornisce la massima certezza che setRequestor() è stato completato, quindi è consigliata per la maggior parte delle implementazioni.
    2. Continuare senza attendere l'attivazione del callback setRequestorComplete() e iniziare a emettere richieste di adesione. Queste chiamate (checkAuthentication, checkAuthorization, getAuthentication, getAuthorization, checkPreauthorizedResource, getMetadata, logout) sono in coda dalla libreria AccessEnabler, che eseguirà le chiamate di rete effettive dopo setRequestor(). Questa opzione può talvolta essere interrotta se, ad esempio, la connessione di rete è instabile.
  3. Chiamare checkAuthentication() per verificare la presenza di un'autenticazione esistente senza avviare il flusso di autenticazione completo. Se la chiamata ha esito positivo, puoi passare direttamente al flusso di autorizzazione. In caso contrario, passare al flusso di autenticazione.

  • Dipendenza: Chiamata riuscita a setRequestor() (questa dipendenza si applica anche a tutte le chiamate successive).

  • Trigger: callback setAuthenticationStatus()

C. Flusso di autenticazione authn_flow

  1. Chiamare getAuthentication() per avviare il flusso di autenticazione o per ottenere la conferma che l'utente è già autenticato.

    Trigger:

    • Il callback setAuthenticationStatus(), se l'utente è già autenticato. In questo caso, passare direttamente al Flusso di autorizzazione.
    • Il callback displayProviderDialog(), se l'utente non è ancora autenticato.
  2. Presentare all'utente l'elenco dei provider inviati a displayProviderDialog().

  3. Dopo che l'utente ha selezionato un provider, WebView aprirà la pagina del provider per l'accesso dell'utente

    note note
    NOTE
    A questo punto, l’utente ha la possibilità di annullare il flusso di autenticazione. In questo caso, AccessEnabler rimuoverà il proprio stato interno e reimposterà il flusso di autenticazione.
  4. Dopo che l'utente avrà eseguito correttamente l'accesso, WebView verrà chiuso.

  5. chiamare getAuthenticationToken(), che indica a AccessEnabler di recuperare il token di autenticazione dal server back-end.

  6. [Facoltativo] Chiamare checkPreauthorizedResources(resources) per verificare quali risorse l'utente è autorizzato a visualizzare. Il parametro resources è un array di risorse protette associate al token di autenticazione dell'utente.

    Trigger: preAuthorizedResources() callback
    Punto di esecuzione: dopo il completamento del flusso di autenticazione

  7. Se l’autenticazione ha esito positivo, procedi al flusso di autorizzazione.

D. Flusso di autorizzazione authz_flow

  1. Chiamare getAuthorization() per avviare il flusso di autorizzazione.

    Dipendenza: ID risorsa validi concordati con i MVPD.

    Nota: i ResourceID devono essere gli stessi utilizzati su qualsiasi altro dispositivo o piattaforma e saranno gli stessi in tutti gli MVPD.

  2. Convalida autenticazione e autorizzazione.

    • Se la chiamata getAuthorization() ha esito positivo: l'utente dispone di token AuthN e AuthZ validi (l'utente è autenticato e autorizzato a guardare il contenuto multimediale richiesto).

    • Se getAuthorization() ha esito negativo: esaminare l'eccezione generata per determinarne il tipo (AuthN, AuthZ o altro):

      • In caso di errore di autenticazione (AuthN), riavvia il flusso di autenticazione.
      • Se si trattava di un errore di autorizzazione (AuthZ), l’utente non è autorizzato a guardare il contenuto multimediale richiesto e deve visualizzare all’utente un qualche tipo di messaggio di errore.
      • Se si è verificato un altro tipo di errore (errore di connessione, errore di rete, ecc.), visualizza un messaggio di errore appropriato.
  3. Convalida il token multimediale breve.

    Utilizza la libreria Adobe Pass Authentication Media Token Verifier per verificare il token multimediale di breve durata restituito dalla chiamata getAuthorization() precedente:

    • Se la convalida ha esito positivo: riproduci il file multimediale richiesto per l’utente.
    • Se la convalida non riesce: il token AuthZ non è valido, la richiesta di supporto deve essere rifiutata e l’utente deve visualizzare un messaggio di errore.
  4. Tornare al normale flusso dell'applicazione.

E. Visualizza flusso multimediale media_flow

  1. L’utente seleziona il file multimediale da visualizzare.

  2. Il supporto è protetto? L'applicazione verifica se il supporto selezionato è protetto:

    • Se il supporto selezionato è protetto, l'applicazione avvia il flusso di autorizzazione.
    • Se il supporto selezionato non è protetto, riprodurlo per l'utente.

F. Flusso di disconnessione logout_flow

  1. Chiamare logout() per disconnettersi. AccessEnabler cancella tutti i valori e i token memorizzati in cache ottenuti dall'utente per il MVPD corrente su tutti i richiedenti che condividono l'accesso tramite Single Sign-On. Dopo aver cancellato la cache, AccessEnabler effettua una chiamata al server per pulire le sessioni lato server. Poiché la chiamata al server potrebbe causare un reindirizzamento SAML all’IdP (consentendo la pulizia della sessione sul lato IdP), questa chiamata deve seguire tutti i reindirizzamenti. Per questo motivo, questa chiamata verrà gestita all'interno di un controllo WebView, invisibile per l'utente.

    Nota: il flusso di disconnessione è diverso dal flusso di autenticazione in quanto l'utente non è tenuto a interagire in alcun modo con WebView. È quindi possibile (e consigliato) rendere il controllo WebView invisibile (ovvero nascosto) durante il processo di logout.

recommendation-more-help
3f5e655c-af63-48cc-9769-2b6803cc5f4b