【ITニュース解説】Building Supabase-Like OAuth Authentication for MCP Servers

2025年09月04日に「Hacker News」が公開したITニュース「Building Supabase-Like OAuth Authentication for MCP Servers」について初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

ITニュース概要

MCPサーバー向けに、SupabaseのようなOAuth認証システムを構築する方法を紹介する。外部サービスと連携して、ユーザーが安全にログインできる仕組みを実装する過程を解説。

ITニュース解説

「Building Supabase-Like OAuth Authentication for MCP Servers」という記事は、特定のカスタマイズされたMCPサーバー、つまりMinecraft Protocolをベースにしたゲームサーバーにおいて、ユーザーが安全かつ簡単にログインできる認証システムをどのように構築するかを解説している。一般的なMinecraftゲームではMojangやMicrosoftのアカウントを使った認証が主流だが、独自のサービスやゲームを提供する際に、既存の認証システムに依存せず、もっと柔軟でセキュアな認証を導入したい場合にこの記事の技術は非常に役立つ。

このシステムの核心にあるのは「OAuth」という認証方式だ。OAuthは、ユーザーが自身のパスワードを直接サービスに教えることなく、GoogleやGitHubのような信頼できる外部サービス(これらを「IDプロバイダ」と呼ぶ)を通じて安全にログインするための仕組みである。これにより、サービス提供側はユーザーのパスワードを管理する手間やリスクを負う必要がなくなり、セキュリティが向上する。ユーザー側も、複数のサービスでパスワードを使い回すといった危険な行為を減らせるだけでなく、新しいサービスに登録する際にメールアドレスやパスワードを入力する手間が省け、ワンクリックでログインできるなど、ユーザー体験が向上するというメリットがある。

記事では、「Supabaseのような認証」と表現しているが、これはSupabaseが提供する認証機能が非常に使いやすく、目標とするシステムのイメージとして挙げられているためだ。Supabaseは、Firebaseのようなバックエンドサービスをオープンソースで提供するプラットフォームであり、データベース、認証、ストレージなどの機能を持つ。実際に認証サーバーを構築する際には、「Keycloak」というオープンソースのID・アクセス管理ソリューションが利用されている。Keycloakは、OAuth 2.0やOpenID Connectといった標準的な認証プロトコルをサポートしており、独自の認証システムを柔軟に構築・管理できる強力なツールとして広く使われている。

では、MCPサーバーでこの認証システムを利用する際の具体的な流れを見ていこう。 まず、ユーザーがMCPクライアント、つまりゲームをプレイするアプリケーションからログインボタンをクリックし、「Googleでログイン」などのオプションを選択する。これを受けて、MCPクライアントは、あらかじめ設定された認証サーバーであるKeycloakに対して、認証のリクエストを送る。このリクエストには、クライアントの識別情報や、認証成功後にユーザーをどこへリダイレクトするかといった情報が含まれる。Keycloak認証サーバーは、受け取ったリクエストに基づいて、ユーザーをGoogleなどのIDプロバイダの認証画面へ自動的に転送(リダイレクト)する。ユーザーはIDプロバイダの画面で、自身のユーザー名とパスワードを入力して認証を行う。認証が成功すると、IDプロバイダはユーザーの同意を得て、認証サーバーに特定の「認証コード」を返す。

次に、Keycloak認証サーバーは、IDプロバイダから受け取った認証コードと、自身の「クライアントシークレット」をIDプロバイダに送信する。クライアントシークレットとは、クライアントを識別するための秘密の鍵で、外部に漏れないように厳重に管理されるべきものだ。これと引き換えに、IDプロバイダは「アクセストークン」と「リフレッシュトークン」を認証サーバーに発行する。Keycloak認証サーバーは、受け取ったアクセストークンをMCPクライアントに安全な方法で渡す。このアクセストークンは、ユーザーが認証済みであることを証明する一時的な鍵のような役割を果たす。最後に、MCPクライアントは、このアクセストークンをMCPサーバーに提示して接続を試みる。MCPサーバーは、受け取ったアクセストークンが正当なものかをKeycloak認証サーバーに問い合わせたり、トークンに含まれる電子署名を検証したりして確認する。トークンが有効であれば、MCPサーバーはユーザーを認証し、ゲームへの参加を許可するという流れになる。

この一連の流れで重要なのが「アクセストークン」と「リフレッシュトークン」という二種類のトークンだ。「アクセストークン」は、リソース(この場合はMCPサーバー)へのアクセス権限を示す短い有効期限を持つトークンである。セキュリティ上の理由から、通常は数分から数時間といった比較的短い期間で期限が切れるように設定される。一方、「リフレッシュトークン」は、アクセストークンが期限切れになった際に、ユーザーが再度ログインすることなく新しいアクセストークンを取得するために使われるトークンだ。こちらはアクセストークンよりも長い有効期限を持つが、慎重に管理する必要がある。これにより、ユーザーは一度ログインすれば、一定期間は再ログインの手間なくサービスを利用し続けられる利便性が提供される。

このような認証システムを構築する上で、セキュリティは最も重要な要素である。「クライアントシークレット」はサーバー側で厳重に管理し、クライアント側には決して露出させないようにするべきだ。リダイレクトURIは、認証後にユーザーが送られるべきURIを厳格に指定し、不正なリダイレクトを防ぐ。また、すべての通信はHTTPSなどの暗号化されたチャネルを通じて行い、データの盗聴を防ぐ必要がある。トークンの有効期限を適切に設定し、期限切れになったトークンを速やかに無効化するメカニズムも重要だ。これらの対策を講じることで、安全で信頼性の高い認証システムを構築できる。

この記事で紹介されているSupabaseライクなOAuth認証システムは、特定のMCPサーバー向けに、外部のIDプロバイダを活用して安全かつ便利なログインを実現する方法を示している。システムエンジニアを目指す上で、OAuthのような標準的な認証プロトコルの仕組みを理解し、Keycloakのようなツールを使って実際に認証サーバーを構築する経験は非常に貴重である。ユーザーの利便性とセキュリティを両立させるための設計思想や、クライアントとサーバー間の連携、トークンの管理といった具体的な実装技術は、将来どんなシステム開発に携わるにしても役立つ基本的な知識となるだろう。

【ITニュース解説】Building Supabase-Like OAuth Authentication for MCP Servers | いっしー@Webエンジニア