Protezione dei contenuti in AEM headless

Garantire l’integrità e la sicurezza dei dati quando si distribuiscono contenuti headless AEM da Publish AEM è fondamentale per la distribuzione di contenuti sensibili. Questo tutorial illustra come proteggere il contenuto fornito dagli endpoint API GraphQL headless dell’AEM.

Le indicazioni contenute in questo tutorial in caso di requisiti rigorosi per la disponibilità esclusiva di contenuti per utenti o gruppi di utenti specifici. È fondamentale distinguere tra contenuti di marketing personalizzati e contenuti privati, come PII o dati finanziari personali, per evitare confusione e risultati indesiderati. Questo tutorial tratta la protezione dei contenuti privati.

Quando si parla di contenuti di marketing, si fa riferimento a contenuti personalizzati per singoli utenti o gruppi, che non sono destinati al consumo generico. Tuttavia, è essenziale comprendere che, sebbene questo contenuto possa essere destinato a determinati utenti, la sua esposizione al di fuori del contesto previsto (ad esempio, attraverso la manipolazione delle richieste HTTP) non pone un rischio legale, di sicurezza o di reputazione.

Si sottolinea che tutti i contenuti trattati in questo articolo sono considerati privati e possono essere visualizzati solo da utenti o gruppi designati. I contenuti di marketing spesso non richiedono protezione, ma la loro distribuzione a utenti specifici può essere gestita dall’applicazione e memorizzata nella cache per migliorare le prestazioni.

Questo manuale non tratta:

  • Proteggere direttamente gli endpoint, ma concentrarsi sulla protezione del contenuto che distribuiscono.
  • Autenticazione per AEM Publish o recupero dei token di accesso. I metodi di autenticazione e il passaggio delle credenziali dipendono dai singoli casi d’uso e dalle implementazioni.

Gruppi di utenti

Innanzitutto, è necessario definire un gruppo utenti contenente gli utenti che devono avere accesso al contenuto protetto.

Gruppo di utenti di contenuti protetti da AEM headless {align="center"}

I gruppi di utenti assegnano l’accesso a contenuti headless AEM, inclusi frammenti di contenuto o altre risorse di riferimento.

  1. Accedi a AEM Author come amministratore utenti.
  2. Passa a Strumenti > Sicurezza > Gruppi.
  3. Seleziona Crea nell'angolo superiore destro.
  4. Nella scheda Dettagli, specifica ID gruppo e Nome gruppo.
    • L'ID gruppo e il Nome gruppo possono essere qualsiasi cosa, ma in questo esempio utilizza il nome Utenti API headless AEM.
  5. Seleziona Salva e chiudi.
  6. Seleziona il gruppo appena creato, quindi scegli Attiva dalla barra delle azioni.

Se sono necessari vari livelli di accesso, crea più gruppi di utenti che possono essere associati a contenuti diversi.

Aggiunta di utenti ai gruppi di utenti

Per consentire alle richieste API GraphQL headless dell’AEM di accedere a contenuti protetti, puoi associare la richiesta headless a un utente appartenente a un gruppo di utenti specifico. Di seguito sono riportati due approcci comuni:

  1. AEM as a Cloud Service account tecnici:

    • Crea un account tecnico in AEM as a Cloud Service Developer Console.
    • Accedi a AEM Author una volta con l’account tecnico.
    • Aggiungi l'account tecnico al gruppo di utenti tramite Strumenti > Sicurezza > Gruppi > Utenti API headless AEM > Membri.
    • Attiva sia l'utente dell'account tecnico che il gruppo di utenti in Publish AEM.
    • Questo metodo richiede che il client headless non esponga le credenziali del servizio all’utente, in quanto sono credenziali per un utente specifico e non devono essere condivise.

    Gestione gruppo di account tecnici AEM {align="center"}

  2. Utenti con nome:

    • Autentica gli utenti denominati e aggiungili direttamente al gruppo di utenti su AEM Publish.
    • Questo metodo richiede che il client headless autentichi le credenziali utente con AEM Publish, ottenga un token di accesso o AEM e utilizzi questo token per le richieste successive all’AEM. I dettagli su come ottenere questo risultato non sono descritti in questa procedura e dipendono dall’implementazione.

Protezione dei frammenti di contenuto

La protezione dei frammenti di contenuto è essenziale per la salvaguardia dei contenuti headless AEM e si ottiene associando i contenuti a un gruppo utenti chiuso (CUG). Quando un utente effettua una richiesta all’API GraphQL headless dell’AEM, il contenuto restituito viene filtrato in base ai CUG dell’utente.

CUG headless AEM {align="center"}

