1st パーティデバイス IDの生成
Adobe Experience Cloud アプリケーションは従来、次のようなさまざまなテクノロジーを使用してデバイス idを保存するためにCookieを生成してきました。
- サードパーティ Cookie
- ドメイン名のCNAME設定を使用してAdobe サーバーが設定するファーストパーティ Cookie
- JavaScriptが設定するファーストパーティ Cookie
最近のブラウザーの変更により、これらの種類のCookieの期間が制限されています。 ファーストパーティ Cookieが最も効果を発揮するのは、DNS CNAMEではなく、DNS A/AAA レコードを使用して顧客所有のサーバーを設定する場合です。 ファーストパーティのデバイス ID (FPID)機能を使用すると、Adobe Experience Platform Web SDKを実装しているお客様は、DNS A/AAAA レコードを使用するサーバーのCookieでデバイス IDを使用できます。 これらのIDはAdobeに送信され、Adobe Experience Cloud ID (ECID)を生成するためのシードとして使用できます。ECIDは、Adobe Experience Cloud アプリケーションの主要な識別子のままです。
この機能の仕組みについて、簡単な例を示します。
-
エンドユーザーのブラウザーは、顧客のweb サーバーまたはCDNからweb ページをリクエストします。
-
お客様は、Web サーバーまたはCDNでデバイス ID (FPID)を生成します(Web サーバーはドメイン名のDNS A/AAAA レコードに関連付ける必要があります)。
-
お客様は、エンドユーザーのブラウザーにFPIDを保存するためのファーストパーティ Cookieを設定します。
-
お客様のAdobe Experience Platform Web SDKの実装は、Platform Edge Networkに対して次のいずれかのリクエストを行います。
- ID マップにFPIDを含めます。
- Web SDK リクエストのCNAMEを設定し、そのデータストリームをFPID Cookieの名前で設定します。
-
Experience Platform Edge Networkは、FPIDを受け取り、それを使用してExperience Cloud ID (ECID)を生成します。
-
Platform Web SDKのレスポンスは、ECIDをエンドユーザーのブラウザーに送り返します。
-
idMigrationEnabled=trueの場合、Platform Web SDKはJavaScriptを使用して、ECIDをAMCV_Cookieとしてエンドユーザーのブラウザーに保存します。 -
AMCV_Cookieの有効期限が切れた場合、プロセスは繰り返されます。 同じファーストパーティデバイス IDが使用可能な限り、新しいAMCV_Cookieが以前と同じECID値で作成されます。
idMigrationEnabledをtrueに設定する必要はありません。 ただし、idMigrationEnabled=falseでは、AMCV_ Cookieが表示されない可能性があるため、ネットワーク応答でECID値を探す必要があります。このチュートリアルでは、PHP スクリプト言語を使用した特定の例を使用して、次の方法を説明します。
- UUIDv4の生成
- UUIDv4値をCookieに書き込む
- ID マップにcookie値を含める
- ECID生成の検証
ファーストパーティデバイス IDに関する詳細なドキュメントについては、製品ドキュメントを参照してください。
UUIDv4の生成
PHPにはUUID生成用のネイティブライブラリがないので、これらのコード例は、他のプログラミング言語が使用された場合に必要とされる可能性よりも広範です。 PHPは広くサポートされているサーバーサイド言語であるため、この例ではPHPを選択しました。
次の関数が呼び出されると、ランダムなUUID version-4が生成されます。
<?php
function guidv4($data)
{
$data = $data ?? random_bytes(16);
$data[6] = chr(ord($data[6]) & 0x0f | 0x40); // set version to 0100
$data[8] = chr(ord($data[8]) & 0x3f | 0x80); // set bits 6-7 to 10
return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));
}
?>
UUIDv4値をCookieに書き込む
次のコードは、上記の関数に対してUUIDを生成するようにリクエストします。 次に、組織が決定したCookie フラグを設定します。 Cookieが既に生成されている場合、有効期限は延長されます。
<?php
if(!isset($_COOKIE['FPID'])) {
$cookie_value = guidv4(openssl_random_pseudo_bytes(16));
$arr_cookie_options = array (
'expires' => time() + 60*60*24*30*13,
'path' => '/',
'domain' => 'mysiteurl.com',
'secure' => true,
'httponly' => true,
'samesite' => 'lax'
);
setcookie($cookie_name, $cookie_value, $arr_cookie_options);
$_COOKIE[$cookie_name] = $cookie_value;
}
else {
$cookie_value = $_COOKIE[$cookie_name];
$arr_cookie_options = array (
'expires' => time() + 60*60*24*30*13,
'path' => '/',
'domain' => 'mysiteurl.com',
'secure' => true,
'httponly' => true,
'samesite' => 'lax'
);
setcookie($cookie_name, $cookie_value, $arr_cookie_options);
}
?>
ID マップにCookie値を含める
最後の手順は、PHPを使用してCookie値をID マップにエコーすることです。
{
"identityMap": {
"FPID": [
{
"id": "<? echo $_COOKIE[$cookie_name] ?>",
"authenticatedState": "ambiguous",
"primary": true
}
]
}
}
FPIDと呼ばれる必要があります。FPIDは予約済みのID名前空間です。ID名前空間のインターフェイス リストには表示されません。ECID生成の検証
1st パーティデバイス IDから同じECIDが生成されていることを確認して、実装を検証します。
- FPID Cookieを生成します。
- Platform Web SDKを使用して、Platform Edge Networkにリクエストを送信します。
- 形式が
AMCV_<IMSORGID@AdobeOrg>のCookieが生成されます。 このCookieにはECIDが含まれています。 - 生成されたCookie値をメモし、
FPIDCookieを除くすべてのCookieをサイトから削除します。 - Platform Edge Networkに別のリクエストを送信します。
AMCV_<IMSORGID@AdobeOrg>Cookieの値が、削除されたAMCV_Cookieと同じECID値であることを確認します。 指定されたFPIDのcookie値が同じ場合、ECIDのシードプロセスは成功しました。
この機能について詳しくは、 ドキュメント を参照してください。