次の方法で共有


Microsoft Entra 認証を使用して Visual Studio Code から Azure App Service へのモデル コンテキスト プロトコル呼び出しをセキュリティで保護する

この記事では、Microsoft Entra 認証を使用して、Azure App Service でホストされているモデル コンテキスト プロトコル (MCP) サーバーをセキュリティで保護する方法について説明します。 認証を有効にすると、Microsoft Entra で認証されたユーザーのみが Visual Studio Code の Copilot エージェント モードを介して MCP サーバーにアクセスできるようになります。

その他の認証方法と一般的な MCP サーバーのセキュリティの概念については、 Azure App Service でのモデル コンテキスト プロトコル サーバーのセキュリティ保護に関するページを参照してください。

[前提条件]

MCP サーバーをホストする App Service アプリ。 作成する必要がある場合は、次のいずれかのチュートリアルを参照してください。

Microsoft Entra 認証を有効にする

  1. Azure portal で、App Service アプリに移動します。

  2. 左側のメニューで、[>認証] を選択し、[ID プロバイダーの追加] を選択します。

  3. [ID プロバイダーの追加] ページで、ID プロバイダーとして Microsoft を選択します。

  4. App Service 認証設定の [クライアント シークレットの有効期限] で、有効期限 (6 か月など) を選択します。

  5. 他のすべての既定値をそのまま使用し、[ 追加 ] を選択して ID プロバイダーを作成します。

    これにより、クライアント シークレットを使用して Microsoft Entra ID に新しいアプリ登録が作成され、認証に使用するように App Service アプリが構成されます。

App Service 認証で Visual Studio Code を承認する

認証を有効にした後、MCP サーバーにアクセスするために Visual Studio Code を承認する必要があります。

  1. App Service アプリの [認証 ] ページの [ ID プロバイダー] で、作成した Microsoft プロバイダーの横にある [編集] (鉛筆アイコン) を選択します。

  2. [ ID プロバイダーの編集 ] ページの [ 追加のチェック>Client アプリケーション要件] で、[ 特定のクライアント アプリケーションからの要求を許可する] を選択します。

  3. 鉛筆ウィジェットを選択して、許可されているアプリケーションを編集します。

  4. [ 許可されたクライアント アプリケーション ] フィールドに、Visual Studio Code クライアント ID: aebc6443-996d-45c2-90f0-388ff96faa56を追加します。

  5. [ OK] を選択し、[ 保存] を選択します。

アプリの登録で Visual Studio Code を承認する

次に、API を Visual Studio Code に公開するようにアプリの登録を構成する必要があります。

  1. App Service アプリの [認証 ] ページに戻ります。

  2. [ID プロバイダー] 列で Microsoft プロバイダー を選択して、アプリ登録ページを開きます。

  3. アプリ登録ページで、左側のメニューから [管理>API をExpose] を選択します。

  4. [ 承認されたクライアント アプリケーション] で、[ クライアント アプリケーションの追加] を選択します。

  5. [ クライアント ID ] フィールドに、Visual Studio Code クライアント ID: aebc6443-996d-45c2-90f0-388ff96faa56を入力します。

  6. このスコープを承認するには、 user_impersonation スコープの横にあるチェック ボックスをオンにします。

  7. アプリケーション追加を選択します。

  8. この API で定義されているスコープで、完全なスコープ値を見つけてコピーします。 api://<app-registration-app-id>/user_impersonation のようになります。

    このスコープ値は、次のセクションで必要になります。

承認スコープを設定して保護されたリソース メタデータを有効にする

