[Alpha]{class="badge informative"}

認証

Server SDKは、お客様が管理する信頼できる環境で実行されます。 このため、ブラウザーが使用する未認証のエンドポイントではなく、認証済みのEdge Network Server APIにイベントを送信します。 認証済みリクエストを使用すると、Edge Networkはサーバーが送信するデータを信頼できます。

認証するには、SDKにAdobe Developer Consoleから​ OAuth Server-to-Server資格情報 ​が必要です。 必要に応じてedgeCredentials オプションを使用してconfigureに渡します。 SDKは、資格情報を使用してAdobeからアクセストークンをリクエストし、認証された各リクエストにトークンを追加します。

OAuth サーバー間資格情報の作成 create-credential

資格情報を作成するには、組織内のAdobe Experience Platformの開発者およびユーザーである必要があります。 次の手順を実行します。

  1. Adobe Developer Consoleにログインし、組織を選択します。

  2. プロジェクト​に移動して、既存のプロジェクトを選択するか、新しいプロジェクトを作成します。

  3. Experience Platform API​をプロジェクトに追加し、認証タイプとして​ OAuth Server-to-Server ​を選択します。

  4. 資格情報の製品プロファイルを選択します。

  5. 資格情報のページで、次の値をコピーします。

    • クライアント 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

認証済みサーバーAPIを使用するのはsendEventのみです。 Server APIは、ID要求と同意要求に対応するエンドポイントを提供していないため、これらのメソッドは、Web SDKと同じように、未認証のリクエストを標準のEdge Network エンドポイントに送信します。 SDKがエンドポイントを選択します。

メソッド
エンドポイント
Authenticated
sendEvent
server.adobedc.net
はい
getIdentity
edgeDomainで設定されたドメイン
×
appendIdentityToUrl
SDKがIDをリクエストする必要がある場合は、edgeDomainで設定されたドメイン
×
setConsent
edgeDomainで設定されたドメイン
×

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を呼び出す場合、またはWeb SDKと同じデータストリームにブラウザーページからデータを送信する場合に使用します。
  • 認証済みのみ:認証済みの要求のみを受け入れます。 この設定は、このデータストリームでsendEvent以外を呼び出さない場合にのみ使用してください。

イベントにプライマリ IDを含める primary-identity

Edge Networkは、サーバー間リクエストで訪問者のブラウザーからCookieを読み取ることはできません。 このため、サーバー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 Identity Management サービス(IMS)からアクセストークンをリクエストします。 その後、トークンの有効期限が5分前になるまでトークンを再利用します。 インスタンスが作成するforRequest ハンドルごとに、1つのキャッシュ トークンを共有します。 トップレベルのインスタンスは、独自のトークンを個別にキャッシュします。これは、イベントを直接送信する場合にのみ重要です。 アクセストークンは約24時間有効なので、ビジーなサーバーは訪問者ごとに1回ではなく1日に1回ほど新しいトークンをリクエストします。

複数のリクエストが同時にトークンを必要とする場合、1つのトークンリクエストを共有します。 例えば、クライアントの秘密鍵が間違っているなどの理由でトークン要求が失敗した場合、トークンをトリガーしたメソッドは、メッセージにFailed to acquire an IMS access tokenが含まれるエラーで拒否されます。

資格情報の保護 protect-credentials

クライアントシークレットは、組織のデータへのアクセスを許可します。 次の手順に従います。

  • クライアント ID、クライアント シークレット、およびスコープを環境変数またはシークレット マネージャーに保存します。 ソースコントロールにはコミットしないでください。
  • クライアントの秘密鍵をブラウザーに絶対に送信しない。 Server SDKは、訪問者がダウンロードまたは検査できないサーバーコードでのみ使用します。
  • クライアントの秘密鍵が公開されたと思われる場合は、Adobe Developer Consoleでローテーションします。

SDKはクライアント秘密鍵を墨消しし、[REDACTED]に置き換えます。デバッグログと、getLibraryInfoが返す設定で書き換えます。

recommendation-more-help
experience-platform-help-collection