SSO di Amazon FireOS utilizzando il manuale API senza client amazon-fireos-sso-using-clientless-api-cookbook
Introduzione Introduction
Questo documento fornisce istruzioni per implementare la versione SSO di Amazon del flusso di autenticazione di Adobe Pass utilizzando l’API senza client. La prima parte di questo documento si concentra sulla specificità della versione Amazon dell’architettura, per i molti partner che già conoscono e hanno esperienza con la sua implementazione.
La seconda parte del documento illustra i passaggi principali per implementare l’API senza client di Adobe Pass Authentication.
Per un'ampia panoramica tecnica sul funzionamento della soluzione senza client, vedi Panoramica API REST. L’Adobe è il contatto preferito per il supporto relativo all’architettura generale e alle prime implementazioni.
SSO senza client di Amazon AMZ-Clientless-SSO
Architettura di alto livello High-Level-Arch
L’implementazione SSO senza client di Amazon è semplice e per lo più identica alle normali API senza client di autenticazione di Adobe Primetime.
Dovrai utilizzare l’SDK di Amazon per recuperare un payload personalizzato e utilizzarlo quando richiami le API Adobe clientless.
Se il payload viene riconosciuto e corrisponde a una sessione autenticata, le API senza client torneranno immediatamente con il token della sessione.
Come creare l’applicazione per utilizzare l’SDK di Amazon Build-entries
-
Scarica e copia l'ultimo Amazon Stub SDK in una cartella /SSOEnabler parallela alla directory dell'app
-
Aggiorna i file manifest/gradle per utilizzare la libreria:
Aggiungi la seguente riga al file Manifest:
code language-java <uses-library android:name="com.amazon.ottssotokenlib" android:required="false"/\>
Voci del file Gradle:
In archivi:
code language-java flatDir { dirs '../SSOEnabler' }
In dipendenze, aggiungi:
code language-java provided fileTree(include: \['ottSSOTokenStub.jar'\], dir: '../SSOEnabler')
-
Gestione dell’assenza dell’app ausiliaria Amazon:
Anche se è improbabile che, nel caso in cui il dispositivo ausiliario non sia presente nel dispositivo Amazon in esecuzione nell'applicazione, venga rilevata un'eccezione ClassNotFoundException in fase di esecuzione nella classe seguente:
com.amazon.ottssotokenlib.SSOEnabler
.In questo caso, tutto ciò che devi fare è saltare il passaggio di payload e tornare al normale flusso PrimeTime. SSO non verrà abilitato, ma il flusso di autenticazione regolare si verificherà normalmente.
Ottenere il payload SSO di Amazon con l’SDK di Amazon UseAmazonSSO
Durante l'inizializzazione dell'applicazione, ottenere un'istanza di SSOEnabler. In base all’architettura dell’applicazione, è necessario scegliere tra un’implementazione sincrona o asincrona.
Se per qualsiasi motivo le chiamate API non restituiscono un payload, utilizza il flusso non SSO regolare e contatta il tuo Amazon e i partner Adobe per effettuare un’indagine.
API asincrona
-
Ottieni istanza di SSO Enabler:
code language-java ssoEnabler = SSOEnabler.getInstance(context); SSOEnablerCallback ssoEnablerCallback = new SSOEnablerCallbackImpl(); ssoEnabler.setSSOTokenCallback(ssoEnablerCallback);
-
Impostare il callback
code language-java public static abstract class SSOEnablerCallback { public abstract void getSSOTokenSuccess(Bundle result); public abstract void getSSOTokenFailure(Bundle result); }
-
Il bundle di risposta di successo conterrà:
- Token SSO come stringa con chiave "SSOToken"
-
Il bundle di risposta degli errori conterrà:
- codice di errore come int con chiave "ErrorCode"
- descrizione dell’errore come stringa con chiave "ErrorDescription"
-
-
Ottieni token SSO
code language-java Bundle getSSOTokenAsync(Void);
-
Questa API fornirà la risposta tramite callback impostato durante l’inizializzazione.
Ex. chiama utilizzando l’istanza singleton creata durante l’inizializzazione:
code language-java ssoEnabler.getSSOTokenAsync().
API sincrone
-
Ottieni l’istanza di SSO Enabler e imposta il callback
code language-java ssoEnabler = SSOEnabler.getInstance(context);</span>
-
Ottieni token SSO
code language-java Bundle getSSOTokenSync(Void);
- Questa API blocca il thread chiamante e risponde con il bundle dei risultati. Poiché si tratta di una chiamata sincrona, non utilizzarla nel thread principale.
code language-java void setSSOTokenTimeout(long);
- Valore in millisecondi. se questa opzione è impostata, sovrascrivi il valore di timeout predefinito di 1 minuto per l’API di sincronizzazione.
Aggiornamento API di Adobe Pass Clientless per utilizzare la registrazione client dinamica clientlessdcr
Se questa è la tua prima implementazione, consulta la Panoramica tecnica senza client e contatta l'Adobe nel caso tu abbia bisogno di supporto.
L’API Adobe Clientless richiede che le applicazioni utilizzino la registrazione client dinamica per effettuare chiamate ai server Adobe.
-
Per utilizzare Registrazione client dinamica nell'applicazione, seguire le istruzioni in Gestione registrazione client dinamica per creare un'applicazione registrata e scaricare un'istruzione software.
-
Per implementare l'API Dynamic Client Registration per eseguire le richieste di autenticazione e autorizzazione ai server Adobe Pass, seguire le istruzioni contenute in Flusso di registrazione client dinamico.
Aggiornamento API Adobe Pass Clientless per l’utilizzo di Amazon SSO clientlesssso
Il payload SSO di Amazon ottenuto dall’SDK di Amazon deve essere presente nelle richieste effettuate agli endpoint di autenticazione di Adobe Pass:
/adobe-services/*
/reggie/*
/api/*
Tutti gli endpoint di autenticazione di Adobe Pass supportano i seguenti metodi per ricevere l’identificatore con ambito dispositivo o con ambito piattaforma (presente nel payload SSO SSO di Amazon):
- Come intestazione : "Adobe-Subject-Token"
- Come parametro di query : "ast"
- Come parametro post : "ast"
Esempi:
Invio come intestazione personalizzata
GET /adobe-services/config/requestor HTTP/1.1 Host: sp-preprod.auth.adobe.com
Adobe-Subject-Token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJyb2t1IiwiaWF0IjoxNTExMzY4ODAyLCJleHAiOjE1NDI5MDQ4MDIsImF1ZCI6ImFkb2JlIiwic3ViIjoiNWZjYzMwODctYWJmZi00OGU4LWJhZTgtODQzODViZTFkMzQwIiwiZGlkIjoiY2FmZjQ1ZDAtM2NhMy00MDg3LWI2MjMtNjFkZjNhMmNlOWM4In0.JlBFhNhNCJCDXLwBjy5tt3PtPcqbMKEIGZ6sr2NA
Invio come parametro di query
GET /adobe-services/config/requestor?ast=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJyb2t1IiwiaWF0IjoxNTExMzY4ODAyLCJleHAiOjE1NDI5MDQ4MDIsImF1ZCI6ImFkb2JlIiwic3ViIjoiNWZjYzMwODctYWJmZi00OGU4LWJhZTgtODQzODViZTFkMzQwIiwiZGlkIjoiY2FmZjQ1ZDAtM2NhMy00MDg3LWI2MjMtNjFkZjNhMmNlOWM4In0.JlBFhNhNCJCDXLwBjy5tt3PtPcqbMKEIGZ6sr2NA
HTTP/1.1
Host: sp.auth.adobe.com
Invio come parametro post
POST /adobe-services/config/requestor?ast=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJyb2t1IiwiaWF0IjoxNTExMzY4ODAyLCJleHAiOjE1NDI5MDQ4MDIsImF1ZCI6ImFkb2JlIiwic3ViIjoiNWZjYzMwODctYWJmZi00OGU4LWJhZTgtODQzODViZTFkMzQwIiwiZGlkIjoiY2FmZjQ1ZDAtM2NhMy00MDg3LWI2MjMtNjFkZjNhMmNlOWM4In0.Jl\_BFhN\_h\_NCJCDXLwBjy5tt3PtPcqbMKEIGZ6sr2NA
HTTP/1.1
Host: sp.auth.adobe.com Content-Type: multipart/form-data;
boundary=---- WebKitFormBoundary7MA4YWxkTrZu0gW