[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的開發人員和使用者。 然後完成下列步驟:
-
登入Adobe Developer Console並選取您的組織。
-
導覽至 專案 並選取現有專案,或建立新專案。
-
將 Experience Platform API 新增至專案,並選取 OAuth伺服器對伺服器 做為驗證型別。
-
選取認證的產品設定檔。
-
在認證的頁面上,複製下列值:
- 使用者端識別碼
- 使用者端密碼。 選取 擷取使用者端密碼 以顯示它。
- 領域
請參閱驗證及存取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會為您選擇端點。
當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]取代。