Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerMCP Connector により MCP クライアントのサーバー側認証が可能になります。これらの例では、ステートフルなサーバー送信イベント (SSE) 接続と On New Session Listener ソースを使用して、OAuth アクセストークンの検証を含むカスタムセキュリティロジックを実装します。
MCP 仕様ではセッション管理を強調し、SSE 接続では状態を維持します。On New Session Listener ソースでは、サーバー側認証を実装するための重要なポイントが提供されます。この例は、このリスナーでトリガーされる基本フローを示しており、自動生成された sessionId と、接続しているクライアントにより送信された HTTP ヘッダーへのアクセス方法を示しています。これらはその後、カスタム認証ロジックで使用できます。
これは、On New Session Listener ソースを使用するサンプルフローです。
<flow name="onNewSession">
<mcp:on-new-session-listener config-ref="MCP_Server"/>
<logger level="INFO" message="#['new session id: $(payload.sessionId)']"/>
<logger level="INFO" message="#['http headers: $(payload.additionalProperties)']"/>
</flow>
このフローは、新しいクライアントが MCP サーバーアプリケーションに接続するたびに実行されます。ペイロードには自動生成された sessionId と additionalProperties が含まれています。SSE 接続種別を使用する場合、これらは HTTP リクエストヘッダーにマッピングされます。
この時点で独自の認証ロジックを実装できます。たとえば、#[payload.additionalProperties.authorization] 式で HTTP 認証ヘッダーを取得し、後で検証することができます。
必要に応じて、Mule OAuth 2.0 プロバイダーを使用して、OAuth アクセストークンの実装と検証を行うことができます。
このサンプルフローでは、OAuth プロバイダーを使用してアクセストークンが検証され、トークンが無効な場合はセッションが拒否されます。
<flow name="onNewSession">
<mcp:on-new-session-listener config-ref="MCP_Server">
<mcp:rejection rejectWithStatusCode="#[vars.rejectStatusCode]" rejectWithMessage="#[vars.rejectMessage]" />
</mcp:on-new-session-listener>
<oauth2-provider:validate-token scopes="#[['PUBLIC_READ']]" config-ref="external-oauth2-provider" accessToken="#[payload.additionalProperties.authorization]"/>
<error-handler>
<on-error-continue type="OAUTH2-PROVIDER:TOKEN_UNAUTHORIZED">
<set-variable variableName="rejectWithStatusCode" value="401" />
<set-variable variableName="rejectWithMessage" value="#[error.description]" />
</on-error-continue>
</error-handler>
</flow>
次のいずれかに該当する場合、新しいセッションは拒否されます。
rejectWithStatusCode パラメーターに null 以外の値 (または null 以外の値に解決する式) が割り当てられている、または
フローが失敗した場合、状況コード 500 が報告される
この例では、状況コードが 401 - UNAUTHORIZED コードにマッピングされるように OAuth 検証エラーが処理されます。
クライアントでは、認証パラメーターは、HTTP Connector と OAuth Module (これもプロジェクトに追加されている場合) で定義されたすべての認証戦略を受け入れます。
Call Tool などの操作は追加のプロパティも受け入れます。SSE の場合、このプロパティはリクエストヘッダーにマッピングされます。これにより、API キーなどのカスタム認証ヘッダーを追加することができます。次に例を示します。
<mcp:call-tool config-ref="MCP_GMaps_Client" toolName="maps_geocode">
<mcp:arguments ><![CDATA[#[output application/java
---
{
address: payload.address
}]]]></mcp:arguments>
<mcp:additional-properties ><![CDATA[
#[output application/java
---
{
"API_KEY" : p('api.key')
}]]]>
</mcp:additional-properties>
</mcp:call-tool>
コネクタを設定したら、例を試すことができます。