Generazione dei token di accesso per le API lato server generating-access-tokens-for-server-side-apis
Alcune architetture si basano sull’esecuzione di chiamate ad Adobe Experience Manager (AEM) as a Cloud Service da un’applicazione ospitata su un server al di fuori dell’infrastruttura AEM. Ad esempio, un’app mobile chiama un server, che quindi effettua richieste API ad AEM as a Cloud Service.
Utilizza AEM as a Cloud Service Developer Console per creare un account tecnico da server a server OAuth. L’applicazione scambia l’ID client e il segreto client con un token di accesso utilizzando la sovvenzione Adobe Identity Management Services (IMS) client_credentials. Non è richiesto alcun JWT firmato, chiave privata o certificato.
developer.adobe.com/console. Crea e gestisci l’account tecnico descritto qui in AEM Developer Console.Flusso server-to-server the-server-to-server-flow
Gli utenti con un ruolo di amministratore dell’organizzazione IMS che sono anche membri del profilo di prodotto Utenti AEM o Amministratori AEM in AEM Author possono creare un account tecnico. Il segreto client viene mostrato solo all’utente che lo crea, al momento della creazione. L’utente con il ruolo di amministratore dell’ambiente AEM as a Cloud Service può visualizzare i dettagli dell’account, che non includono il segreto client.
Il flusso server-to-server prevede i seguenti passaggi:
- Crea un account tecnico da server a server OAuth e salva le relative credenziali, incluso il segreto client visualizzato al momento della creazione.
- Archivia le credenziali in modo sicuro sul server che invia le richieste ad AEM.
- Richiedi un token di accesso da IMS utilizzando l’ID client, il segreto client e gli ambiti.
- Configura il profilo di prodotto dell’account tecnico e le autorizzazioni AEM.
- Chiama l’API AEM con il token di accesso come token Bearer.
Creare un account tecnico e recuperarne le credenziali fetch-the-aem-as-a-cloud-service-credentials
-
Apri integrazioni. Apri AEM Developer Console per l’ambiente a cui accede l’applicazione, quindi seleziona Integrazioni. Selezionare Crea nuovo account tecnico.
-
Crea l’account tecnico. Nella finestra di dialogo, seleziona OAuth Server-to-Server (S2S) come Tipo di credenziali, quindi seleziona Crea.
-
Salva il segreto client. Nella finestra di dialogo Salva segreto client sono visualizzate le credenziali, incluso
technicalAccount.clientSecret. Selezionare Scarica credenziali per salvarle comeaem-s2s-credentials.jsonoppure selezionare Copia negli Appunti. Memorizzare le credenziali in un gestore dei segreti o in un’altra posizione controllata dall’accesso per l’applicazione.
Seleziona Chiudi. Nella finestra di dialogo di conferma Chiudi senza ulteriore accesso al segreto, seleziona Chiudi solo dopo aver salvato il segreto in modo sicuro. Una volta chiusa la finestra di dialogo, il segreto non può più essere visualizzato.
-
Rivedi l’account tecnico. Il nuovo account server-to-server OAuth è elencato con il relativo segreto client Attivo. L’ID segreto visualizzato nell’elenco identifica un segreto. Non è il valore segreto e non può essere utilizzato come
client_secretin una richiesta token.
Per rivedere i dettagli di un segreto in un secondo momento, aprire il menu a righe del segreto client e selezionare Visualizza. La finestra di dialogo delle credenziali mostra l’endpoint IMS, gli ambiti, l’ID client, l’e-mail dell’account tecnico, l’ID segreto e lo stato di revoca. Non mostra il valore segreto client.
Installare le credenziali del servizio AEM su un server non AEM install-the-aem-service-credentials-on-a-non-aem-server
Rendi le credenziali disponibili solo per l’applicazione lato server che chiama AEM. Utilizza un gestore segreto o un altro meccanismo di archiviazione controllato dagli accessi.
Non inserire un segreto client nel codice lato browser, nelle applicazioni mobili, nel controllo del codice sorgente o nei registri. Tratta i token di accesso anche come segreti.
Richiedere un token di accesso OAuth request-an-oauth-access-token
Invia una richiesta HTTPS POST a https://<imsEndpoint>/ims/token/v3. imsEndpoint nelle credenziali JSON è un nome host IMS. Ad esempio, ims-na1.adobelogin.com utilizza https://ims-na1.adobelogin.com/ims/token/v3. Utilizza il nome host fornito nelle credenziali, incluso il nome host dell’area di visualizzazione quando utilizzi le credenziali dell’area di visualizzazione.
Utilizza Content-Type: application/x-www-form-urlencoded e includi questi campi modulo nel corpo della richiesta:
grant_typeclient_credentialsclient_idtechnicalAccount.clientId dalle tue credenziali.client_secrettechnicalAccount.clientSecret salvato al momento della creazione del segreto.scopescopes, uniti con virgole.Codifica URL per ogni valore del modulo. Invia segreti nel corpo della richiesta, non nell’URL o nella stringa di query.
La risposta include access_token, token_type e expires_in. Utilizza access_token per chiamare AEM. Il valore expires_in è la durata del token in secondi. Utilizza tale valore anziché presupporre un tempo di scadenza fisso.
Memorizza in cache e riutilizza il token di accesso fino alla scadenza, quindi richiedi un nuovo token con le stesse credenziali client. Questa concessione non richiede uno scambio JWT o un token di aggiornamento.
Esempio di autenticazione di Node.js nodejs-authentication-example
Per un’implementazione minima da server a server OAuth, vedi l’esempio Libreria client API AEM-CS. Utilizza le API Node.js integrate e richiede Node.js 18 o versione successiva, senza dipendenze aggiuntive.
Nell’esempio sono previste le credenziali all’interno di un oggetto integration. Il file aem-s2s-credentials.json scaricato da AEM Developer Console contiene le credenziali senza questo wrapper. Racchiudi il contenuto prima di utilizzarlo con l’esempio, ad esempio con jq:
jq '{integration: .}' aem-s2s-credentials.json > downloaded_integration.json
In alternativa, modificare il file in modo che il relativo contenuto completo diventi il valore di un campo integration di primo livello. Da un checkout dell’archivio di esempio, esegui:
node oauth-s2s-cli.js downloaded_integration.json
Per uso programmatico, l’helper OAuth accetta l’oggetto racchiuso come requestAccessToken(credentials). Utilizza il nome host IMS, l’ID client, il segreto client e gli ambiti in integration.
Mantenere privato il file delle credenziali. CLI stampa un token di accesso. Non inviare il relativo output ai registri condivisi e non pubblicarlo. Il file README dell’esempio mostra anche come utilizzare il token in una richiesta API di AEM.
Chiamata dell’API AEM calling-the-aem-api
Includi il token di accesso nell’intestazione Authorization delle richieste per l’ambiente AEM as a Cloud Service, utilizzando il valore Bearer <access_token>.
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
"https://author-p<program-id>-e<environment-id>.adobeaemcloud.com/content/dam.json"
Utilizza il nome host per l’ambiente e il livello a cui accede l’applicazione. Richiama solo le risorse a cui l’account tecnico è autorizzato ad accedere.
Impostare le autorizzazioni appropriate per l’utente dell’account tecnico in AEM set-the-appropriate-permissions-for-the-technical-account-user-in-aem
- Apri Adobe Admin Console.
- Seleziona AEM as a Cloud Service in Prodotti e servizi.
- Crea un profilo di prodotto per l’integrazione oppure seleziona un profilo esistente appropriato.
- Selezionare Aggiungi utente e aggiungere l’account tecnico utilizzando
emaildalle relative credenziali. - Consenti la propagazione delle modifiche al profilo di prodotto. Effettua una chiamata API ad AEM con un token di accesso generato per l’account tecnico. Il profilo di prodotto viene sincronizzato come gruppo AEM, con l’account tecnico come membro.
- Nell’istanza di authoring di AEM appropriata, apri Strumenti > Sicurezza > Gruppi. Trova il gruppo di profili di prodotto e verifica che l’account tecnico sia visualizzato in Membri. Puoi anche controllare l’appartenenza al gruppo in Strumenti > Sicurezza > Utenti.
- Apri Impostazioni > Sicurezza > Autorizzazioni. Seleziona il gruppo corrispondente al profilo di prodotto e configura le autorizzazioni richieste dalle chiamate API.
- Verifica le chiamate API richieste per ogni livello a cui accede l’applicazione. Concedi solo le autorizzazioni necessarie per l’integrazione.
Per ulteriori informazioni su utenti e gruppi IMS e AEM, consulta Supporto IMS.
Flusso per sviluppatori developer-flow
Per i test locali, gli sviluppatori possono generare un token di accesso allo sviluppo direttamente in AEM Developer Console senza creare un account tecnico OAuth Server-to-Server. Il token può essere utilizzato per chiamare gli ambienti AEM a cui lo sviluppatore può accedere. Per le applicazioni lato server automatizzate, utilizza le credenziali da server a server di OAuth anziché un token di sviluppo locale.
Consulta le Linee guida per sviluppatori per informazioni sulle autorizzazioni necessarie per utilizzare AEM Developer Console.
Generazione del token di accesso generating-the-access-token
- In AEM Developer Console, vai a Integrazioni > Token locale.
- Selezionare Ottieni token di sviluppo locale.
Chiamare l’applicazione AEM con un token di accesso call-the-aem-application-with-an-access-token
Utilizzare il token di accesso allo sviluppo locale come token Bearer nell’intestazione Authorization, come descritto in Chiamata dell’API AEM.
Per un progetto AEM in esecuzione sul computer locale, non è necessario un token di accesso IMS.
Ruota segreti client refresh-credentials
Le credenziali da server a server OAuth non richiedono il rinnovo annuale del certificato. Ruota periodicamente i segreti del client e ogni volta che viene esposto un segreto. Crea un nuovo segreto, passa alle applicazioni e solo dopo revoca il vecchio segreto.
La creazione e la revoca dei segreti richiede i valori segreti salvati. AEM Developer Console utilizza un segreto immesso solo per autenticare la richiesta con IMS e non la memorizza.
-
Crea un nuovo segreto. In Integrazioni, apri il menu azioni accanto al nome dell’account server-to-server OAuth e seleziona Crea nuovo segreto. Questo è il menu a livello di account, non il menu a righe del segreto client.
-
Autentica con un segreto attivo. Nella finestra di dialogo Crea nuovo segreto, immetti il valore di un segreto client attivo per l’account, quindi seleziona Crea nuovo segreto.
-
Salva il nuovo segreto. La finestra di dialogo mostra il nuovo segreto una volta, con i relativi
clientId,secretId,clientSecretescopes. Scaricala o copiala, archiviala in modo sicuro e chiudi la finestra di dialogo. Conferma di volerla chiudere solo dopo aver salvato il segreto in modo sicuro. Una volta chiusa la finestra di dialogo, il nuovo segreto non potrà più essere visualizzato.
-
Passa al nuovo segreto. Sostituire il valore
technicalAccount.clientSecretnelle credenziali utilizzate da ogni istanza e distribuzione dell’applicazione con il nuovoclientSecret. Gli altri valori delle credenziali non vengono modificati.Richiedi un nuovo token di accesso con il nuovo segreto e verifica le chiamate API di AEM richieste prima di procedere. Entrambi i segreti rimangono attivi durante il passaggio dell’applicazione. Il riutilizzo di un token di accesso rilasciato in precedenza non verifica il nuovo segreto.
-
Selezionare il segreto precedente per la revoca. Dopo che tutte le applicazioni hanno utilizzato il nuovo segreto, aprire il menu a righe del vecchio segreto e selezionare Revoca. Controlla l’ID segreto per assicurarti di aver selezionato il vecchio segreto.
-
Conferma revoca. Nella finestra di dialogo Revoca segreto client, controlla l’ID segreto client da revocare, immetti il valore di tale segreto e seleziona Revoca. Se non disponi più del valore segreto, contatta l’assistenza Adobe. Una volta che la revoca si propaga tramite IMS, le applicazioni non possono utilizzare tale segreto per richiedere nuovi token. I token di accesso esistenti potrebbero rimanere validi.
-
Verifica il risultato. Il vecchio segreto è elencato come Revocato, mentre il nuovo segreto rimane Attivo.
Dopo che la revoca è entrata in vigore, verifica che il vecchio segreto non possa emettere nuovi token di accesso e che il nuovo segreto possa. Il solo controllo dello stato visualizzato non verifica la propagazione IMS.
-
Rimuovere il segreto revocato se non è più necessario. Per rimuovere il segreto revocato dall’elenco, aprire il relativo menu di riga, selezionare Elimina e confermare.
Revoca credenziali credentials-revocation
Revoca disabilita un segreto selezionato per le nuove richieste di token. Richiede il valore del segreto da revocare. La propagazione della revoca può richiedere del tempo. Non presumere che la revoca di un segreto invalidi immediatamente i token di accesso già rilasciati.
Elimina su un segreto revocato rimuove i metadati, quali l’ID segreto e lo stato di revoca, da AEM Developer Console. Non esegue una revoca IMS separata e non è disponibile per i segreti attivi.
Eliminare un account tecnico delete-a-technical-account
L’eliminazione di un account tecnico comporta la revoca immediata dell’account e di tutti i segreti client in IMS. Non vengono rilasciati nuovi token di accesso per alcuna credenziale nell’account e le integrazioni che li utilizzano non funzionano più alla scadenza dei token correnti. Per ripristinare l’accesso, devi creare un nuovo account tecnico, aggiornare le applicazioni con le relative credenziali e assegnare nuovamente le autorizzazioni necessarie in AEM.
L’eliminazione dell’account non può essere annullata. Conferma solo dopo aver verificato quali applicazioni dipendono dall’account e non utilizzarlo come passaggio di rotazione individuale-segreto.
-
In Integrazioni, apri il menu Azioni accanto al nome dell’account tecnico e seleziona Elimina.
-
Rivedi la finestra di dialogo Elimina account tecnico, quindi seleziona Elimina.
Migrare un’integrazione basata su JWT migrate-a-jwt-based-integration
- Crea un nuovo account tecnico server-to-server OAuth in AEM Developer Console.
- Assegna il nuovo account tecnico ai profili di prodotto richiesti e configurane le autorizzazioni AEM.
- Aggiornare l’applicazione lato server per richiedere i token utilizzando
client_credentialsanziché firmare e scambiare un JWT. - Verifica la generazione del nuovo token e le chiamate API richieste utilizzando il nuovo account.
- Dopo che tutte le istanze dell’applicazione utilizzano OAuth Server-to-Server, ritira le vecchie credenziali JWT ed elimina il vecchio account tecnico.
Per le operazioni relative ai certificati e alle chiavi private sul vecchio account, consulta la Guida legacy JWT. Non rimuovere il vecchio account prima della verifica dell’integrazione di sostituzione.