[Alpha]{class="badge informative"}

Authentication

伺服器SDK會在您控制的信任環境中執行。 因此,它會傳送事件至已驗證的Edge Network伺服器API,而非瀏覽器使用的未驗證端點。 已驗證的請求可讓Edge Network信任您的伺服器傳送的資料。

為了進行驗證,SDK需要來自Adobe Developer Console的​OAuth伺服器對伺服器認證。 您使用edgeCredentials選項(必填)將其傳遞給configure。 SDK會使用認證向Adobe請求存取權杖,然後將權杖新增至每個已驗證的請求。

建立OAuth伺服器對伺服器認證 create-credential

若要建立認證,您必須是貴組織中Adobe Experience Platform的開發人員和使用者。 然後完成下列步驟:

  1. 登入Adobe Developer Console並選取您的組織。

  2. 導覽至​ 專案 ​並選取現有專案,或建立新專案。

  3. 將​ Experience Platform API ​新增至專案,並選取​ OAuth伺服器對伺服器 ​做為驗證型別。

  4. 選取認證的產品設定檔。

  5. 在認證的頁面上,複製下列值:

    • 使用者端識別碼
    • 使用者端密碼。 選取​ 擷取使用者端密碼 ​以顯示它。
    • 領域

請參閱驗證及存取Experience Platform API,以取得每個步驟的詳細指示和熒幕擷取畫面,包括如何取得開發人員和使用者存取權。

使用您的認證設定SDK configure

呼叫configure時將您複製的值傳遞至edgeCredentials選項。 從環境變數或秘密管理員中讀取,而不是將其放在原始程式碼中。

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(",")
  }
});

若您省略edgeCredentials,configure會以錯誤拒絕。 如需屬性的完整清單,請參閱edgeCredentials。

使用相同組織作為認證和orgId選項。 SDK會在每個已驗證請求的x-gw-ims-org-id標頭中傳送orgId。

哪些要求已驗證 authenticated-requests

只有sendEvent使用已驗證的伺服器API。 伺服器API並未針對身分和同意請求提供等同的端點,因此這些方法會如Web SDK一樣,將未驗證的請求傳送至標準Edge Network端點。 SDK會為您選擇端點。

方法
端點
已驗證
sendEvent
server.adobedc.net
是
getIdentity
在edgeDomain中設定的網域
無
appendIdentityToUrl
在edgeDomain中設定的網域(如果SDK需要要求身分識別)
無
setConsent
在edgeDomain中設定的網域
無

當thirdPartyCookiesEnabled預設為true時,訪客的第一個未驗證要求會移至adobedc.demdex.net,而非edgeDomain。

每個已驗證的請求都包含以下標頭:

  • Authorization: SDK以您的認證取得的存取權杖。
  • x-api-key:來自您認證的clientId。
  • x-gw-ims-org-id:您設定的orgId。

設定資料流存取型別 datastream-access-type

資料串流具有​ 存取型別 ​設定,可控制Edge Network是否接受未驗證的請求。 請參閱資料串流指南中的設定進階選項。

  • 混合驗證:接受已驗證和未驗證的請求。 如果您呼叫getIdentity、appendIdentityToUrl或setConsent,或您的瀏覽器頁面傳送資料至與Web SDK相同的資料流,請使用此設定。
  • 僅驗證:僅接受已驗證的請求。 只有當您使用此資料流只呼叫sendEvent時,才使用此設定。

在事件中包含主要身分 primary-identity

Edge Network無法從訪客瀏覽器對伺服器對伺服器請求讀取Cookie。 因此,伺服器API收到的每個事件都必須在事件的identityMap中包含主要身分。 如果某個事件不包含某個事件,Edge Network會拒絕該事件,錯誤碼為EXEG-0306-400。

await visitor.sendEvent({
  xdm: {
    eventType: "web.webpagedetails.pageViews",
    identityMap: {
      Email: [{ id: "visitor@example.com", primary: true }]
    }
  }
});

如需詳細資訊,請參閱xdm。

存取權杖快取 token-caching

SDK在第一次傳送已驗證的請求時(而不是當您呼叫configure時),會向Adobe Identity Management服務(IMS)要求存取權杖。 然後,它會重複使用權杖,直到權杖過期前五分鐘。 執行個體建立的每個forRequest控制代碼共用一個快取權杖。 頂層執行個體會個別快取其本身的Token,只有當您也直接從中傳送事件時,才重要。 存取權杖的有效期約為24小時,因此繁忙的伺服器每天會請求一次新權杖,而非每位訪客請求一次。

如果多個請求同時需要權杖,則會共用單一權杖請求。 如果權杖要求失敗(例如,因為使用者端密碼錯誤),觸發該要求的方法會以訊息包含Failed to acquire an IMS access token的錯誤拒絕。

保護您的認證 protect-credentials

使用者端密碼會授予您組織資料的存取權。 請遵循下列作法:

  • 將使用者端ID、使用者端密碼和範圍儲存在環境變數或密碼管理員中。 請勿將其提交至原始檔控制。
  • 切勿將使用者端密碼傳送至瀏覽器。 請僅在訪客無法下載或檢查的伺服器程式碼中使用「伺服器SDK」。
  • 如果您認為使用者端密碼已公開,請在Adobe Developer Console中旋轉使用者端密碼。

SDK會在其偵錯記錄檔及getLibraryInfo傳回的設定中,編輯使用者端密碼,並以[REDACTED]取代。

recommendation-more-help
experience-platform-help-collection