Flusso adesione programmatore prog-entitlement-flow
Panoramica overview
Questo documento descrive il flusso di adesione di base dal punto di vista del programmatore. Per informazioni sulle funzioni e sui casi d'uso oltre l'integrazione TVE di base qui descritta, vedi Casi d'uso per programmatori.
L'autenticazione Adobe Pass media il flusso di adesione tra Programmatori e MVPD fornendo interfacce sicure e coerenti per entrambe le parti. Dal lato del programmatore, Adobe Pass Authentication fornisce due tipi generali di interfaccia di adesione:
- AccessEnabler: componente client che fornisce una libreria di API per le app su dispositivi che possono eseguire il rendering di pagine web (ad esempio, app web, app per smartphone/tablet).
- API senza client: servizi web RESTful per dispositivi che non possono eseguire il rendering di pagine web (ad esempio set-top box, console per giochi, smart TV). Il requisito per il rendering delle pagine web deriva dal requisito di MVPD che richiede agli utenti di autenticarsi sul sito web di MVPD.
Oltre alla panoramica indipendente dalla piattaforma presentata qui, è disponibile una panoramica specifica per le API senza client qui: documentazione API senza client. AccessEnabler viene eseguito in modalità nativa sulle piattaforme supportate (AS/JS sul Web, Objective-C su iOS e Java su Android). Le API di AccessEnabler sono coerenti tra le piattaforme supportate. Tutte le piattaforme che non supportano AccessEnabler utilizzano la stessa API senza client.
Per entrambi i tipi di interfaccia, l’autenticazione Adobe Pass media in modo sicuro il flusso di adesione tra l’app del programmatore e l’MVPD dell’utente:
Figura: Ecosistema di autenticazione Adobe Pass
Flusso diritto entitlement-flow
Esistono quattro flussi secondari distinti che costituiscono il diritto di base
flusso:
Durante la visita iniziale di un utente al sito di un programmatore, il flusso di adesione procede nell’ordine indicato sopra. Tuttavia, nelle visite successive, a seconda che i token di autenticazione e autorizzazione siano scaduti o meno, o a seconda dei criteri di visualizzazione, un utente potrebbe passare attraverso solo uno o due dei flussi secondari.
Flusso di avvio startup
Stabilisce l'identità del programmatore e del dispositivo, esegue le attività di inizializzazione. Questo è un prerequisito per tutte le chiamate di adesione successive.
AccessEnabler
-
setRequestor()
- Stabilisce l'identità con AccessEnalber e, per estensione, con i server di autenticazione Adobe Pass. Questa chiamata è un precursore del resto del flusso di adesione. Ad esempio, in JavaScript:code language-javascript /* Define the requestor ID (Programmer/aggregator ID). */ var requestorID = "sample_requestor_Id"; ... // Callback indicating that the AccessEnabler swf has initialized function swfLoaded() { // AccessEnabler is loaded so we can use the API function it provides accessEnablerObject.setRequestor(requestorID); ... }
API senza client
\<REGGIE\_FQDN\>/reggie/v1/{requestorId}/regcode
- A seconda della piattaforma, ci possono essere attività preliminari da completare prima che l'app chiami regcode. Per informazioni dettagliate, consulta la documentazione API senza client. Ad esempio, le piattaforme Xbox richiedono di completare i passaggi di sicurezza prescritti prima di chiamare regcode.
Flusso di autenticazione authentication
Se l'autenticazione ha esito positivo, viene generato un token AuthN associato al dispositivo e al richiedente. La corretta autenticazione è un prerequisito per l’autorizzazione.
AccessEnabler
checkAuthentication()
- Controlla se nella cache dei token locali esiste un token di autenticazione nella cache valido, senza attivare effettivamente il flusso di autenticazione completo. Questa operazione attiva la funzione di callbacksetAuthenticationStatus()
.getAuthentication()
- Avvia il flusso di autenticazione completo. In caso di esito positivo, Adobe Pass Authentication genera un token AuthN e lo memorizza in cache sul client. L’utente accede al sito MVPD selezionato, presentato in un iFrame, una finestra a comparsa o una visualizzazione web, a seconda della piattaforma. Questo attiva displayProviderDialog().
API senza client
<FQDN>/.../checkauthn
- Versione del servizio Web dicheckAuthentication()
sopra.<FQDN>/.../config
- Restituisce l'elenco di MVPD nell'app di secondo schermo.<FQDN>/.../authenticate
- Avvia il flusso di autenticazione dall'app del secondo schermo, reindirizzando gli utenti al MVPD selezionato per l'accesso. In caso di esito positivo, l’autenticazione Adobe Pass genera un token AuthN e lo memorizza sul server; l’utente ritorna al dispositivo originale per completare il flusso dei diritti.
Un token AuthN è considerato valido se sono soddisfatte le due condizioni seguenti:
- Il token di autenticazione non è scaduto
- L’MVPD associato al token AuthN è incluso nell’elenco degli MVPD consentiti per l’ID richiedente corrente
Flusso di lavoro di autenticazione iniziale di AccessEnabler generico generic-ae-initial-authn-flow
-
L'app avvia il flusso di lavoro di autenticazione con una chiamata a
getAuthentication()
, che verifica la presenza di un token di autenticazione nella cache valido. Questo metodo ha un parametro facoltativoredirectURL
; se non si specifica un valore perredirectURL
, dopo una corretta autenticazione l'utente viene restituito all'URL da cui è stata inizializzata l'autenticazione. -
AccessEnabler determina lo stato di autenticazione corrente. Se l'utente è attualmente autenticato, AccessEnabler chiama la funzione di callback
setAuthenticationStatus()
, passando uno stato di autenticazione che indica il completamento dell'operazione. -
Se l'utente non è autenticato, AccessEnabler continua il flusso di autenticazione determinando se l'ultimo tentativo di autenticazione dell'utente è stato eseguito correttamente con un determinato MVPD. Se un ID MVPD è memorizzato nella cache E il flag
canAuthenticate
è true OPPURE è stato selezionato un MVPD utilizzandosetSelectedProvider()
, all'utente non viene visualizzata la finestra di dialogo di selezione MVPD. Il flusso di autenticazione continua a utilizzare il valore memorizzato nella cache di MVPD (ovvero lo stesso MVPD utilizzato durante l’ultima autenticazione riuscita). Viene effettuata una chiamata di rete al server backend e l’utente viene reindirizzato alla pagina di accesso MVPD. -
Se non è stato selezionato alcun ID MVPD nella cache E non è stato selezionato alcun MVPD utilizzando
setSelectedProvider()
OPPURE il flagcanAuthenticate
è impostato su false, viene chiamato il callbackdisplayProviderDialog()
. Questo callback indirizza l'app a creare l'interfaccia utente che presenta all'utente un elenco di MVPD tra cui scegliere. Viene fornito un array di oggetti MVPD, contenente le informazioni necessarie per creare il selettore MVPD. Ogni oggetto MVPD descrive un'entità MVPD e contiene informazioni quali l'ID dell'MVPD e l'URL in cui è possibile trovare il logo MVPD. -
Una volta selezionato un MVPD, l’app deve informare AccessEnabler della scelta dell’utente. Per i client non di Flash, una volta selezionato il MVPD desiderato, si informa AccessEnabler della selezione utente tramite una chiamata al metodo
setSelectedProvider()
. I client di Flash inviano invece unMVPDEvent
condiviso di tipo "mvpdSelection
", passando il provider selezionato. -
Quando AccessEnabler viene informato della selezione MVPD dell'utente, viene effettuata una chiamata di rete al server back-end e l'utente viene reindirizzato alla pagina di accesso MVPD.
-
All’interno del flusso di lavoro di autenticazione, AccessEnabler comunica con Adobe Pass Authentication e l’MVPD selezionato per richiedere le credenziali dell’utente (ID utente e password) e verificarne l’identità. Mentre alcuni MVPD reindirizzano al proprio sito per l'accesso, altri richiedono di visualizzare la propria pagina di accesso all'interno di un iFrame. La pagina deve includere il callback che crea un iFrame, nel caso il cliente scelga uno di questi MVPD..
-
Dopo che l’utente ha effettuato l’accesso, AccessEnabler recupera il token di autenticazione e informa l’app che il flusso di autenticazione è completo. AccessEnabler chiama il callback
setAuthenticationStatus()
con il codice di stato 1, che indica l'esito positivo. Se si verifica un errore durante l'esecuzione di questi passaggi, il callbacksetAuthenticationStatus()
viene attivato con il codice di stato 0, che indica un errore di autenticazione, nonché un codice di errore corrispondente.
Flusso di autorizzazione authorization
L’autorizzazione è un prerequisito per la visualizzazione di contenuti protetti. Se l’autorizzazione è andata a buon fine, viene generato un token AuthZ insieme a un token multimediale di breve durata fornito all’app del programmatore a scopo di sicurezza. Per supportare il flusso di lavoro di autorizzazione, è necessario aver precedentemente eseguito la configurazione del richiedente necessaria e aver integrato Media Token Verifier. Una volta completati, puoi avviare l’autorizzazione.
L’app avvia l’autorizzazione quando un utente richiede l’accesso a una risorsa protetta. Trasmetti un ID risorsa specificando la risorsa richiesta (ad esempio, un canale, un episodio, ecc.). L'app verifica innanzitutto la presenza di un token di autenticazione archiviato. Se non ne viene trovata una, viene avviato il processo di autenticazione.
AccessEnabler
-
checkAuthorization()
- Controlla l'autorizzazione senza avviare il flusso di autorizzazione completo. Questa funzione viene spesso utilizzata per aggiornare le informazioni sullo stato visualizzate nell’interfaccia utente dell’app Programmatore. -
getAuthorization()
- Avvia il flusso di autorizzazione completo.
Fornisci le seguenti funzioni di callback per gestire i risultati di
la chiamata di autorizzazione:
-
setToken()
- Se l'autenticazione ha avuto esito positivo in precedenza e l'autorizzazione ha esito positivo, AccessEnabler chiama la funzione di callbacksetToken()
, passando il token multimediale di breve durata, che indica la conclusione del flusso di adesione all'autenticazione Adobe Pass. (Prima di consentire all’utente di visualizzare il contenuto protetto, l’app del programmatore controlla la validità del Media Token utilizzando il Media Token Verifier. -
tokenRequestFailed()
- Se l'utente non è autorizzato per la risorsa richiesta (o se la query non riesce per altri motivi), AccessEnabler chiama questa funzione di callback (oltre alle proprie funzioni di segnalazione degli errori), trasmettendo i dettagli dell'errore.
API senza client
\<FQDN\>/.../authorize
- Avvia il flusso di autorizzazione completo.
Flusso di lavoro di autorizzazione di AccessEnabler generico generic-ae-authr-wf
-
Fornire una funzione di callback che registri il GUID programmatore assegnato con l'Access Enabler, utilizzando
setReqestor()
. Questa funzione di callback viene chiamata quando AccessEnabler è stato
scaricato correttamente. -
Chiamare
getAuthorization()
quando un utente richiede l'accesso a una risorsa protetta. UtilizzandogetAuthorization()
, passa un ID risorsa specificando la risorsa richiesta (ad esempio, un canale, un episodio, ecc.). AccessEnabler cerca un token di autenticazione memorizzato nella cache da passare con la richiesta di autorizzazione. Se non ne viene trovato uno, avvia il flusso di autenticazione. -
Fornisci funzioni di callback per gestire i risultati dell’autorizzazione:
-
setToken()
- Se l'autorizzazione ha esito positivo o se l'utente è stato precedentemente autorizzato, Access Enabler continua il processo di autorizzazione chiamando la funzione di callbacksetToken()
e passando il token di autorizzazione di breve durata. -
tokenRequestFailed()
- Se l'utente non è autorizzato per la risorsa richiesta (o se la query non riesce per altri motivi), AccessEnabler richiama tutte le funzioni di segnalazione errori registrate, più il callbacktokenRequestFailed()
, trasmettendo i dettagli sull'errore.
-
Flusso di disconnessione logout
Cancella i token e gli altri dati associati al flusso di adesione dell'utente corrente.
AccessEnabler
logout()
API senza client
\<FQDN\>/.../logout
Comprendere il comportamento di AccessEnabler ae-behavior
Tutte le chiamate API di AccessEnabler sono asincrone (con una eccezione, indicata nei riferimenti API). Puoi chiamare un’API un numero arbitrario di volte, tuttavia non c’è una solida garanzia che le azioni siano state attivate
dalle chiamate saranno completate nello stesso ordine in cui sono state effettuate le chiamate. (Fa eccezione il runtime di Flash Player corrente; non essendo multi-thread, le chiamate do verranno completate nell'ordine
vengono chiamati.)
Per distinguere le risposte ed essere in grado di associare le risposte alle chiamate, tutti i callback eseguono l'echo dei parametri di input. Sono inclusi setToken()
e tokenRequestFailed()
, attivati in ultima istanza da checkAuthorization()
. (Per checkAuthorization()
callback, la risorsa utilizzata viene ripetuta). Sfruttando questa funzione, puoi distinguere quale risposta corrisponde a quale chiamata. Per utilizzare questa funzione è possibile codificare un codice simile al seguente:
for each (resource in ["TNT", "CNN", "TBS", "AdultSwim"] ) {
ae.checkAuthorization(resource);
}
// Success callback
function setToken(resource, token) {
// Use "resource" to figure
// out which checkAuthorization
// call triggered this response
}
// Old error callback
function tokenRequestFailed(resource, error, details) {
// use "resource" to figure
// out in response to which
// checkAuthorization call
// this was triggered
}
// Error callback using new error api
ae.bind("errorEvent',"errorHandler");
function errorHandler(error) {
if(error.resource) {
// Use error.resource to figure
// which checkAuthorization call
// triggered this response
}
}
Domande frequenti sul comportamento AE ae-beh-faq
Domanda. Cosa succede se effettuo una seconda chiamata di AccessEnabler prima del termine della prima chiamata?
La prima chiamata continua a essere eseguita durante l’esecuzione della seconda chiamata (comunicazioni asincrone).
Domanda. Esiste un numero massimo di chiamate simultanee che AccessEnabler può supportare?
Poiché nel codice AccessEnabler non viene impostato esplicitamente alcun limite, l'utente è limitato solo dalle risorse di sistema disponibili e dalla capacità di MVPD.