Cloudflare Access でゲートウェイを保護します。ユーザーはリクエストを送る前に、ID プロバイダーで認証します。AI Gateway を Access の背後に置くと、AI トラフィックを ID に基づいて制御できます。ゲートウェイに到達できるユーザーを決め、各リクエストを検証済みユーザーに紐づけ、ユーザー単位で利用を管理できます。独自の認証層を作ったり、クライアントアプリからユーザー ID を渡したりする必要はありません。
AI Gateway を Access の背後に置くには、先にゲートウェイへ カスタムドメインを設定 し、アカウントで Cloudflare Access を有効にしておきます。
カスタムドメインへのリクエストに有効な Cloudflare Access JWT が含まれると、AI Gateway はその Access JWT をリクエストの認証情報として受け付けます。そのリクエストでは、クライアントは AI Gateway トークンを送る必要はありません。
AI Gateway は、検証済みの Access ユーザー ID をリクエストメタデータに cf.user_id として追加します。この値は Access JWT の sub クレームであり、ユーザーのメールアドレスではありません。認証済みユーザーでログ、分析、利用額をフィルタできます。
AI Gateway は、上流プロバイダーへリクエストを転送する前に、Access JWT や AI Gateway の認可ヘッダーなど、Cloudflare 専用の認証情報を取り除きます。
カスタムドメインを Access で保護すると、そのドメインへのリクエストはすべて Access ポリシーを通過する必要があります。有効な Access トークンがなく、AI Gateway トークンだけを含むリクエストは、ゲートウェイに届く前に Access でブロックされます。既存の連携は Access 経由で認証するよう更新するか、ゲートウェイトークンのトラフィックは Access で保護されていないデフォルトの gateway.ai.cloudflare.com エンドポイントへ送り続けます。
- 保護するゲートウェイに カスタムドメインを設定 します。
- Cloudflare ダッシュボード ↗ で AI > AI Gateway を開きます。
- カスタムドメインを設定したゲートウェイを選びます。
- Access タブを開き、ゲートウェイで Cloudflare Access を設定します。
- ゲートウェイを呼び出せるユーザーを定義する Access ポリシーを追加します。
Access タブから設定すると、Access アプリケーションが自動で構成されます。コーディングエージェントやブラウザー以外のクライアントは、Access トークンを bearer トークンとして送って認証できます。
設定後、ユーザーは Access で認証してからカスタムドメインへリクエストできます。有効な Access ユーザー subject を持つリクエストには、AI Gateway メタデータに cf.user_id が含まれます。
ユーザーが Access で認証したあと、パスにアカウント ID やゲートウェイ ID を含めず、カスタムドメインへリクエストを送ります。
curl -X POST "https://ai.example.com/openai/v1/chat/completions" \
--header "Content-Type: application/json" \
--data '{
"model": "gpt-4.1-mini",
"messages": [
{
"role": "user",
"content": "What is Cloudflare?"
}
]
}'ブラウザー以外のクライアントからカスタムドメインを呼ぶ場合は、Cloudflare Access が対応するヘッダーまたは Cookie 形式で Access トークンを含めます。たとえば、cloudflared access curl はコマンドラインリクエスト向けに Access トークンを送れます。
コーディングエージェントについては、Coding agents のエージェント別セットアップを参照してください。例: Claude Code と OpenAI Codex。
cf.user_idは、空でないユーザー subject を持つ有効な Access JWT を AI Gateway が受け取った場合にだけ追加されます。- サービストークンのリクエストには
cf.user_idは含まれません。個別の Access ユーザーを表さないためです。 cf.で始まるメタデータキーは指定できません。これらのキーは予約済みで、保存されません。