Credenziali del servizio

Le integrazioni con Adobe Experience Manager (AEM) as a Cloud Service devono essere in grado di eseguire l’autenticazione al servizio AEM in modo sicuro. La console per sviluppatori AEM consente di accedere alle credenziali del servizio, utilizzate per facilitare l’interazione programmatica tra applicazioni, sistemi e servizi esterni e i servizi di creazione o pubblicazione dell’AEM tramite HTTP.

L’AEM si integra con altri prodotti Adobi utilizzando OAuth S2S gestita tramite la console Adobe Developer. Per le integrazioni personalizzate con gli account di servizio, le credenziali JWT vengono utilizzate e gestite nella console per sviluppatori AEM.

Le credenziali del servizio potrebbero essere simili Token di accesso per lo sviluppo locale ma sono diversi in alcuni modi chiave:

  • Le credenziali del servizio sono associate agli account tecnici. Per un account tecnico possono essere attive più credenziali di servizio.
  • Le credenziali del servizio sono non token di accesso, ma sono credenziali utilizzate per ottenere token di accesso.
  • Le credenziali del servizio sono più permanenti (il loro certificato scade ogni 365 giorni) e non cambiano se non revocate, mentre i token di accesso per lo sviluppo locale scadono ogni giorno.
  • Le credenziali di servizio per un ambiente as a Cloud Service AEM vengono mappate a un singolo utente di account tecnico AEM, mentre i token di accesso per lo sviluppo locale vengono autenticati come utente AEM che ha generato il token di accesso.
  • Un ambiente AEM as a Cloud Service può avere fino a dieci account tecnici, ciascuno con le proprie credenziali di servizio, ciascuno con mappatura per utente AEM account tecnico discreto.

Sia le credenziali del servizio che i token di accesso generati e i token di accesso per lo sviluppo locale devono essere tenuti segreti. Poiché tutti e tre possono essere utilizzati per ottenere, l'accesso al rispettivo ambiente as a Cloud Service AEM.

Genera credenziali servizio

La generazione delle credenziali del servizio è suddivisa in due passaggi:

  1. Creazione di un account tecnico una tantum da parte di un amministratore dell’organizzazione Adobe IMS
  2. Download e utilizzo del codice JSON per le credenziali del servizio dell’account tecnico

Creare un account tecnico

A differenza dei token di accesso per lo sviluppo locale, le credenziali del servizio richiedono la creazione di un account tecnico da parte di un amministratore IMS dell’organizzazione di Adobi prima che sia possibile scaricarle. Devono essere creati conti tecnici discreti per ogni cliente che richiede un accesso programmatico all’AEM.

Creare un account tecnico

Gli account tecnici vengono creati una volta, tuttavia le chiavi private utilizzate per gestire le credenziali del servizio associate all’account tecnico possono essere gestite nel tempo. Ad esempio, è necessario generare nuove credenziali chiave privata/servizio prima della scadenza della chiave privata corrente, per consentire a un utente di accedere ininterrottamente alle credenziali del servizio.

  1. Assicurati di aver effettuato l’accesso come:

    • Amministratore di sistema dell’organizzazione Adobe IMS
    • Membro del Amministratori AEM Profilo prodotto IMS su Autore AEM
  2. Accedi a Adobe Cloud Manager

  3. Apri il programma contenente l’ambiente AEM as a Cloud Service per integrare configurare le credenziali del servizio per

  4. Tocca i puntini di sospensione accanto all’ambiente in Ambienti e seleziona Console per sviluppatori

  5. Tocca in Integrazioni scheda

  6. Tocca il Account tecnici scheda

  7. Tocca Crea nuovo account tecnico pulsante

  8. Le credenziali di servizio dell’account tecnico vengono inizializzate e visualizzate come JSON

Console per sviluppatori AEM - Integrazioni - Ottieni credenziali del servizio

Una volta inizializzate le credenziali del servizio dell’ambiente AEM as Cloud Service, possono essere scaricate da altri sviluppatori AEM della tua organizzazione Adobe IMS.

Scarica credenziali servizio

Scarica credenziali servizio

