Configurare Sitecore Content Hub DAM in SitecoreAI: guida pratica, errori comuni e cose da verificare
Checklist pratica per configurare il DAM connector di Content Hub in SitecoreAI e distinguere errori CORS, CSP e X-Frame-Options.
Integrare Sitecore Content Hub DAM con SitecoreAI sembra, sulla carta, una configurazione abbastanza lineare: abiliti il connettore, aggiungi qualche variabile, configuri CORS e fai deploy. Nella pratica, però, ci sono almeno tre livelli diversi che devono essere allineati: SitecoreAI Deploy, Content Hub e il browser.
Questo articolo raccoglie una checklist pratica per chi deve configurare il DAM connector e vuole evitare alcune trappole abbastanza comuni.
1. Capire i due flussi: Pages e Content Editor
La prima cosa importante è non dare per scontato che Pages e Content Editor si comportino nello stesso modo.
In Pages, il DAM viene aperto dentro il contesto di:
https://pages.sitecorecloud.ioNel Content Editor, invece, il DAM viene aperto dal dominio del CM, per esempio:
https://xmc-my-environment.sitecorecloud.ioQuesta differenza è fondamentale. Può capitare che il DAM funzioni in Pages ma non nel Content Editor, anche se la configurazione sembra la stessa. Il motivo è che Content Hub deve permettere origini diverse.
2. Variabili da configurare in SitecoreAI Deploy
Nel progetto SitecoreAI Deploy, sull'ambiente interessato, vanno configurate le variabili lato CM. Le principali sono:
SITECORE_AppSettings_damEnabled__define = yes
Sitecore_ConnectionStrings_DAM_dot_SearchPage =
https://<content-hub-host>/en-us/sitecore-dam-connect/approved-assets
Sitecore_ConnectionStrings_DAM_dot_ExternalRedirectKey = Sitecore
Sitecore_ConnectionStrings_DAM_dot_ContentHub =
ClientId=<client-id>;ClientSecret=<client-secret>;UserName=<username>;Password=<password>;URI=https://<content-hub-host>/;Consiglio pratico: attenzione agli spazi. La connection string deve essere pulita, senza spazi dopo
=o tra i separatori;.
Dopo aver modificato queste variabili, non basta "sperare" che vengano lette subito: va eseguito un nuovo deploy, o comunque applicato il processo previsto per farle arrivare al CM.
3. Utente tecnico Content Hub: a cosa serve davvero
Creare un utente tecnico in Content Hub ha senso, ma bisogna capire a cosa serve.
Serve per autenticare Sitecore verso Content Hub tramite la connection string:
UserName=<technical-user>
Password=<password>Non serve invece a risolvere problemi di CORS, CSP o iframe. Quelli sono legati alla configurazione del tenant Content Hub e del CM, non ai permessi del singolo utente.
Quindi, se vedete un errore tipo:
X-Frame-Options: denynon state guardando un problema di permessi utente. State guardando un blocco lato Content Hub/browser.
4. CORS in Content Hub
In Content Hub bisogna aggiungere le origini che devono usare il DAM connector. Tipicamente:
https://pages.sitecorecloud.io/
https://<xmc-environment-host>.sitecorecloud.io/Per esempio:
https://pages.sitecorecloud.io/
https://xmc-my-qa-environment.sitecorecloud.io/Se usate Pages staging, valutate anche:
https://pages-staging.sitecore-staging.cloud/Nota pratica: aggiungete sempre l'host corretto dell'ambiente specifico. DEV, QA e PROD non sono intercambiabili.
5. CSP del Content Editor
Il Content Editor deve poter caricare Content Hub dentro un iframe. Se il browser blocca con un errore del tipo:
violates the following Content Security Policy directive: "frame-src ..."allora il problema è probabilmente lato CSP del CM. In quel caso serve aggiungere il dominio Content Hub alla Content-Security-Policy, ad esempio:
frame-src 'self'
https://*.sitecore-staging.cloud/auth
https://*.sitecorecloud.io/auth
https://<content-hub-host>Nel nostro caso abbiamo gestito questa parte tramite XDT su web.config.
Se usate XDT, valutate bene Replace rispetto a Remove + Insert. Replace funziona se l'header esiste già:
xdt:Locator="Match(name)"
xdt:Transform="Replace"Se però l'header non esiste nell'ambiente target, Replace non aggiunge nulla. Per ambienti non perfettamente allineati, una strategia Remove + Insert può essere più robusta.
6. Non confondere CORS, CSP e X-Frame-Options
Questa è probabilmente la parte più importante.
| Errore in console | Dove guardare |
|---|---|
Access to XMLHttpRequest ... has been blocked by CORS policy | Configurazione CORS di Content Hub |
violates Content Security Policy directive: frame-src | CSP del CM |
Refused to display '<content-hub-url>' in a frame because it set 'X-Frame-Options' to 'deny' | Blocco lato Content Hub |
Nell'ultimo caso il blocco arriva da Content Hub: non lo risolvete dal frontend e non lo risolvete aggiungendo permessi all'utente tecnico.
7. Come verificare velocemente
Nel Content Editor:
- Aprite i DevTools.
- Cliccate "Browse Sitecore DAM".
- Guardate la console.
- Guardate la request verso Content Hub nel tab Network.
- Controllate i Response Headers.
In particolare cercate:
Content-Security-PolicyX-Frame-OptionsAccess-Control-Allow-Origin
Questi header raccontano quasi sempre dove si trova il problema.
8. Checklist finale
Prima di considerare chiusa la configurazione, verificate:
Conclusione
La configurazione del DAM connector non è difficile, ma coinvolge più componenti e gli errori del browser possono trarre in inganno.
Il trucco è leggere bene il tipo di blocco:
- CORS significa problema di origine per chiamate HTTP.
- CSP significa che il CM non permette quel frame.
- X-Frame-Options significa che Content Hub non vuole essere caricato in iframe da quel contesto.
Una volta separati questi livelli, il troubleshooting diventa molto più semplice.
Riferimenti utili