Open4
MCPと認証
Anthropic公式リファレンス
Implementations using an HTTP-based transport SHOULD conform to this specification.
HTTPベースならこの仕様に従う必要がある
保護されたMCP サーバーは、アクセス トークンを使用して保護されたリソース要求を受け入れ、応答できるOAuth 2.1 リソース サーバーとして機能します。>
リソースサーバーなので、MCPサーバーは認証情報を保持するわけではない。
RFC 7591 - OAuth 2.0 Dynamic Client Registration Protocol
RFC 8414 - OAuth 2.0 Authorization Server Metadata
RFC9728 OAuth 2.0 Protected Resource Metadata
OAuth 2.0 Device Flow
認証方法
とりえあえずChatGPTに考えてもらった方法
ブラウザをユーザーが開いて認証する
Device Flow(デバイスコード方式)
- MCPクライアントで「認証開始」(MCPサーバーのツール)を実行し、表示された 認証URL と ユーザーコード を確認する。
- ユーザーが任意のブラウザで 認証URL を開き、ユーザーコード を入力してログインする。
- MCPクライアントで「認証状況の確認」を実行する(ユーザーが指示する)。結果が pending なら、数秒待って再度「認証状況の確認」を実行する。
- 状態が approved になったら、MCPクライアント側で access_token / refresh_token を受け取り、ローカルの安全なストアに保存する。
- 以降、API 呼び出し時に access_token を付与(期限が近づいたら refresh_token で更新)。
PKCE + 手動コード入力(OOB風)
- MCPクライアントで「認可URLの発行」(ツール)を実行し、表示された 認可URL を確認する。
- ユーザーが任意のブラウザで 認可URL を開き、ログインする。
- 認可完了画面に表示される 確認コード(短い数字/文字列)をユーザーが控える。
- MCPクライアントで「確認コードの交換」を実行し、確認コード を入力して access_token / refresh_token を受け取る。
- 受け取ったトークンはローカルの安全なストアに保存し、以降の API 呼び出しで使用(期限管理は同様)。
streamableHTTPのサンプル