[Alpha]{class="badge informative"}
인증
서버 SDK은 사용자가 제어하는 신뢰할 수 있는 환경에서 실행됩니다. 따라서 브라우저에서 사용하는 인증되지 않은 끝점 대신 인증된 Edge Network Server 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 서버 간을(를) 선택합니다.
-
자격 증명의 제품 프로필을 선택합니다.
-
자격 증명 페이지에서 다음 값을 복사합니다.
- 클라이언트 ID
- 클라이언트 암호. 클라이언트 암호 검색을 선택하여 표시합니다.
- 범위
개발자 및 사용자 액세스를 얻는 방법을 포함하여 각 단계에 대한 자세한 지침 및 스크린샷은 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를 사용합니다. Server API는 ID 및 동의 요청에 대해 동등한 종단점을 제공하지 않으므로, 이러한 메서드는 Web SDK과 마찬가지로 인증되지 않은 요청을 표준 Edge Network 종단점으로 보냅니다. SDK이 자동으로 끝점을 선택합니다.
thirdPartyCookiesEnabled이(가) 기본값인 true이면 방문자의 첫 번째 인증되지 않은 요청이 edgeDomain 대신 adobedc.demdex.net(으)로 이동합니다.
인증된 각 요청에는 다음 헤더가 포함됩니다.
Authorization: SDK이 자격 증명으로 얻은 액세스 토큰입니다.x-api-key: 자격 증명의clientId.x-gw-ims-org-id: 구성한orgId입니다.
데이터 스트림 액세스 유형 설정 datastream-access-type
데이터 스트림에는 Edge Network에서 인증되지 않은 요청을 수락하는지 여부를 제어하는 액세스 유형 설정이 있습니다. 데이터스트림 안내서에서 고급 옵션 구성을 참조하십시오.
- 혼합 인증: 인증된 요청과 인증되지 않은 요청을 모두 허용합니다.
getIdentity,appendIdentityToUrl또는setConsent을(를) 호출하거나 브라우저 페이지에서 웹 SDK이 있는 동일한 데이터 스트림으로 데이터를 보내는 경우 이 설정을 사용합니다. - 인증된 요청만: 인증된 요청만 허용합니다. 이 데이터 스트림으로
sendEvent만 호출하는 경우에만 이 설정을 사용하십시오.
이벤트에 기본 ID 포함 primary-identity
Edge Network은 서버 간 요청에 대해 방문자의 브라우저에서 쿠키를 읽을 수 없습니다. 따라서 서버 API가 수신하는 모든 이벤트에는 이벤트의 identityMap에 기본 ID가 포함되어야 합니다. 이벤트에 이 이벤트가 포함되지 않으면 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 IMS(Identity Management Service)에서 액세스 토큰을 요청합니다. 그런 다음 토큰이 만료되기 5분 전까지 토큰을 재사용합니다. forRequest마다 인스턴스가 캐시된 토큰 하나를 공유하도록 처리합니다. 최상위 인스턴스는 자체 토큰을 별도로 캐시하며, 이는 이벤트를 직접 전송하는 경우에만 중요합니다. 액세스 토큰은 약 24시간 동안 유효하므로 사용 중인 서버가 방문자당 한 번 요청하는 것이 아니라 하루에 한 번 정도 새 토큰을 요청합니다.
여러 요청에 토큰이 동시에 필요한 경우 단일 토큰 요청을 공유합니다. 클라이언트 암호가 잘못되어 토큰 요청이 실패하는 등의 경우, 토큰 요청을 트리거한 메서드는 메시지를 Failed to acquire an IMS access token에 포함하는 오류와 함께 거부합니다.
자격 증명 보호 protect-credentials
클라이언트 암호는 조직의 데이터에 대한 액세스 권한을 부여합니다. 다음 방법을 따르십시오.
- 클라이언트 ID, 클라이언트 암호 및 범위를 환경 변수 또는 암호 관리자에 저장합니다. 소스 제어에 커밋하지 마십시오.
- 클라이언트 암호를 브라우저에 보내지 마십시오. 방문자가 다운로드하거나 검사할 수 없는 서버 코드에서만 서버 SDK을 사용하십시오.
- 클라이언트 암호가 노출되었다고 생각되는 경우 Adobe Developer Console에서 클라이언트 암호를 회전합니다.
SDK은 클라이언트 암호를 해당 디버그 로그와 getLibraryInfo이(가) 반환하는 구성에서 [REDACTED](으)로 대체하여 수정합니다.