Skip to main content
AdCP では、公開操作と認証必須の操作を使い分ける段階的な認証モデルを採用しています。

認証が必要な場面

公開操作(認証不要)

探索や評価のため、以下は認証なしで利用できます:
  • get_adcp_capabilities - エージェントの機能、ポートフォリオ、対応機能の取得
  • list_creative_formats - 利用可能なクリエイティブ形式の閲覧
  • get_products - 在庫の探索(認証なしでは結果が限定)
理由: パブリッシャーは、ビジネス関係を結ぶ前に購入者に自社の提供内容を知ってもらいたいため。 重要: 未認証の get_products は以下のように制限される場合があります:
  • 一部のカタログ(標準商品)のみ
  • 価格情報や CPM の非表示
  • カスタム商品なし
  • 汎用的なフォーマット対応のみ

認証が必要な操作

以下の操作には有効な認証情報が必要です:
  • get_products (full access) - Complete catalog with pricing and custom products
  • create_media_buy - Create advertising campaigns
  • update_media_buy - Modify existing campaigns
  • sync_creatives - Upload creative assets
  • list_creatives - View your creative library
  • get_media_buy_delivery - Monitor campaign performance and metrics
  • provide_performance_feedback - Submit optimization signals
理由: 金銭が絡む取引、機密データへのアクセス、稼働中キャンペーンの変更が含まれるため。

認証方式

AdCP は MCP 仕様に沿った Bearer トークン認証を使用します:
Authorization: Bearer <token>
トークンの種類:
  • Opaque tokens: サーバーで検証されるプリンシパル紐づけ文字列
  • JWT tokens: クレームを含む自己完結型トークン

JWT のクレーム

When using JWT tokens, include these standard claims:
{
  "sub": "principal_123",
  "exp": 1706745600,
  "iat": 1706742000
}
認可のために追加クレームを求める sales agent もあります。

プリンシパルモデル

interface Principal {
  principal_id: string;
  permissions: {
    products: Permission[];
    media_buys: Permission[];
    creatives: Permission[];
    reports: Permission[];
  };
}

type Permission = 'read' | 'write' | 'delete' | 'approve';

プロトコル設定

MCP と A2A は共通の認証ヘッダーを使用します。クライアントを次のように設定します:
{
  "auth": {
    "type": "bearer",
    "token": "<your_token>"
  }
}
クライアントライブラリが Authorization: Bearer <token> ヘッダーの付与を処理します。

MCP クライアントの設定

MCP プロトコルでは、認証は HTTP ヘッダーの手動付与ではなくトランスポート層で処理されます。

MCP クライアントライブラリの利用

The recommended approach is to use an MCP client library:
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';

const transport = new StreamableHTTPClientTransport(
  new URL('https://test-agent.adcontextprotocol.org/mcp'),
  {
    requestInit: {
      headers: {
        'Authorization': 'Bearer YOUR_TOKEN_HERE'
      }
    }
  }
);

const client = new Client({ name: 'my-client', version: '1.0.0' });
await client.connect(transport);

よくある誤り: 生の HTTP ヘッダー追加

生の HTTP リクエストに認証ヘッダーを付けようとするのは誤りです:
# This won't work for MCP endpoints
GET /mcp HTTP/1.1
Authorization: Bearer YOUR_TOKEN
MCP は HTTP 上のストリーミングプロトコルです。認証は、プロトコル交渉とメッセージフレーミングを担う MCP クライアントのトランスポート層で設定する必要があります。

認証トラブルシュート

“authentication required” が出る場合:
  1. MCP クライアントライブラリを使っているか確認 - 生の HTTP 呼び出しをしていないか
  2. トークンの渡し方を確認 - トランスポート設定に渡しているか
  3. 公開テストエージェントで試験 - カスタムエージェント前に動作確認
  4. プロトコルバージョンを確認 - クライアントとサーバーの互換性を確保

認証情報の取得

アカウント開設フロー

認証が必要な操作を行うには、各 sales agent とのアカウント開設が必要です:
  1. Sales agent を特定: パブリッシャーの adagents.json から発見
  2. 営業窓口に連絡: エージェントの営業/提携チームに問い合わせ
  3. オンボーディング: 企業情報の提供、契約締結、課金設定
  4. 認証情報を受領: API キーまたは OAuth クライアント資格情報を取得
Note: 各 sales agent は独立してアカウントを管理します。エージェントごとに別の認証情報が必要です。

動的クライアント登録(オプション)

Some sales agents support OAuth 2.0 dynamic client registration:
POST /oauth/register
Content-Type: application/json

{
  "client_name": "Your Company Name",
  "redirect_uris": ["https://yourapp.com/callback"],
  "grant_types": ["authorization_code", "refresh_token"],
  "scope": "adcp:products adcp:media_buys adcp:creatives"
}
動的登録に対応しているかは、sales agent のドキュメントや adagents.json を確認してください。

アグリゲーションプラットフォーム

複数の sales agent との認証情報や関係を一括管理するアグリゲーションプラットフォーム(例: Scope3)の利用を検討してください。これにより次が簡素化されます:
  • 認証情報管理
  • 金銭的なやり取り
  • 契約手続き
  • コンプライアンス監視

エラーレスポンス

保護された操作への未認証リクエスト

{
  "error": {
    "code": "AUTH_REQUIRED",
    "message": "Authentication required for this operation"
  }
}

無効または期限切れの認証情報

{
  "error": {
    "code": "AUTH_INVALID",
    "message": "Invalid or expired credentials"
  }
}

権限不足

{
  "error": {
    "code": "INSUFFICIENT_PERMISSIONS",
    "message": "Principal does not have required permissions for this operation"
  }
}

ベストプラクティス

  1. 安全な保管: 環境変数やシークレットマネージャーで保護
  2. ローテーション: 認証情報のローテーションポリシーを実装
  3. スコープ最小化: 必要最小限の権限のみ要求
  4. トークン更新: JWT の自動リフレッシュを実装
  5. Error Handling: Handle authentication errors gracefully with retry logic

Testing Authentication

Use the public test agent to validate your authentication setup:
{
  "agent_uri": "https://test-agent.adcontextprotocol.org/mcp",
  "protocol": "mcp",
  "auth": {
    "type": "bearer",
    "token": "1v8tAhASaUYYp4odoQ1PnMpdqNaMiTrCRqYo9OJp6IQ"
  }
}
See Testing & Development Guide for complete testing capabilities including dry run mode and time simulation.