[Alpha]{class="badge informative"}
Autenticazione
Il Server SDK viene eseguito in un ambiente attendibile controllato dall’utente. Per questo motivo, invia eventi all’API server Edge Network autenticata anziché all’endpoint non autenticato utilizzato dai browser. Le richieste autenticate consentono ad Edge Network di considerare attendibili i dati inviati dal server.
Per eseguire l’autenticazione, SDK richiede una credenziale server-to-server OAuth da Adobe Developer Console. Passarla a configure utilizzando l’opzione edgeCredentials, che è obbligatoria. SDK utilizza le credenziali per richiedere un token di accesso da Adobe, quindi aggiunge il token a ogni richiesta autenticata.
Creare una credenziale server-to-server OAuth create-credential
Per creare una credenziale, è necessario essere uno sviluppatore e un utente di Adobe Experience Platform nell’organizzazione. Quindi completa i seguenti passaggi:
-
Accedi a Adobe Developer Console e seleziona la tua organizzazione.
-
Passa a Progetti e seleziona un progetto esistente oppure creane uno nuovo.
-
Aggiungi l’API Experience Platform al progetto e seleziona OAuth Server-to-Server come tipo di autenticazione.
-
Seleziona i profili di prodotto per le credenziali.
-
Nella pagina della credenziale, copiare i valori seguenti:
- ID client
- Segreto client. Selezionare Recupera segreto client per visualizzarlo.
- Ambiti
Consulta Autenticazione e accesso alle API di Experience Platform per istruzioni dettagliate e schermate per ogni passaggio, tra cui come ottenere l’accesso a utenti e sviluppatori.
Configurare SDK con le credenziali configure
Passare i valori copiati nell’opzione edgeCredentials quando si chiama configure. Leggili dalle variabili di ambiente o da un gestore dei segreti invece di inserirli nel codice sorgente.
await alloy.configure({
datastreamId: "ebebf826-a01f-4458-8cec-ef61de241c93",
orgId: "ADB3LETTERSANDNUMBERS@AdobeOrg",
edgeCredentials: {
clientId: process.env.ADOBE_CLIENT_ID,
clientSecret: process.env.ADOBE_CLIENT_SECRET,
scopes: process.env.ADOBE_SCOPES.split(",")
}
});
Se si omette edgeCredentials, configure rifiuta con un errore. Per l’elenco completo delle proprietà, vedere edgeCredentials.
Utilizzare la stessa organizzazione per le credenziali e l’opzione orgId. SDK invia orgId nell’intestazione x-gw-ims-org-id di ogni richiesta autenticata.
Quali richieste sono autenticate authenticated-requests
Solo sendEvent utilizza l’API server autenticata. L’API server non fornisce endpoint equivalenti per le richieste di identità e consenso, pertanto questi metodi inviano richieste non autenticate all’endpoint Edge Network standard, come fa Web SDK. Il SDK sceglie l’endpoint per te.
Quando thirdPartyCookiesEnabled è true, che è l’impostazione predefinita, la prima richiesta non autenticata di un visitatore passa a adobedc.demdex.net invece che a edgeDomain.
Ogni richiesta autenticata include le seguenti intestazioni:
Authorization: token di accesso ottenuto da SDK con le credenziali.x-api-key:clientIddalle credenziali.x-gw-ims-org-id:orgIdconfigurato.
Impostare il tipo di accesso allo stream di dati datastream-access-type
Gli stream di dati hanno un’impostazione Access Type che controlla se Edge Network accetta richieste non autenticate. Consulta Configurare le opzioni avanzate nella guida sugli stream di dati.
- Autenticazione mista: accetta richieste autenticate e non autenticate. Utilizzare questa impostazione se si chiama
getIdentity,appendIdentityToUrlosetConsento se le pagine del browser inviano dati allo stesso flusso di dati con Web SDK. - Solo autenticati: accetta solo le richieste autenticate. Utilizzare questa impostazione solo se si chiama solo
sendEventcon questo flusso di dati.
Includere un’identità primaria negli eventi primary-identity
L’Edge Network non può leggere i cookie dal browser del visitatore su una richiesta server-to-server. Per questo motivo, ogni evento ricevuto dall’API server deve includere un’identità primaria nell’evento identityMap. Se un evento non ne include uno, Edge Network lo rifiuta con il codice di errore EXEG-0306-400.
await visitor.sendEvent({
xdm: {
eventType: "web.webpagedetails.pageViews",
identityMap: {
Email: [{ id: "visitor@example.com", primary: true }]
}
}
});
Per ulteriori informazioni, vedere xdm.
Memorizzazione in cache dei token di accesso token-caching
SDK richiede un token di accesso da Adobe Identity Management Service (IMS) la prima volta che invia una richiesta autenticata, non quando chiami configure. Quindi riutilizza il token fino a cinque minuti prima della scadenza. Ogni handle forRequest creato da un’istanza condivide un token memorizzato nella cache. L’istanza di livello superiore memorizza in cache il proprio token separatamente, il che conta solo se invii direttamente anche eventi da esso. I token di accesso sono validi per circa 24 ore, pertanto un server occupato richiede un nuovo token circa una volta al giorno anziché una volta per visitatore.
Se più richieste richiedono un token contemporaneamente, condividono una singola richiesta token. Se la richiesta del token non riesce, ad esempio perché il segreto client non è corretto, il metodo che l’ha attivata rifiuta con un errore il cui messaggio include Failed to acquire an IMS access token.
Proteggere le credenziali protect-credentials
Il segreto client consente di accedere ai dati dell’organizzazione. Segui queste pratiche:
- Memorizza l’ID client, il segreto client e gli ambiti nelle variabili di ambiente o in un gestore di segreti. Non eseguirne il commit nel controllo del codice sorgente.
- Non inviare mai il segreto client a un browser. Utilizza il Server SDK solo nel codice del server che i visitatori non possono scaricare o verificare.
- Ruota il segreto client in Adobe Developer Console se pensi che sia stato esposto.
Il segreto client viene rielaborato da SDK, sostituendolo con [REDACTED], nei registri di debug e nella configurazione restituita da getLibraryInfo.