https://example-client.com/mcp-metadata.json) 。CIMD の URL はアプリケーションのクライアント ID であり、ドメインの所有権を証明することで、信頼できるテナント管理者のみがアプリケーションを登録できるようにします。
CIMD の URL からアプリケーションをインポートすると、Auth0 はメタデータを取得、検証、保存し、そのアプリケーションを CIMD クライアントとして登録します。Auth0 はこれらの設定を保持しますが、ホストされている CIMD が引き続き正確な情報源となります。メタデータの更新は、手動更新 を通じて同期されます。このアプリケーション登録プロセスは、手動CIMD登録と呼ばれます。
手動CIMD登録を使用して登録できるのは、サードパーティアプリケーション のみであり、これらには強化されたセキュリティ制御 が適用されます。登録後は、Auth0 で CIMD クライアントを設定し、サードパーティアプリケーションとして扱います。
CIMD クライアントは、テナントの Create Permissive Third-Party Clients by Default 設定にかかわらず、常に
third_party_security_mode: "strict" で登録されます。CIMD クライアントでは permissive モードを使用できません。strict モードのサードパーティアプリケーションはルールをサポートしません。また、テナントに有効なルールがある場合、CIMD クライアントのログインフローは失敗します。ルールを使用している場合は、CIMD クライアントを登録する前にActions に移行してください。主な利点
- 漏えいのおそれがある共有の対称シークレットではなく、非対称暗号方式 (公開鍵/秘密鍵) を使用します。
- アプリケーション所有者がCIMD内でクライアントメタデータを直接管理し、Auth0はそれらの更新を取得して保存するだけです。
- クライアントIDには、安全なHTTPSドメインでホストされるCIMD URLが使用されるため、監査ログ上で人が判読できる所有権の証明として機能します。
CIMDクライアントを含むサードパーティアプリケーションは、Organizationsに対応していません。サードパーティアプリケーション向けのOrganizationsサポートは、今後のリリースで導入される予定です。
CIMDクライアント向けのレート制限は、今後のリリースで導入される予定です。CIMDクライアントごとに個別のレート制限を設定できるほか、テナント内のすべてのCIMDクライアントの集約トラフィックに対して共通のレート制限も設定できるようになります。
利用例
- MCPクライアント: CIMDへの登録は、デプロイごとに1回だけ必要です。そのデプロイ内のすべてのインスタンスで、同じ登録認証情報を使用します。Auth0がMCPクライアントとサーバーをどのように保護するかについては、MCPの認証をご覧ください。
- サードパーティ連携: 組織に代わってユーザーを認証する、パートナーアプリケーション、SaaSプラットフォーム、外部サービスです。これらのアプリケーションは独自のクライアントメタデータと暗号鍵を管理するため、シークレットを共有せずに、個別に更新や鍵のローテーションを行えます。
CIMD の例
"token_endpoint_auth_method": "none" を指定したパブリック MCP クライアントの CIMD の例です:
https://example-client.com/mcp-metadata.json
仕組み
フェーズ1: 登録
- アプリケーションの作成: テナント管理者は、次のいずれかの方法でAuth0にCIMDアプリを作成します。
- Auth0 DashboardでImport from URLを選択する
/registerエンドポイントにPOSTリクエストを送信し、external_client_idを指定する
- メタデータの取得: Auth0はクライアントのドメインにGETリクエストを送信し、CIMD (client.json) を取得します。
- セキュリティ検証: Auth0はCIMD URL 検証ルールに基づいてCIMD URLを特定して検証し、さらにCIMD検証ルールに基づいてCIMDを検証します。その際、
external_client_idがCIMD URLと一致していることなども確認します。 - 永続化: 検証が完了すると、Auth0はクライアントメタデータをデータベースに保存します。
- 確認: Auth0は成功レスポンスを返し、アプリケーションはAuth0にCIMDクライアントとして正常に登録されます。
- ユーザー起点のタスク: ユーザーが、アプリケーションによる API へのアクセスを必要とするタスクを開始します。
- 認可リクエスト: アプリケーションは Auth0 Authorization Server にリクエストを送信し、その際
client_idとして自身の CIMD URL を渡します。 - クライアントの特定: Auth0 Authorization Server はデータベースを参照し、指定された URL (
client_id) に対応する保存済みのクライアント設定 (external_client_id) を特定します。 - ユーザーの同意: Auth0 はユーザーに同意画面を表示し、CIMD メタデータから取得した
client_nameを使ってアプリケーションを識別します。 - リダイレクト: ユーザーが同意すると、Auth0 は認可コードを付与してユーザーをアプリケーションにリダイレクトします。
- コード交換: アプリケーションはトークンエンドポイントで認可コードを access token と交換します。
- 認可完了: Auth0 Authorization Server は、
client_idが CIMD URL に設定された access token を返します。これにより、アプリケーションはユーザーに代わって API にアクセスできるようになります。
前提条件
テナント設定
- CIMD サポートを有効にする: テナント設定で Client ID Metadata Document Registration トグルを有効にすると、Auth0 Authorization Server のメタデータに CIMD サポートが示されます。これにより、クライアントは接続時にこの機能を自動的に検出できるようになります。
- Settings > Advanced に移動し、Settings セクションまでスクロールします。
- Client ID Metadata Document Registration をオンにします。
- Resource Parameter Compatibility Profile (任意) : MCP クライアントでは、テナント設定でこのプロファイルを有効にすることを推奨します。これにより、
audienceが指定されていない場合にresourceパラメーターを確認して、認可サーバーがリソース固有のリクエスト (RFC 8707) を処理できるようになります。
サポートされているクライアントタイプ
- アプリケーションタイプ: ネイティブアプリケーションまたは通常の Web アプリケーションである必要があります。
- サードパーティアプリケーション: サードパーティアプリケーション (
is_first_party: false) である必要があり、強化されたセキュリティ制御 が適用されます。登録後、Auth0 で CIMD クライアントを設定 し、サードパーティアプリケーションとして構成してください。
サポートされる認証方式
client_secret_post、client_secret_basic、client_secret_jwt など、共有対称シークレットに基づく認証方式は使用できません。
クライアントがパブリックかコンフィデンシャルかに応じて、Auth0 は CIMDクライアントに対して次の認証方式をサポートしています。
- パブリッククライアント:
- トークンエンドポイントではクライアント認証は不要です。クライアントメタデータの
token_endpoint_auth_methodをnoneに設定してください - 認可フローでは Proof Key for Code Exchange (PKCE) を使用する必要があります
- トークンエンドポイントではクライアント認証は不要です。クライアントメタデータの
- コンフィデンシャルクライアント:
- Private Key JWT 認証 のみサポートされています。クライアントメタデータの
token_endpoint_auth_methodをprivate_key_jwtに設定してください - 公開鍵をホストするための
jwks_uriを指定します。jwks_uriは、CIMD URL と完全に同一のオリジン (スキーム、ホスト、ポート) である必要があります。詳しくは、CIMD JSON 検証ルール をご覧ください。
- Private Key JWT 認証 のみサポートされています。クライアントメタデータの
Private Key JWT 認証 は Enterprise のお客様のみご利用いただけます。Enterprise プランの詳細については、Pricing をご確認いただくか、Auth0 Sales にお問い合わせください。
Private Key JWT 認証 を使用する CIMDクライアントは、新しい一意の
kid を持つ新しい鍵ペアを生成して鍵ローテーションを実装する 必要があります。手動で CIMD を使用してアプリケーションを登録する
- Auth0 Dashboard
- Management API
Auth0 Dashboard を使用して手動で CIMD を使用するアプリケーションを登録するには、次の手順に従います。
- Applications > Applications に移動します。
- Create Application > Import from URL を選択します。
- CIMD URL を入力し、Preview を選択します。Auth0 は CIMD URL 検証ルール に従って CIMD URL を検証します。
- CIMD URL が有効な場合、Auth0 は CIMD を読み込んで CIMD JSON 検証ルール に従って検証します。クライアントメタデータをプレビューし、検証エラーがあれば対処してください。
- Create を選択します。
CIMDクライアントを設定する
is_first_party: false) にのみ制限されています。CIMDクライアントを登録したら、Auth0でサードパーティアプリケーションとして設定します。
- APIアクセスポリシーを設定する: APIへのアクセスを承認するためのクライアントグラントを作成します
- 接続をドメインレベルに昇格する: ユーザーを認証できるように、接続をドメインまたはテナントレベルで利用できるようにします
クライアントメタデータを更新する
app_type と grant_types を更新します。CIMD のフィールドの詳細については、CIMD JSON 検証ルール を参照してください。
Auth0 Dashboard で次の操作を行います。
- Applications > Applications に移動し、CIMD クライアントを選択します。
- 右上の Refresh Client Metadata を選択します。
- Refresh Preview を選択して、CIMD 内の最新のクライアントメタデータをプレビューします。検証の警告やエラーがあれば確認します。
- Save を選択します。
CIMDクライアントを取得する
GET リクエストを /v2/clients/{clientId} エンドポイントに送信します。{clientID} は、CIMDクライアントに割り当てられた Auth0 生成のクライアント ID です。
external_client_id もしくは CIMD URL を、/v2/clients エンドポイントのクエリパラメータとして渡します:
external_client_id、name、callbacks、token_endpoint_auth_method などのフィールドを含む CIMD クライアント設定を含んだレスポンスを返します。
CIMD クライアントを更新する
CIMD クライアントを更新するには、
/v2/clients/{clientId} エンドポイントに PATCH リクエストを送信します。ここで、{clientID} は CIMD クライアントに割り当てられた Auth0 生成のクライアント ID です。
CIMD URL 検証ルール
CIMD JSON 検証ルール
- 未対応のプロパティ: Auth0 は、マッピング時に未対応のプロパティを無視し、検証レスポンスで警告として報告します。
- インライン JWKS:
jwks_uriの代わりにインラインのjwksオブジェクトを指定することはサポートされておらず、invalid_client_metadataエラーが発生します。 - 秘密鍵:
jwks_uriを介して取得した JWKS に秘密鍵情報 (dパラメータ) が含まれている場合は、拒否されます。 - 取得時のセキュリティ: CIMD ドキュメントと
jwks_uriには、それぞれ 5KB と 12KB のサイズ制限があり、どちらも HTTP リダイレクトには対応していません。
セキュリティ上の考慮事項
private_key_jwt 認証のための CIMD クライアントの鍵ローテーション
kid を持つ新しい鍵ペアを生成してください。秘密鍵をローテーションし、同じ kid のまま新しい鍵マテリアルで JWKS を更新すると、Auth0 の CIMD 登録では新しい鍵は拒否され、古い鍵が保持されます。これは、鍵ローテーションでは新しい鍵を明示的に追加する必要があり、気付かないうちに置き換えられることはないようにするためです。
鍵をローテーションしたら、Auth0 で鍵登録も忘れずに更新してください。詳しくは、署名鍵のローテーション を参照してください。