オーディエンス管理をサードパーティに委任する

権限ポリシーを使用してオーディエンス管理を制御するか、.well-known 権限 URL を設定してサードパーティに委任する方法について説明します。

joinAdInterestGroup() の呼び出しコンテキストのオリジンは、インタレスト グループ オーナーのオリジンと一致している必要があります。そのため、インタレスト グループ オーナーのオリジンが現在のドキュメント(独自のインタレスト グループを持つウェブサイトなど)と一致しない限り、joinAdInterestGroup() は iframe(DSP など)から呼び出す必要があります。

joinAdInterestGroup() に次の権限を許可する必要があります。

つまり、dsp.example.com に権限を付与しない限り、malicious.example から dsp.example.com が所有するインタレスト グループの joinAdInterestGroup() を呼び出すことはできません。

アクセスしたサイトからの権限

同じオリジンまたはクロスオリジンから権限を付与できます。

デフォルトでは、アクセスしたサイトと同じオリジン(つまり、現在のページの最上位フレームと同じオリジン)からの joinAdInterestGroup() 呼び出しに権限が付与されます。サイトは join-ad-interest-group 権限ポリシー ヘッダーを使用して joinAdInterestGroup() の呼び出しを無効にできます。

クロスオリジンの joinAdInterestGroup()(現在のページとは異なるオリジン)の呼び出しが成功するのは、アクセス先のサイトで、クロスオリジンの iframe からの joinAdInterestGroup() の呼び出しを許可する権限ポリシーが設定されている場合に限られます。

インタレスト グループのオーナーからの許可

インタレスト グループのオーナーの権限は、インタレスト グループのオーナーと同じオリジンの iframe から joinAdInterestGroup() を呼び出すことで、暗黙的に付与されます。たとえば、dsp.example.com iframe は、dsp.example.com が所有するインタレスト グループに対して joinAdInterestGroup() を呼び出すことができます。

基本的に、joinAdInterestGroup() は所有者のドメインのページまたは iframe で実行するか、.well-known の URL のリストを使用して提供される他のドメインに委任できます。

ドメインにアクセスしたフレームが、所有者の異なるインタレスト グループの joinAdInterestGroup()leaveAdInterestGroup()、または clearOriginJoinedAdInterestGroups() を呼び出すと、ブラウザは URL https://owner.domain/.well-known/interest-group/permissions/?origin=frame.origin を取得します。ここで、owner.domain はインタレスト グループを所有するドメイン、frame.origin はフレームの生成元です。フェッチでは、メソッドを呼び出したフレームのネットワーク パーティション キーを使用して、認証情報省略モードを使用します。返された Promise を通じてクロスオリジン データが予期せず漏洩しないように、フェッチでは cors モードが使用されます。取得するレスポンスは JSON MIME タイプで、次の形式である必要があります。

{ "joinAdInterestGroup": true/false,
  "leaveAdInterestGroup": true/false
}

パスのオリジンに、リクエストの送信先ドメインが所有するインタレスト グループに参加または脱退する権限があるかどうかを示す。不足している権限は false とみなされます。lifetimeMs を 0 に設定して navigator.joinAdInterestGroup() を呼び出すと、実質的にインタレスト グループから離れるため、joinAdInterestGroup: true を使用すると、leaveadInterestGroup がない場合や false に設定されている場合でも、オリジンによる navigator.leaveAdInterestGroup() の呼び出しが許可されます。leaveAdInterestGroup()clearOriginJoinedAdInterestGroups() の両方が leaveAdInterestGroup 権限をチェックすることに注意してください。