(Legacy) Android SDK con registrazione client dinamica android-sdk-with-dynamic-client-registration
Introduzione Intro
Android AccessEnabler SDK per Android è stato modificato per abilitare l’autenticazione senza l’utilizzo dei cookie di sessione. Poiché sempre più browser limitano l’accesso ai cookie, è necessario utilizzare un altro metodo per consentire l’autenticazione.
Per Android, l’utilizzo delle schede personalizzate di Chrome limita l’accesso ai cookie di altre applicazioni.
Android SDK 3.0.0 introduce:
- dynamic client registration sostituisce l'attuale meccanismo di registrazione dell'app basato sull'autenticazione con ID richiedente firmato e cookie di sessione
- Schede personalizzate Chrome per i flussi di autenticazione
Registrazione client dinamici DCR
Android SDK v3.0+ utilizzerà la procedura di registrazione del client dinamico definita in Panoramica registrazione client dinamico.
Demo sulle funzioni Demo
Guarda questo webinar che fornisce più contesto della funzione e contiene una demo su come gestire le istruzioni software utilizzando il dashboard TVE e come testare quelle generate utilizzando un'applicazione demo fornita da Adobe come parte di Android SDK.
Modifiche API API
Factory.getInstance
Descrizione: crea istanze dell'oggetto Access Enabler. Deve essere presente una singola istanza di Access Enabler per ogni istanza dell'applicazione.
statico pubblico di AccessEnabler genera AccessEnablerException
Disponibilità: v3.0+
Parametri:
- appContext: contesto dell'applicazione Android
- softwareStatement: valore ottenuto da TVE Dashboard o null se "software_statement" è impostato in strings.xml
- redirectUrl : URL univoco, uno dei domini in ordine inverso aggiunto in modo esplicito nel dashboard TVE oppure null se "redirect_uri" è impostato in stringhe.xml
Nota: un softwareStatement o redirectUrl non valido impedirà all'applicazione di inizializzare AccessEnabler o di registrare l'applicazione per l'autenticazione e l'autorizzazione di Adobe Pass
Nota: il parametro redirectUrl o redirect_uri in strings.xml deve essere il valore del dominio aggiunto nel dashboard TVE per l’applicazione in ordine inverso ( per esempio, per il dominio "adobe.com" aggiunto nel dashboard TVE, il redirectUrl deve essere "com.adobe".
setRequestor
Descrizione: stabilisce l'identità del canale. A ciascun canale viene assegnato un ID univoco al momento della registrazione ad Adobe per il sistema di autenticazione di Adobe Pass. Quando si tratta di token SSO e remoti, lo stato di autenticazione può cambiare quando l'applicazione è in background, setRequestor può essere richiamato nuovamente quando l'applicazione viene portata in primo piano per sincronizzarsi con lo stato del sistema (recuperare un token remoto se SSO è abilitato o eliminare il token locale se nel frattempo si è verificato un logout).
La risposta del server contiene un elenco di MVPD insieme ad alcune informazioni di configurazione associate all’identità del canale. La risposta del server viene utilizzata internamente dal codice di Access Enabler. Solo lo stato dell’operazione (ovvero SUCCESS/FAIL) viene presentato all’applicazione tramite il callback setRequestorComplete().
Se il parametro urls non viene utilizzato, la chiamata di rete risultante verrà indirizzata all'URL del provider di servizi predefinito: l'ambiente Adobe Release/Production.
Se viene fornito un valore per il parametro urls, la chiamata di rete risultante eseguirà il targeting di tutti gli URL forniti nel parametro urls. Tutte le richieste di configurazione vengono attivate contemporaneamente in thread separati. Il primo responder ha la precedenza quando si compila l’elenco degli MVPD. Per ogni MVPD nell'elenco, Access Enabler ricorda l'URL del provider di servizi associato. Tutte le richieste di adesione successive vengono indirizzate all’URL associato al provider di servizi che è stato associato al MVPD di destinazione durante la fase di configurazione.
public void setRequestor(String requestorId)Disponibilità: v3.0+
public void setRequestor(String requestorId, ArrayList<String> urls)Disponibilità: v3.0+
Parametri:
- requestorID: ID univoco associato al canale. Passa l’ID univoco assegnato da Adobe al sito alla prima registrazione al servizio di autenticazione di Adobe Pass.
- urls: parametro facoltativo; per impostazione predefinita, viene utilizzato il provider di servizi Adobe http://sp.auth.adobe.com/. Questo array consente di specificare gli endpoint per i servizi di autenticazione e autorizzazione forniti da Adobe (a scopo di debug possono essere utilizzate istanze diverse). È possibile utilizzare questa opzione per specificare più istanze del provider di servizi di autenticazione di Adobe Pass. In questo caso, l’elenco MVPD è composto dagli endpoint di tutti i provider di servizi. Ogni MVPD è associato al provider di servizi più veloce, ovvero il provider che ha risposto per primo e che supporta tale MVPD.
Obsoleto:
- signedRequestorID: copia dell'ID richiedente con firma digitale nella chiave privata. .
Callback attivati: setRequestorComplete()
logout
Descrizione: Utilizzare questo metodo per avviare il flusso di disconnessione. La disconnessione è il risultato di una serie di operazioni di reindirizzamento HTTP dovute al fatto che l’utente deve essere disconnesso sia dai server di autenticazione di Adobe Pass che dai server di MVPD. Di conseguenza, questo flusso aprirà una finestra ChromeCustomTab per eseguire la disconnessione.
Disponibilità: v3.0+
Parametri: Nessuno
Callback attivati: setAuthenticationStatus()
Flusso di implementazione del programmatore Progr
1. Registra applicazione
a. Ottenere il software_statement e il reindirizzamento_uri da Adobe Pass ( Dashboard TVE )
b. Esistono due opzioni per trasmettere questi valori ad Adobe Pass SDK:
In strings.xml aggiungi:
<string name="software_statement">[softwarestatement value]</string>
<string name="redirect_uri">application_url.com</string>
Chiama AccessEnabler.getInstance(appContext,softwareStatement,
redirectUrl)
2. Configurare l’applicazione
a. setRequestor(requestor_id)
SDK eseguirà le seguenti operazioni:
-
registra applicazione: utilizzando software_statement, SDK otterrà un client_id, client_secret, client_id_issued_at, redirect_uris, grant_types. Queste informazioni verranno archiviate nell'archivio interno dell'applicazione.
-
ottieni un accesso_token utilizzando client_id, client_secret e grant_type="client_credentials" . Questo accesso_token verrà utilizzato in ogni chiamata effettuata da SDK ai server Adobe Pass
Risposte di errore token:
- nel caso in cui un MVPD richieda l’autenticazione passiva, si aprirà una scheda personalizzata di Chrome per l’esecuzione passiva con tale MVPD e si chiuderà al termine
b. checkAuthentication()
- true : vai a Autorizzazione
- false : vai a Seleziona MVPD
c. getAuthentication: SDK includerà access_token nei parametri di chiamata
- mvpd memorizzato: vai a setSelectedProvider(mvpd_id)
- mvpd non selezionato: displayProviderDialog
- mvpd selezionato: vai a setSelectedProvider(mvpd_id)
d. setSelectedProvider
- L'URL di autenticazione mvpd_id è caricato in ChromeCustomTabs
- accesso riuscito : delegate.setAuthenticationStatus ( SUCCESS )
- accesso annullato: reimpostare la selezione di MVPD
- Lo schema URL viene impostato come "adobepass://redirect_uri" da acquisire al termine dell’autenticazione
e. get/checkAuthorization: SDK includerà access_token nell'intestazione come Authorization: Bearer access_token
- se l’autorizzazione viene rilasciata, viene effettuata una chiamata per ottenere
token multimediale
f. logout:
- SDK eliminerà il token valido per il richiedente corrente (le autenticazioni ottenute da altre applicazioni e non tramite SSO rimarranno valide)
- SDK aprirà le schede personalizzate di Chrome per raggiungere l’endpoint mvpd_id logout. Al termine, le schede personalizzate Chrome verranno chiuse
- Lo schema URL viene impostato come "adobepass://logout" per acquisire il momento in cui viene completato il logout
- la disconnessione attiverà sendTrackingData(new Event(EVENT_LOGOUT,USER_NOT_AUTHENTICATED_ERROR) e un callback : setAuthenticationStatus(0,"Logout")
Nota: poiché ogni chiamata richiede un access_token, possibili codici di errore di seguito sono gestiti in SDK.