Manuale dell’SDK iOS/tvOS iostvos-sdk-cookbook
Introduzione intro
Questo documento descrive i flussi di lavoro di adesione che l’applicazione di livello superiore di un programmatore può implementare tramite le API esposte dalla libreria AccessEnabler di iOS/tvOS.
La soluzione di autenticazione Adobe Pass per iOS/tvOS è infine suddivisa in due domini:
-
Dominio dell’interfaccia utente: livello applicativo superiore che implementa l’interfaccia utente e utilizza i servizi forniti dalla libreria AccessEnabler per fornire accesso a contenuti con restrizioni.
-
Dominio AccessEnabler: qui vengono implementati i flussi di lavoro per l’adesione 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 con cui implementare i flussi di lavoro di adesione:
- Imposta l'identità del richiedente
- Verifica e ottieni l’autenticazione per un determinato provider di identità
- Controllare e ottenere l’autorizzazione per una particolare risorsa
- Disconnetti
- Flussi SSO Apple tramite proxy del framework Apple VSA
L'attività di rete di AccessEnabler si svolge nel proprio thread, 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.
Configurazione del servizio ID Experience Cloud (ID visitatore) visitorIDSetup
Configurazione di ID EXPERIENCE CLOUD valore è importante dal Analytics punto di vista. Una volta al visitorID
viene impostato, l'SDK invia queste informazioni insieme a ogni chiamata di rete e Adobe Pass Il server di autenticazione raccoglie queste informazioni. Puoi correlare le analisi del servizio di autenticazione di Adobe Pass con qualsiasi altro rapporto di analisi disponibile in altre applicazioni o siti web. Puoi trovare informazioni su come impostare visitorID qui.
Flussi di diritti entitlement
R. Prerequisiti
B. Flusso di avvio
C. Flusso di autenticazione con Apple SSO
D. Flusso di autenticazione con Apple SSO su iOS
E. Flusso di autenticazione con Apple SSO su tvOS
F. Flusso di autorizzazione
G. Visualizza flusso multimediale
H. Flusso di disconnessione senza Apple SSO
I. Flusso di disconnessione con Apple SSO
A. Prerequisiti prereqs
-
Creare le funzioni di callback:
-
setRequestorComplete()
-
Attivato da setRequestor(), restituisce l'esito positivo o negativo.
-
Il successo indica che puoi procedere con le chiamate di adesione.
-
- Attivato da
getAuthentication()
solo se l’utente non ha selezionato un provider (MVPD) e non è ancora autenticato. - Il
mvpds
Il parametro è un array di provider disponibili per l'utente.
- Attivato da
-
setAuthenticationStatus(status, errorcode)
- Attivato da
checkAuthentication()
ogni volta. - Attivato da
getAuthentication()
solo se l’utente è già autenticato e ha selezionato un provider. - Lo stato restituito è success o failure, il codice di errore descrive il tipo di errore.
- Attivato da
-
- Attivato da
getAuthentication()
dopo che l’utente ha selezionato un MVPD. Ilurl
Il parametro fornisce la posizione della pagina di accesso di MVPD.
- Attivato da
-
sendTrackingData(event, data)
- Attivato da
checkAuthentication()
,getAuthentication()
,checkAuthorization()
,getAuthorization()
,setSelectedProvider()
. - Il
event
il parametro indica quale evento di adesione si è verificato; ildata
Il parametro è un elenco di valori relativi all’evento.
- Attivato da
-
setToken(token, resource)
- Attivato da checkAuthorization() e getAuthorization() dopo un’autorizzazione riuscita a visualizzare una risorsa.
- Il
token
è il token multimediale di breve durata; ilresource
Il parametro è il contenuto che l’utente è autorizzato a visualizzare.
-
tokenRequestFailed(resource, code, description)
- Attivato da checkAuthorization() e getAuthorization() dopo un’autorizzazione non riuscita.
- Il
resource
parametro è il contenuto che l'utente stava tentando di visualizzare; ilcode
parametro è il codice di errore che indica il tipo di errore che si è verificato; ildescription
Il parametro descrive l’errore associato al codice di errore.
-
selectedProvider(mvpd)
- Attivato da
getSelectedProvider()
. - Il
mvpd
Il parametro fornisce informazioni sul provider selezionato dall'utente.
- Attivato da
-
setMetadataStatus(metadata, key, arguments)
- Attivato da
getMetadata().
- Il
metadata
Il parametro fornisce i dati specifici richiesti; ilkey
Il parametro è la chiave utilizzata nel getMetadata() richiesta; earguments
Il parametro è lo stesso dizionario che è stato passato a getMetadata().
- Attivato da
-
"preauthorizedResources(authorizedResources)"
-
Attivato da
checkPreauthorizedResources()
. -
Il
authorizedResources
Il parametro presenta le risorse che l’utente è autorizzato a visualizzare.
-
-
"presentTvProviderDialog(viewController)"
- Attivato da getAuthentication() quando il richiedente corrente supporta almeno su MVPD che dispone di supporto SSO.
- Il parametro viewController è la finestra di dialogo SSO di Apple e deve essere presentato sul controller della visualizzazione principale.
-
"dismissTvProviderDialog(viewController)"
- Attivato da un’azione dell’utente (selezionando "Annulla" o "Altri provider TV" dalla finestra di dialogo SSO di Apple).
- Il parametro viewController è la finestra di dialogo SSO di Apple e deve essere chiuso dal controller della visualizzazione principale.
-
B. Flusso di avvio startup_flow
-
Avvia l'applicazione di livello superiore.
-
Avvia autenticazione Adobe Pass
a. Chiamata
init
per creare una singola istanza di Adobe Pass Authentication AccessEnabler.- Dipendenza: Libreria iOS/tvOS nativa per l’autenticazione di Adobe Pass (AccessEnabler)
b. Chiamata
setRequestor()
per stabilire l'identità del programmatore; passare nelrequestorID
e (facoltativamente) un array di endpoint di autenticazione Adobe Pass. Per tvOS dovrai anche fornire la chiave pubblica e il segreto. Consulta Documentazione senza client per i dettagli.-
Dipendenza: ID richiedente autenticazione Adobe Pass valido (rivolgiti al tuo Adobe Pass Authentication Account Manager per ottenere questo risultato).
-
Trigger:
setRequestorComplete() callback.
note note NOTE 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 bloccati.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:
-
Attendi l'attivazione di
setRequestorComplete()
callback (parte del delegato AccessEnabler). Questa opzione offre la massima certezza chesetRequestor()
è stato completato, quindi è consigliato per la maggior parte delle implementazioni. -
Continua senza attendere l'attivazione di
setRequestorComplete()
richiamata e inizia a emettere richieste di adesione. Queste chiamate (checkAuthentication, checkAuthorization, getAuthentication, getAuthorization, checkPreauthorizedResource, getMetadata, logout) sono in coda dalla libreria AccessEnabler, che effettua le chiamate di rete effettive doposetRequestor()
. Questa opzione può talvolta essere interrotta se, ad esempio, la connessione di rete è instabile.
-
Chiamata
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 a riuscita setRequestor() (questa dipendenza si applica anche a tutte le chiamate successive).
-
Trigger: setAuthenticationStatus() callback.
-
C. Flusso di autenticazione senza Apple SSO authn_flow_wo_applesso
-
Chiamata
getAuthentication()
per avviare il flusso di autenticazione o per ottenere la conferma che l’utente è già autenticato.Trigger:
-
Il setAuthenticationStatus() callback, se l'utente è già autenticato. In questo caso, passare direttamente al Flusso di autorizzazione.
-
Il displayProviderDialog() callback, se l'utente non è ancora autenticato.
-
-
Presenta all’utente l’elenco dei provider inviati a
displayProviderDialog()
. -
Dopo che l’utente ha selezionato un provider, ottiene l’URL del MVPD dell’utente da
navigateToUrl:
onavigateToUrl:useSVC:
callback e apertura di unaUIWebView/WKWebView
oSFSafariViewController
e indirizzarlo all'URL. -
Attraverso il
UIWebView/WKWebView
oSFSafariViewController
istanziato nel passaggio precedente, l’utente arriva alla pagina di accesso di MVPD e immette le credenziali di accesso. Diverse operazioni di reindirizzamento si svolgono all’interno del controller.
null
come parametro. Ciò consente ad AccessEnabler di ripulire il proprio stato interno e reimpostare il flusso di autenticazione.-
Dopo che l’utente ha effettuato l’accesso, il livello dell’applicazione rileva il caricamento di un URL personalizzato specifico. Questo URL personalizzato specifico non è valido e non è destinato al controller per caricarlo effettivamente. Deve essere interpretato solo dall’applicazione come un segnale che il flusso di autenticazione è stato completato e che è sicuro chiudere
UIWebView/WKWebView
oSFSafariViewController
controller. Nel caso in cuiSFSafariViewController
è richiesto l'utilizzo del controller. L'URL personalizzato specifico è definito daapplication's custom scheme
(ad es.adbe.u-XFXJeTSDuJiIQs0HVRAg://adobe.com
), altrimenti questo URL personalizzato specifico è definito daADOBEPASS_REDIRECT_URL
costante (ovveroadobepass://ios.app
). -
Chiudere il controller UIWebView/WKWebView o SFSafariViewController e chiamare AccessEnabler
handleExternalURL:url
Metodo API che indica ad AccessEnabler di recuperare il token di autenticazione dal server back-end. -
(Facoltativo) Chiamata
checkPreauthorizedResources(resources)
per verificare quali risorse l’utente è autorizzato a visualizzare. Ilresources
Il parametro è un array di risorse protette associate al token di autenticazione dell’utente. Un uso per le informazioni di autorizzazione ottenute dal MVPD dell’utente è quello di decorare l’interfaccia utente (ad esempio, simboli bloccati/sbloccati accanto al contenuto protetto).- Trigger:
preauthorizedResources()
callback - Punto di esecuzione: Dopo il completamento del flusso di autenticazione
- Trigger:
-
Se l’autenticazione ha esito positivo, procedi al flusso di autorizzazione.
D. Flusso di autenticazione con Apple SSO su iOS authn_flow_with_applesso
-
Chiamata
getAuthentication()
per avviare il flusso di autenticazione o per ottenere la conferma che l’utente è già autenticato.
Trigger:- Il presentTvProviderDialog() callback, se l'utente non è autenticato e il richiedente corrente dispone almeno di un MVPD che supporta l'SSO. Se nessun MVPD supporta l'SSO, verrà utilizzato il flusso di autenticazione classico.
-
Dopo aver selezionato un provider, la libreria AccessEnabler otterrà un token di autenticazione con le informazioni fornite dal framework VSA di Apple.
-
Il setAuthenticationsStatus() verrà attivato il callback. A questo punto l’utente deve essere autenticato con l’SSO di Apple.
-
[Facoltativo] Chiamata
checkPreauthorizedResources(resources)
per verificare quali risorse l’utente è autorizzato a visualizzare. Ilresources
Il parametro è un array di risorse protette associate al token di autenticazione dell’utente. Un uso per le informazioni di autorizzazione ottenute dal MVPD dell’utente è quello di decorare l’interfaccia utente (ad esempio, simboli bloccati/sbloccati accanto al contenuto protetto).- Trigger:
preauthorizedResources()
callback - Punto di esecuzione: Dopo il completamento del flusso di autenticazione
- Trigger:
-
Se l’autenticazione ha esito positivo, procedi al flusso di autorizzazione.
E. Flusso di autenticazione con Apple SSO su tvOS authn_flow_with_applesso_tvOS
-
Chiamata
getAuthentication()
per avviare il flusso di autenticazione o per ottenere la conferma che l’utente è già autenticato.
Trigger:- Il
presentTvProviderDialog()
callback, se l'utente non è autenticato e il richiedente corrente dispone almeno di un MVPD che supporta l'SSO. Se nessun MVPD supporta l'SSO, verrà utilizzato il flusso di autenticazione classico.
- Il
-
Dopo che l’utente ha selezionato un provider,
status()
verrà chiamato il callback. Verrà fornito un codice di registrazione e la libreria AccessEnabler inizierà a eseguire il polling del server per un'autenticazione a seconda schermata riuscita. -
Se il codice di registrazione fornito è stato utilizzato per autenticare correttamente nella seconda schermata, il
setAuthenticatiosStatus()
verrà attivato il callback. A questo punto l’utente deve essere autenticato con l’SSO di Apple. -
[Facoltativo] Chiamata
checkPreauthorizedResources(resources)
per verificare quali risorse l’utente è autorizzato a visualizzare. Ilresources
Il parametro è un array di risorse protette associate al token di autenticazione dell’utente. Un uso per le informazioni di autorizzazione ottenute dal MVPD dell’utente è quello di decorare l’interfaccia utente (ad esempio, simboli bloccati/sbloccati accanto al contenuto protetto).-
Trigger:
preauthorizedResources()
callback -
Punto di esecuzione: Dopo il completamento del flusso di autenticazione
-
-
Se l’autenticazione ha esito positivo, procedi al flusso di autorizzazione.
F. Flusso di autorizzazione authz_flow
-
Chiamata getAuthorization() per avviare il flusso di autorizzazione.
- Dipendenza: ResourceID validi concordati con gli MVPD.
- Gli ID delle risorse devono essere gli stessi utilizzati su qualsiasi altro dispositivo o piattaforma e devono essere gli stessi in tutti gli MVPD. Per informazioni sugli ID risorsa, consulta Identificazione delle risorse protette
-
Convalida autenticazione e autorizzazione.
-
Se il getAuthorization() chiamata riuscita: l’utente dispone di token AuthN e AuthZ validi (l’utente è autenticato e autorizzato a guardare il contenuto multimediale richiesto).
-
Se getAuthorization() failed: esamina 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.) quindi visualizza un messaggio di errore appropriato.
-
-
Convalida il token multimediale breve.
Utilizza la libreria Adobe Pass Authentication Media Token Verifier per verificare il token multimediale di breve durata restituito da getAuthorization() richiamare:- 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.
-
Tornare al normale flusso dell'applicazione.
G. Visualizza flusso multimediale media_flow
-
L’utente seleziona il file multimediale da visualizzare.
-
Il supporto è protetto? L'applicazione verifica se il supporto selezionato è protetto:
-
Se il supporto selezionato è protetto, l'applicazione avvia Flusso di autorizzazione sopra.
-
Se il supporto selezionato non è protetto, riprodurlo per l'utente.
-
H. Flusso di disconnessione senza Apple SSO logout_flow_wo_AppleSSO
-
Chiamata
logout()
per disconnettere l'utente. AccessEnabler cancella tutti i valori e i token memorizzati nella cache. 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 deve essere gestita all'interno di un controller UIWebView/WKWebView o SFSafariViewController.a. Seguendo lo stesso modello del flusso di lavoro di autenticazione, il dominio AccessEnabler invia una richiesta al livello dell’applicazione dell’interfaccia utente tramite
navigateToUrl:
onavigateToUrl:useSVC:
callback, per creare un controller UIWebView/WKWebView o SFSafariViewController e istruire tale utente a caricare l'URL fornito nelurl
parametro. Questo è l'URL dell'endpoint di disconnessione sul server back-end.b. L'applicazione deve monitorare l'attività del
UIWebView/WKWebView or SFSafariViewController
e rilevare il momento in cui carica un URL personalizzato specifico, mentre passa attraverso diversi reindirizzamenti. Questo URL personalizzato specifico non è valido e non è destinato al controller per caricarlo effettivamente. Deve essere interpretato solo dall'applicazione come un segnale del completamento del flusso di logout e della sicurezza della chiusura diUIWebView/WKWebView
oSFSafariViewController
controller. Quando il controller carica questo URL personalizzato specifico, l'applicazione deve chiudereUIWebView/WKWebView or SFSafariViewController
e chiama AccessEnablerhandleExternalURL:url
metodo API. Nel caso in cuiSFSafariViewController
è richiesto l'utilizzo del controller. L'URL personalizzato specifico è definito daapplication's custom scheme
(ad esempio,adbe.u-XFXJeTSDuJiIQs0HVRAg://adobe.com
), altrimenti questo URL personalizzato specifico è definito daADOBEPASS_REDIRECT_URL
costante (ovveroadobepass://ios.app
).note note NOTE Il flusso di disconnessione è diverso dal flusso di autenticazione in quanto l'utente non è tenuto a interagire in alcun modo con UIWebView/WKWebView o SFSafariViewController. Il livello dell’applicazione UI utilizza un UIWebView/WKWebView o SFSafariViewController per assicurarsi che tutti i reindirizzamenti siano seguiti. Pertanto, è possibile (e consigliato) rendere il controller invisibile (cioè nascosto) durante il processo di logout.