Spring AI で MCP サーバーを保護する ノート
RSS春季

Spring AI で MCP サーバーを保護する

モデルコンテキストプロトコル(MCP)は、AIの世界で急速に進化している標準です。Spring AIは、MCPのセキュリティニーズに対処するために、新しいプロジェクト「mcp-security」を立ち上げました。このプロジェクトでは、OAuth 2とAPIキーを使用してMCPサーバーをセキュアにするためのサポートを提供します。MCPの最新バージョンの仕様は、より広いエコシステムのサポートを獲得しています。 HTTPで公開されるMCPサーバーは、MCPの仕様に従って、OAuth 2アクセストークンを使用してセキュアにする必要があります。MCPサーバーへの呼び出しには、Bearerトークンを含むAuthorizationヘッダーが必要です。MCPサーバーは、トークンの取得に使用する信頼できる認証サーバーを明示的に宣言する必要があります。Spring AIは、OAuth 2リソースサーバーとシームレスに統合され、OktaやGitHubなどの既存の認証サーバーを使用してアプリケーションを利用できるようにします。 OAuth 2を使用してMCPサーバーをセキュアにするには、ユーザーは、Spring AIアプリケーションに特定の依存関係を追加する必要があります。これらの依存関係により、OAuth 2リソースサーバーの機能とMCP固有のセキュリティ構成が可能になります。アプリケーションのプロパティは、MCPサーバーの名前、プロトコル、および認証サーバーのURLを構成するために使用されます。サンプルトゥールは、認証されたJWTトークンからユーザー情報を取得する方法を示しています。 セキュリティ構成クラスの例、McpServerSecurityConfigurationは、すべてのリクエストに対する認証を強制し、MCPサーバー用のOAuth 2を構成する方法を示しています。この設定により、MCPクライアントが動的に認証サーバーを発見して利用できるようになります。Spring Authorization Serverも、OAuth 2のダイナミッククライアント登録とリソースインジケーターをサポートするMCPと互換性のあるように構築できます。 OAuth 2が義務付けられたセキュリティメカニズムである一方で、MCPの仕様は、OAuth 2インフラストラクチャのない環境用にAPIキーベースの認証もサポートしています。mcp-securityプロジェクトは、カスタムヘッダーを使用して認証を可能にすることで、APIキーのセキュリティを容易にします。これには、Spring Security用の特定の依存関係を追加し、APIキーリポジトリを構成する必要があります。MCPサーバーは、通常、X-API-keyヘッダーとして送信される提供されたAPIキーを検証します。 mcp-securityプロジェクトは、MCPのセキュリティを向上させ、サーバー側とクライアント側のセキュリティの両方に対するドキュメントとサンプルを提供します。セキュリティ機能をさらに強化するために、貢献とフィードバックが奨励されています。このプロジェクトは、Spring AIとSpring Security内でのクライアント側のMCPセキュリティにもサポートを提供します。
CdXz5zHNQW_nl1kdOfOBY.png