Segui questi passaggi per ottenere questo risultato tramite Gruppi utenti chiusi (CUG).

  1. Accedi a AEM Author come utente DAM.
  2. Passa a Assets > File e seleziona la cartella contenente i frammenti di contenuto da proteggere. I CUG vengono applicati in modo gerarchico ed hanno effetto sulle sottocartelle, a meno che non siano sostituiti da un CUG diverso.
    • Assicurati che gli utenti appartenenti ad altri canali che utilizzano il contenuto delle cartelle siano inclusi in questo gruppo di utenti. In alternativa, includi i gruppi di utenti associati a tali canali nell’elenco dei CUG. In caso contrario, il contenuto non sarà accessibile a tali canali.
  3. Selezionare la cartella e scegliere Proprietà dalla barra degli strumenti.
  4. Selezionare la scheda Autorizzazioni.
  5. Digita il Nome gruppo e seleziona il pulsante Aggiungi per aggiungere il nuovo CUG.
  6. Salva per applicare il gruppo utenti chiusi (CUG).
  7. Selezionare la cartella delle risorse e selezionare Publish per inviare la cartella con i gruppi utenti chiusi applicati a AEM Publish, dove verrà valutata come autorizzazione.

Segui gli stessi passaggi per tutte le cartelle contenenti frammenti di contenuto da proteggere, applicando i CUG corretti a ciascuna cartella.

Ora, quando viene effettuata una richiesta HTTP all’endpoint API GraphQL headless dell’AEM, nel risultato verranno inclusi solo i Frammenti di contenuto accessibili dai CUG specificati dell’utente richiedente. Se l’utente non ha accesso a nessun frammento di contenuto, il risultato sarà vuoto, ma verrà comunque restituito il codice di stato HTTP 200.

Protezione del contenuto di riferimento

I frammenti di contenuto spesso fanno riferimento ad altri contenuti AEM come le immagini. Per proteggere il contenuto a cui si fa riferimento, applica i CUG alle cartelle di risorse in cui sono memorizzate le risorse a cui si fa riferimento. Tieni presente che le risorse di riferimento vengono comunemente richieste utilizzando metodi diversi da quelli delle API GraphQL headless dell’AEM. Di conseguenza, il modo in cui i token di accesso vengono trasmessi alle richieste di tali risorse a cui si fa riferimento può variare.

A seconda dell’architettura dei contenuti, potrebbe essere necessario applicare gruppi utenti chiusi (CUG) a più cartelle per garantire la protezione di tutti i contenuti di riferimento.

Impedisci la memorizzazione nella cache di contenuto protetto

AEM as a Cloud Service memorizza nella cache le risposte HTTP per impostazione predefinita per migliorare le prestazioni. Tuttavia, questo può causare problemi nella distribuzione dei contenuti protetti. Per impedire la memorizzazione nella cache di tali contenuti, rimuovere le intestazioni di cache per endpoint specifici nella configurazione Apache dell'istanza Publish dell'AEM.

Aggiungi la seguente regola al file di configurazione Apache del progetto Dispatcher per rimuovere le intestazioni cache per endpoint specifici:

# dispatcher/src/conf.d/available_vhosts/example.vhost

<VirtualHost *:80>
    ...
    # Replace `example` with the name of your GraphQL endpoint's configuration name.
    <LocationMatch "^/graphql/execute.json/example/.*$">
        # Remove cache headers for protected endpoints so they are not cached
        Header unset Cache-Control
        Header unset Surrogate-Control
        Header set Age 0
    </LocationMatch>
    ...
</VirtualHost>

Tieni presente che questo comporterà una riduzione delle prestazioni in quanto il contenuto non verrà memorizzato nella cache dal dispatcher o dalla CDN. Si tratta di un compromesso tra prestazioni e sicurezza.

Protezione degli endpoint API di GraphQL headless AEM

Questa guida non tratta la protezione degli stessi endpoint API GraphQL headless AEM, ma si concentra sulla protezione del contenuto da essi fornito. Tutti gli utenti, inclusi gli utenti anonimi, possono accedere agli endpoint contenenti contenuto protetto. Verrà restituito solo il contenuto accessibile dai gruppi utenti chiusi dell’utente. Se nessun contenuto è accessibile, la risposta API headless dell’AEM avrà ancora un codice di stato di risposta HTTP 200, ma i risultati saranno vuoti. In genere, la protezione del contenuto è sufficiente, in quanto gli endpoint stessi non espongono intrinsecamente dati sensibili. Se devi proteggere gli endpoint, applica gli ACL su AEM Publish tramite script di inizializzazione archivio Sling (repoinit).

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