MCP サーバー承認を有効にするには、アプリ設定で承認スコープを設定して、保護されたリソース メタデータ (PRM) を構成する必要があります。 これにより、MCP クライアントは、 /.well-known/oauth-protected-resource エンドポイントを介して認証要件を検出できます。

  1. Azure portal で、App Service アプリ ページに戻ります。

  2. 左側のメニューで、 設定>Environment 変数を選択します。

  3. [ 追加] を選択して、新しいアプリケーション設定を作成します。

  4. 名前には、WEBSITE_AUTH_PRM_DEFAULT_WITH_SCOPESを入力します。

  5. [ 値] に、アプリ登録からコピーしたスコープ ( api://<app-registration-app-id>/user_impersonation) を貼り付けます。

  6. [ 適用] を選択し、もう一度 [適用 ] を選択してアプリを確認して再起動します。

    この設定により、MCP サーバー承認に必要なスコープが含まれるよう PRM が構成されます。

Visual Studio Code から接続する

これで、Visual Studio Code からセキュリティで保護された MCP サーバーに接続できます。

  1. ローカル コンピューターで Visual Studio Code を開きます。

  2. MCP 構成ファイル (mcp.json) を開くか作成します。 ワークスペース スコープ MCP 構成の場合は、ワークスペースの .vscode ディレクトリに作成します。

  3. MCP サーバー構成を追加します。

    {
      "servers": {
        "my-app-service-mcp": {
          "type": "http",
          "url": "https://<your-app-url>.azurewebsites.net/api/mcp"
        }
      }
    }
    

    <your-app-url>を実際の App Service アプリの URL に置き換えます。 アプリの既定のドメインは、Azure portal の [概要 ] ページで確認できます。 この例では、パスは /api/mcpですが、実際のパスは MCP コードによって異なります。

  4. Visual Studio Code で、コマンド パレット (macOS のCtrl+Shift+P または Cmd+Shift+P ) を開きます。

  5. 「MCP: サーバーの一覧表示」と入力し、Enter キーを押します。

  6. 一覧から MCP サーバーを選択し、[ サーバーの開始] を選択します。

  7. Visual Studio Code では、Microsoft Entra ID を使用してサインインするように自動的に求められます。 認証プロンプトに従います。

    MCP 拡張機能は、構成したスコープを使用して OAuth フローを処理し、Visual Studio Code は MCP サーバーを呼び出すために必要なアクセス トークンを取得します。

    ヒント

    予期しない認証プロンプトが表示された場合、またはエラーが発生した場合は、「 トラブルシューティング」を参照してください。

  8. 認証が完了すると、MCP サーバーが接続され、GitHub Copilot Chat エージェント モードまたは他の MCP クライアントで使用できるようになります。

接続をテストする

MCP サーバーが適切にセキュリティで保護され、アクセス可能であることを確認するには、次の手順を実行します。

  1. Visual Studio Code で GitHub Copilot Chat を開きます (macOS のCtrl+Alt+I または Cmd+Option+I )。

  2. MCP サーバーから機能を使用してみてください。 たとえば、Todos サンプルを使用している場合は、次のようになります。

    Show me all my tasks
    
  3. GitHub Copilot が MCP サーバーを正常に呼び出すと、チャットに結果が表示されます。 問題が発生した場合は、「 トラブルシューティング」を参照してください。

トラブルシューティング

Visual Studio Code で MCP サーバーを起動すると、構成が正しいかどうかを示す認証プロンプトが表示されます。

  • 正しい構成: Visual Studio Code では、 Microsoft での認証を求められます。 つまり、保護されたリソース メタデータ (PRM) が正しく構成され、Visual Studio Code によって、 /.well-known/oauth-protected-resource エンドポイントから承認サーバーとスコープが正常に検出されました。

  • 正しくない構成: Visual Studio Code では、App Service アプリの /authorize エンドポイント ( https://<your-app-url>.azurewebsites.net/authorize など) で認証するように求められます。 これは、PRM が正しく構成されていないことを意味します。 Visual Studio Code では承認サーバーと承認スコープが見つからないため、存在しない承認エンドポイントとしてアプリの URL を使用するようにフォールバックします。

正しくない認証プロンプトが表示された場合は、次のことを確認します。

  • アプリ設定 WEBSITE_AUTH_PRM_DEFAULT_WITH_SCOPES は、完全なスコープ値 api://<app-registration-app-id>/user_impersonationで正しく構成されています。
  • アプリ設定を追加した後、App Service アプリが完全に再起動しました。 再起動が完了するまでに数分かかる場合があります。

サインイン後に認証エラーが表示される場合は、次のことを確認します。

  • Visual Studio Code クライアント ID (aebc6443-996d-45c2-90f0-388ff96faa56) は、App Service 認証構成 (許可されたクライアント アプリケーション) とアプリ登録 ( API の公開で承認されたクライアント アプリケーション) の両方に追加されます。
  • アプリ設定のスコープ値は、アプリの登録で定義されているものと正確に一致します。