SDK TypeScript Frame.io — Guida all’autenticazione
SDK TypeScript Frame.io — Guida all’autenticazione
Questa guida spiega come eseguire l’autenticazione con l’API Frame.io usando l’SDK TypeScript Frame.io (frameio). L’API V4 Frame.io usa Adobe Identity Management Service (IMS), la piattaforma di identità OAuth 2.0 di Adobe. Questo è un riferimento autonomo per sviluppatori TypeScript/JavaScript. Tutti gli esempi di codice e i flussi seguenti sono solo per il pacchetto frameio.
Tipi di autenticazione nell’SDK TypeScript
L’SDK TypeScript supporta quattro classi di autenticazione OAuth, oltre all’uso diretto di token:
Utenti dell’account di servizio
Quando usi l’autenticazione server-to-server, l’applicazione agisce come utente dell’account di servizio, un tipo di account distinto che può eseguire azioni per conto del servizio. Questi sono visibili agli altri utenti in Frame.io: quando un account di servizio esegue un’azione, il nome viene visualizzato nell’interfaccia utente. Puoi concedere e revocare l’accesso dell’account di servizio tramite Adobe Admin Console e Developer Console. I nomi degli account di servizio vengono gestiti dall’interfaccia utente Frame.io. Per impostazione predefinita, la prima connessione S2S viene denominata Service Account User, la seconda Service Account User 2 e così via.
Consulta Automatizza la configurazione usando il supporto server-to-server di Frame.io per ulteriori informazioni.
Avvio rapido
Prerequisiti
- Credenziali da Adobe Developer Console:
- ID client: richiesto per tutti i flussi OAuth - Secret client: richiesto per i flussi server-to-server e web app - URI di reindirizzamento: richiesto per i flussi web app, SPA e app nativa; deve essere registrato nel progetto Adobe
- Installa l’SDK:
Scelta di un metodo
- Non è coinvolto nessun utente? Usa server-to-server (
ServerToServerAuth). - È coinvolto un utente e puoi archiviare un secret? Usa web app (
WebAppAuth). - È coinvolto un utente, ma non puoi archiviare un secret? Utilizza SPA (
SPAAuth) per le app basate su browser, o App nativa (NativeAppAuth) per le app desktop/mobile.
Token di accesso
Se hai già un token di accesso (da un altro sistema OAuth o da uno scambio precedente, ad esempio tramite il nostro Explorer di API) puoi passarlo direttamente:
Questo è l’approccio più semplice, ma il token scadrà e l’SDK non lo aggiornerà automaticamente.
Token sviluppatore legacy
Per gli account migrati a V4 e non ancora amministrati tramite Adobe Admin Console, puoi continuare a utilizzare i token sviluppatore legacy dal sito per sviluppatori di Frame.io. Devi includere l’intestazione x-frameio-legacy-token-auth e impostarla su true:
I token sviluppatore legacy non scadono, ma sono un meccanismo di transizione. Per le nuove integrazioni e i carichi di lavoro di produzione, consigliamo di utilizzare uno dei flussi OAuth 2.0 indicati di seguito. Consulta la guida alla migrazione per i dettagli.
Server-to-server (credenziali client)
Utilizza questo metodo per servizi e script backend che necessitano dell’accesso a Frame.io senza interazioni da parte dell’utente. Questo flusso è disponibile solo per gli account Frame.io V4 amministrati tramite Adobe Admin Console. La tua applicazione si autentica come utente dell’account di servizio senza intervento umano.
Ecco fatto. auth.getToken() è una funzione asincrona che l’SDK richiama ad ogni richiesta. Se il token corrente è ancora valido, restituisce immediatamente il risultato. Se sta per scadere, ne recupera prima uno nuovo, in modo completamente trasparente.
Come funziona
Le tue credenziali client (ID client + secret) non scadono mai. Basta ruotarle manualmente per garantire l’integrità della sicurezza. S2S offre un accesso API permanente e ininterrotto senza alcun intervento manuale.
Dietro le quinte:
- Alla prima chiamata API,
getToken()richiede un nuovo token di accesso da Adobe IMS utilizzando la concessioneclient_credentials. - Il token viene memorizzato nella cache in memoria. I singoli token di accesso scadono (in genere 24 ore), ma questo viene gestito automaticamente.
- Quando un token memorizzato nella cache si trova entro il buffer di aggiornamento (predefinito: 60 secondi prima della scadenza), l’SDK ne recupera automaticamente uno nuovo utilizzando le stesse credenziali client.
- Non sono coinvolti token di aggiornamento. Le credenziali client stesse sono il secret di lunga durata e possono sempre essere utilizzate per generare un nuovo token di accesso.
Autenticazione esplicita
Se desideri recuperare il token in modo proattivo (ad esempio, per generare rapidamente un errore in caso di credenziali errate all’avvio):
Web app (codice di autorizzazione)
Utilizza questo metodo per applicazioni lato server in cui gli utenti accedono con il proprio Adobe ID. Questo flusso richiede un client secret, che deve essere archiviato in modo sicuro sul server.
Gestisci il callback
Quando Adobe IMS reindirizza l’utente al tuo redirectUri, estrai i parametri code e state. Verifica che lo stato corrisponda a quello che hai archiviato, quindi scambia il codice con i token:
Questa operazione scambia il codice di autorizzazione con un token di accesso e un token di aggiornamento, archiviandoli entrambi internamente.
Esempio completo di Express
App a singola pagina/PKCE (codice di autorizzazione + PKCE)
Utilizza questa opzione per applicazioni basate su browser, applicazioni desktop o strumenti CLI che non possono archiviare in modo sicuro un secret del client. Questo flusso utilizza PKCE (RFC 7636) per proteggere lo scambio del codice di autorizzazione.
Il codeVerifier deve essere archiviato in modo sicuro lato client tra la richiesta di autorizzazione e lo scambio del codice. Usa sessionStorage o l’equivalente nelle app basate su browser.
App nativa (codice di autorizzazione + PKCE)
Usa questo metodo per le applicazioni desktop e mobile. Quando crei una credenziale di app nativa in Adobe Developer Console, Adobe ti assegna un URI di reindirizzamento nel formato adobe+<hash>://callback</hash>: devi registrare l’applicazione per gestire quello schema URI personalizzato a livello di sistema operativo. Sono supportati anche i reindirizzamenti loopback (http://127.0.0.1:<port>/callback</port>) per lo sviluppo locale. Il flusso è identico a SPA: usa PKCE senza secret del client.
Regole per l’URI di reindirizzamento
Adobe applica le regole per l’URI di reindirizzamento in due punti: quando registri le credenziali in Adobe Developer Console e quando il parametro redirect_uri raggiunge l’endpoint /authorize/v2. Il valore che passi a redirectUri in questo SDK deve corrispondere a uno dei pattern dell’URI di reindirizzamento che hai registrato nelle credenziali, altrimenti Adobe reinvia all’URI di reindirizzamento predefinito delle credenziali.
- Le credenziali per web app e SPA richiedono HTTPS.
- Le credenziali per app nativa usano un reindirizzamento non HTTPS, di solito l’URI
adobe+<hash>://callback</hash>mostrato in Developer Console per le credenziali.
Consulta Adobe Developer Console per i pattern esatti accettati per le tue credenziali.
L’SDK Python non include una classe di credenziali per app native, poiché Python non ha un modo standard per registrare gestori di schemi
URI personalizzati. L’SDK TypeScript supporta tutti e quattro i tipi di credenziali, inclusa l’app nativa.
Aggiornamento manuale del token
Per i flussi di web app, SPA e app nativa, l’SDK aggiorna automaticamente i token tramite getToken(). Se hai bisogno di un controllo esplicito, puoi chiamare direttamente refresh():
Questo è utile quando vuoi forzare un aggiornamento prima di un’operazione critica anziché affidarti al buffer di aggiornamento automatico.
refresh() è disponibile su WebAppAuth, SPAAuth e NativeAppAuth. Genera ConfigurationError se non è disponibile alcun token di aggiornamento (ovvero devi prima chiamare exchangeCode()). ServerToServerAuth non ha un metodo refresh(). Devi usare authenticate() per recuperare un nuovo token tramite le credenziali client.
Persistenza del token
Tutte le classi di autenticazione supportano exportTokens() e importTokens() per mantenere lo stato del token durante i riavvii. Questo è particolarmente importante per i flussi di web app, SPA e app nativa, poiché i token di accesso e di aggiornamento risiedono in memoria per impostazione predefinita. Se l’applicazione si riavvia, gli utenti dovrebbero autenticarsi nuovamente, a meno che non li rendi persistenti. Per gli scenari server-to-server, la persistenza è facoltativa (le credenziali client possono sempre generare un nuovo token), ma l’importazione di un token memorizzato in cache evita un round-trip aggiuntivo all’avvio.
Esportazione e importazione
Archivia i token esportati in modo sicuro. Contengono i token di accesso e di aggiornamento che concedono l’accesso all’API. Evita di scrivere i token
in file di testo normale in produzione.
Persistenza automatica con onTokenRefreshed
Per rendere automaticamente persistenti i token ogni volta che vengono aggiornati, usa il callback onTokenRefreshed:
Il callback riceve la stessa forma di exportTokens() e viene attivato dopo ogni aggiornamento riuscito del token.
Revoca dei token
Per disconnettere un utente e invalidare i suoi token con Adobe IMS:
Vengono inviate due richieste di revoca a Adobe IMS: una per il token di accesso e una per il token di aggiornamento, in parallelo. Lo stato del token locale viene cancellato completamente.Per i client riservati (WebAppAuth), le richieste di revoca utilizzano l’autenticazione HTTP Basic; per i client pubblici (SPAAuth, NativeAppAuth), il client_id viene inviato come parametro di query. Gli errori di revoca vengono registrati, ma non restituiti. Dopo la revoca, l’utente dovrà autenticarsi di nuovo.
Gestione degli errori
Tutti gli errori di autenticazione ereditano da FrameioAuthError, quindi puoi intercettarli in modo generale o gestire casi specifici:
Riferimento dell’errore
Gestione dei token di aggiornamento scaduti in produzione
Per i flussi di web app, SPA e app nativa, il token di aggiornamento scadrà.Quando ciò accade, getToken() genera TokenExpiredError. Devi intercettare questo errore e reindirizzare l’utente attraverso il flusso di autorizzazione.
Riferimento della configurazione
Questi parametri hanno impostazioni predefinite sensibili e raramente devono essere impostati. Se devi personalizzarne il comportamento (ad esempio puntando a un IMS temporaneo, inserendo un fetch personalizzato, regolando i timeout o configurando un logger), passa qualsiasi di questi valori come parametri opzionali durante la creazione della classe di autenticazione:
Ambienti temporanei
Punta a un’istanza Adobe IMS temporanea sostituendo imsBaseUrl. L’SDK esporta anche DEFAULT_IMS_BASE_URL (https://ims-na1.adobelogin.com) se devi fare riferimento al valore di produzione a livello programmatico.
Recupero personalizzato
Per il supporto proxy o la configurazione TLS personalizzata:
Sicurezza della contemporaneità
TypeScript SDK è sicuro per l’uso contemporaneo. Quando vengono eseguite più chiamate getToken() contemporaneamente e serve un aggiornamento, viene attivata una sola richiesta di aggiornamento. Le altre attendono la stessa promessa e ricevono lo stesso risultato. Non è richiesto alcun blocco esterno. Questa deduplicazione usa il ciclo di eventi a thread singolo di JavaScript e una promessa (promise) condivisa: se un aggiornamento è già in corso, i chiamanti contemporanei si uniscono ad esso, invece di avviare una seconda richiesta. Se revoke() viene chiamato mentre un aggiornamento è in corso, l’aggiornamento viene rifiutato con un AuthenticationError e i token rimangono cancellati: la revoca ha sempre la priorità.