Il download delle credenziali del servizio segue la stessa procedura dell'inizializzazione.

  1. Assicurati di aver effettuato l’accesso come:

    • Amministratore dell’organizzazione Adobe IMS
    • Membro del Amministratori AEM Profilo prodotto IMS su Autore AEM
  2. Accedi a Adobe Cloud Manager

  3. Apri il Programma contenente l’ambiente as a Cloud Service AEM da integrare con

  4. Tocca i puntini di sospensione accanto all’ambiente in Ambienti e seleziona Console per sviluppatori

  5. Tocca in Integrazioni scheda

  6. Tocca il Account tecnici scheda

  7. Espandi Account tecnico da utilizzare

  8. Espandi Chiave privata le cui credenziali del servizio verranno scaricate e verifica che lo stato sia Attivo

  9. Tocca il > Visualizza associato al Chiave privata, che visualizza il codice JSON per le credenziali del servizio

  10. Tocca il pulsante Scarica nell’angolo in alto a sinistra per scaricare il file JSON contenente il valore delle credenziali del servizio e salvare il file in una posizione sicura

Installare le credenziali del servizio

Le credenziali del servizio forniscono i dettagli necessari per generare un JWT, che viene scambiato con un token di accesso utilizzato per l’autenticazione con AEM as a Cloud Service. Le credenziali del servizio devono essere archiviate in una posizione sicura accessibile dalle applicazioni, dai sistemi o dai servizi esterni che le utilizzano per accedere all'AEM. La modalità e la posizione di gestione delle credenziali del servizio sono univoche per cliente.

Per semplicità, questo tutorial trasmette le credenziali del servizio in tramite la riga di comando. Tuttavia, rivolgiti al tuo team di sicurezza IT per scoprire come memorizzare e accedere a queste credenziali in conformità alle linee guida di sicurezza della tua organizzazione.

  1. Copia il ha scaricato il codice JSON per le credenziali del servizio in un file denominato service_token.json nella directory principale del progetto
    • Ricorda, non eseguire mai il commit eventuali credenziali a Git!

Usa credenziali servizio

Le credenziali del servizio, un oggetto JSON completo, non corrispondono al JWT né al token di accesso. Al contrario, le credenziali del servizio (che contengono una chiave privata) vengono utilizzate per generare un JWT, che viene scambiato con le API Adobe IMS per un token di accesso.

Credenziali servizio - Applicazione esterna

  1. Scaricare le credenziali del servizio da AEM Developer Console in un percorso sicuro
  2. L’applicazione esterna deve interagire a livello di programmazione con l’ambiente as a Cloud Service AEM
  3. L'applicazione esterna legge le credenziali del servizio da un percorso sicuro
  4. L’applicazione esterna utilizza le informazioni contenute nelle credenziali del servizio per creare un token JWT
  5. Il token JWT viene inviato ad Adobe IMS per scambiarlo con un token di accesso
  6. Adobe IMS restituisce un token di accesso che può essere utilizzato per accedere a AEM as a Cloud Service
    • I token di accesso non possono modificare un’ora di scadenza.
  7. L’applicazione esterna effettua richieste HTTP all’AEM as a Cloud Service, aggiungendo il token di accesso come token Bearer all’intestazione Authorization delle richieste HTTP
  8. AEM as a Cloud Service riceve la richiesta HTTP, la autentica, esegue il lavoro richiesto dalla richiesta HTTP e restituisce una risposta HTTP all’applicazione esterna.

Aggiornamenti dell’applicazione esterna

Per accedere a AEM as a Cloud Service utilizzando le credenziali del servizio, l’applicazione esterna deve essere aggiornata in tre modi:

  1. Leggi nelle credenziali del servizio
  • Per semplicità, le credenziali del servizio vengono lette dal file JSON scaricato. Tuttavia, in scenari di utilizzo reale, le credenziali del servizio devono essere memorizzate in modo sicuro in conformità alle linee guida sulla sicurezza della tua organizzazione
  1. Generare un JWT dalle credenziali del servizio
  2. Sostituire il JWT con un token di accesso
  • Se sono presenti le credenziali del servizio, l'applicazione esterna utilizza questo token di accesso invece del token di accesso per lo sviluppo locale quando accede a AEM as a Cloud Service

In questo tutorial, Adobe di @adobe/jwt-auth Il modulo npm viene utilizzato per entrambi, (1) generare il JWT dalle credenziali del servizio e (2) scambiarlo per un token di accesso, in una singola chiamata di funzione. Se l'applicazione non è basata su JavaScript, controlla codice di esempio in altre lingue informazioni su come creare un JWT dalle credenziali del servizio e scambiarlo per un token di accesso con Adobe IMS.

Lettura delle credenziali del servizio

Rivedi getCommandLineParams() Scopri come viene letto il file JSON delle credenziali del servizio utilizzando lo stesso codice utilizzato per leggere nel JSON del token di accesso per lo sviluppo locale.

