1st パーティデバイス IDの生成

Adobe Experience Cloud アプリケーションは従来、次のようなさまざまなテクノロジーを使用してデバイス idを保存するためにCookieを生成してきました。

  1. サードパーティ Cookie
  2. ドメイン名のCNAME設定を使用してAdobe サーバーが設定するファーストパーティ Cookie
  3. 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 アプリケーションの主要な識別子のままです。

この機能の仕組みについて、簡単な例を示します。

​ ファーストパーティデバイス ID (FPID)とExperience Cloud ID (ECID) ​

  1. エンドユーザーのブラウザーは、顧客のweb サーバーまたはCDNからweb ページをリクエストします。

  2. お客様は、Web サーバーまたはCDNでデバイス ID (FPID)を生成します(Web サーバーはドメイン名のDNS A/AAAA レコードに関連付ける必要があります)。

  3. お客様は、エンドユーザーのブラウザーにFPIDを保存するためのファーストパーティ Cookieを設定します。

  4. お客様のAdobe Experience Platform Web SDKの実装は、Platform Edge Networkに対して次のいずれかのリクエストを行います。

    1. ID マップにFPIDを含めます。
    2. Web SDK リクエストのCNAMEを設定し、そのデータストリームをFPID Cookieの名前で設定します。
  5. Experience Platform Edge Networkは、FPIDを受け取り、それを使用してExperience Cloud ID (ECID)を生成します。

  6. Platform Web SDKのレスポンスは、ECIDをエンドユーザーのブラウザーに送り返します。

  7. idMigrationEnabled=trueの場合、Platform Web SDKはJavaScriptを使用して、ECIDをAMCV_ Cookieとしてエンドユーザーのブラウザーに保存します。

  8. AMCV_ Cookieの有効期限が切れた場合、プロセスは繰り返されます。 同じファーストパーティデバイス IDが使用可能な限り、新しいAMCV_ Cookieが以前と同じECID値で作成されます。

NOTE
FPIDを使用するために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);
    }

?>
NOTE
ファーストパーティデバイス IDを含むCookieは、任意の名前を持つことができます。

ID マップにCookie値を含める

最後の手順は、PHPを使用してCookie値をID マップにエコーすることです。

{
    "identityMap": {
        "FPID": [
                    {
                        "id": "<? echo $_COOKIE[$cookie_name] ?>",
                        "authenticatedState": "ambiguous",
                        "primary": true
                    }
                ]
        }
}
IMPORTANT
ID マップで使用されるID名前空間シンボルはFPIDと呼ばれる必要があります。
FPIDは予約済みのID名前空間です。ID名前空間のインターフェイス リストには表示されません。

ECID生成の検証

1st パーティデバイス IDから同じECIDが生成されていることを確認して、実装を検証します。

  1. FPID Cookieを生成します。
  2. Platform Web SDKを使用して、Platform Edge Networkにリクエストを送信します。
  3. 形式がAMCV_<IMSORGID@AdobeOrg>のCookieが生成されます。 このCookieにはECIDが含まれています。
  4. 生成されたCookie値をメモし、FPID Cookieを除くすべてのCookieをサイトから削除します。
  5. Platform Edge Networkに別のリクエストを送信します。
  6. AMCV_<IMSORGID@AdobeOrg> Cookieの値が、削除されたAMCV_ Cookieと同じECID値であることを確認します。 指定されたFPIDのcookie値が同じ場合、ECIDのシードプロセスは成功しました。

この機能について詳しくは、​ ドキュメント ​を参照してください。

recommendation-more-help
platform-learn-help-data-collection