function getCommandLineParams() {
    ...

    // Read in the credentials from the provided JSON file
    // Since both the Local Development Access Token and Service Credentials files are JSON, this same approach can be re-used
    if (parameters.file) {
        parameters.developerConsoleCredentials = JSON.parse(fs.readFileSync(parameters.file));
    }

    ...
    return parameters;
}

Creare un JWT e scambiarlo con un token di accesso

Una volta lette le credenziali del servizio, queste vengono utilizzate per generare un JWT che viene quindi scambiato con le API Adobe IMS per un token di accesso. Questo token di accesso può quindi essere utilizzato per accedere a AEM as a Cloud Service.

Questa applicazione di esempio è basata su Node.js ed è quindi consigliabile utilizzarla @adobe/jwt-auth modulo npm per facilitare la (1) generazione JWT e (20 scambi con Adobe IMS. Se l'applicazione viene sviluppata in un'altra lingua, rivedere gli esempi di codice appropriati su come creare la richiesta HTTP ad Adobe IMS utilizzando altri linguaggi di programmazione.

  1. Aggiornare il getAccessToken(..) per esaminare il contenuto del file JSON e determinare se rappresenta un token di accesso per lo sviluppo locale o credenziali del servizio. Ciò può essere facilmente ottenuto verificando l'esistenza del .accessToken , che esiste solo per il token di accesso per lo sviluppo locale JSON.

    Se vengono fornite le credenziali del servizio, l’applicazione genera un JWT e lo scambia con Adobe IMS per ottenere un token di accesso. Utilizza il @adobe/jwt-authdi auth(...) che genera un JWT e lo scambia per un token di accesso in una singola chiamata di funzione. I parametri per auth(..) sono un Oggetto JSON costituito da informazioni specifiche disponibile dal codice JSON per le credenziali del servizio, come descritto di seguito nel codice.

 async function getAccessToken(developerConsoleCredentials) {

     if (developerConsoleCredentials.accessToken) {
         // This is a Local Development access token
         return developerConsoleCredentials.accessToken;
     } else {
         // This is the Service Credentials JSON object that must be exchanged with Adobe IMS for an access token
         let serviceCredentials = developerConsoleCredentials.integration;

         // Use the @adobe/jwt-auth library to pass the service credentials generated a JWT and exchange that with Adobe IMS for an access token.
         // If other programming languages are used, please see these code samples: https://www.adobe.io/authentication/auth-methods.html#!AdobeDocs/adobeio-auth/master/JWT/samples/samples.md
         let { access_token } = await auth({
             clientId: serviceCredentials.technicalAccount.clientId, // Client Id
             technicalAccountId: serviceCredentials.id,              // Technical Account Id
             orgId: serviceCredentials.org,                          // Adobe IMS Org Id
             clientSecret: serviceCredentials.technicalAccount.clientSecret, // Client Secret
             privateKey: serviceCredentials.privateKey,              // Private Key to sign the JWT
             metaScopes: serviceCredentials.metascopes.split(','),   // Meta Scopes defining level of access the access token should provide
             ims: `https://${serviceCredentials.imsEndpoint}`,       // IMS endpoint used to obtain the access token from
         });

         return access_token;
     }
 }
Ora, a seconda del file JSON (il JSON per il token di accesso per lo sviluppo locale o il JSON per le credenziali del servizio) trasmesso tramite il parametro della riga di comando "file", l’applicazione ricava un token di accesso.

Tieni presente che mentre le credenziali del servizio scadono ogni 365 giorni, il JWT e il token di accesso corrispondente scadono di frequente e devono essere aggiornati prima della scadenza. Per farlo, usa un "refresh_token" [fornito da Adobe IMS](https://www.adobe.io/authentication/auth-methods.html#!AdobeDocs/adobeio-auth/master/OAuth/OAuth.md#access-tokens).
  1. Con queste modifiche implementate, il codice JSON per le credenziali del servizio è stato scaricato da AEM Developer Console e, per semplicità, salvato come service_token.json nella stessa cartella di questo index.js. Ora eseguiamo l’applicazione sostituendo il parametro della riga di comando file con service_token.json, e l'aggiornamento propertyValue a un nuovo valore, in modo che gli effetti siano evidenti nell’AEM.

    code language-shell
    $ node index.js \
        aem=https://author-p1234-e5678.adobeaemcloud.com \
        folder=/wknd-shared/en/adventures/napa-wine-tasting \
        propertyName=metadata/dc:rights \
        propertyValue="WKND Restricted Use" \
        file=service_token.json
    

    L'output sul terminale è simile al seguente:

    code language-shell
    200 - OK @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd-shared/en/adventures/napa-wine-tasting.json
    403 - Forbidden @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd-shared/en/adventures/napa-wine-tasting/AdobeStock_277654931.jpg.json
    403 - Forbidden @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd-shared/en/adventures/napa-wine-tasting/AdobeStock_239751461.jpg.json
    403 - Forbidden @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd-shared/en/adventures/napa-wine-tasting/AdobeStock_280313729.jpg.json
    403 - Forbidden @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd-shared/en/adventures/napa-wine-tasting/AdobeStock_286664352.jpg.json
    

    Il 403 - Non consentito righe, indica gli errori nelle chiamate API HTTP a AEM as a Cloud Service. Questi errori 403 Forbidden si verificano quando si tenta di aggiornare i metadati delle risorse.

    Il motivo è che il token di accesso derivato dalle credenziali del servizio autentica la richiesta all’AEM utilizzando un utente AEM con account tecnico creato automaticamente che, per impostazione predefinita, dispone solo dell’accesso in lettura. Per fornire all’applicazione l’accesso in scrittura all’AEM, l’utente AEM dell’account tecnico associato al token di accesso deve ottenere l’autorizzazione nell’AEM.

Configurare l’accesso in AEM

Il token di accesso derivato dalle credenziali del servizio utilizza un account tecnico utente AEM con appartenenza nel Collaboratori Gruppo di utenti AEM.

Credenziali di servizio - Utente AEM dell’account tecnico

Una volta che l’utente AEM dell’account tecnico esiste nell’AEM (dopo la prima richiesta HTTP con il token di accesso), le autorizzazioni di questo utente AEM possono essere gestite come quelle di altri utenti AEM.

  1. Innanzitutto, individua il nome di accesso AEM dell’account tecnico aprendo il file JSON delle credenziali del servizio scaricato da AEM Developer Console, quindi individua integration.email valore, che deve essere simile a: 12345678-abcd-9000-efgh-0987654321c@techacct.adobe.com.
  2. Accedere al servizio Author dell’ambiente AEM corrispondente come amministratore AEM
  3. Accedi a Strumenti > Sicurezza > Utenti
  4. Individuare l’utente AEM con il Nome di accesso identificati nel passaggio 1 e aprono i relativi Proprietà
  5. Accedi a Gruppi e aggiungi il Utenti DAM gruppo (con accesso in scrittura alle risorse)
  6. Tocca Salva e chiudi

Se l'account tecnico è autorizzato in AEM a disporre delle autorizzazioni di scrittura per le risorse, eseguire nuovamente l'applicazione:

$ node index.js \
    aem=https://author-p1234-e5678.adobeaemcloud.com \
    folder=/wknd-shared/en/adventures/napa-wine-tasting \
    propertyName=metadata/dc:rights \
    propertyValue="WKND Restricted Use" \
    file=service_token.json

L'output sul terminale è simile al seguente:

200 - OK @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd-shared/en/adventures/napa-wine-tasting.json
200 - OK @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd-shared/en/adventures/napa-wine-tasting/AdobeStock_277654931.jpg.json
200 - OK @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd-shared/en/adventures/napa-wine-tasting/AdobeStock_286664352.jpg.json
200 - OK @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd-shared/en/adventures/napa-wine-tasting/AdobeStock_239751461.jpg.json
200 - OK @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd-shared/en/adventures/napa-wine-tasting/AdobeStock_280313729.jpg.json

Verifica le modifiche

  1. Accedi all’ambiente as a Cloud Service dell’AEM che è stato aggiornato (utilizzando lo stesso nome host fornito in aem (parametro della riga di comando)
  2. Accedi a Risorse > File
  3. Spostati nella cartella delle risorse specificata da folder parametro della riga di comando, ad esempio WKND > Inglese > Avventure > Degustazione del vino Napa
  4. Apri Proprietà per qualsiasi risorsa nella cartella
  5. Accedi a Avanzate scheda
  6. Rivedi il valore della proprietà aggiornata, ad esempio Copyright che è mappato sul file aggiornato metadata/dc:rights proprietà JCR, che ora riflette il valore fornito nella sezione propertyValue parametro, ad esempio Utilizzo limitato WKND

Aggiornamento metadati per utilizzo limitato WKND

Congratulazioni.

Ora che abbiamo effettuato l’accesso a livello di programmazione a AEM as a Cloud Service utilizzando un token di accesso per lo sviluppo locale e un token di accesso per il servizio pronto per la produzione.

recommendation-more-help
e25b6834-e87f-4ff3-ba56-4cd16cdfdec4