認可と認証
- SSOベースのサインイン: ユーザーは、OAuth 2.0を使用してIAMまたはシングル・サインオン(SSO)を介して認証されます。
- ユーザーごとの認可:アクセスは、ユーザーのグループ・メンバーシップおよび割り当てられたアプリケーション・ロールに基づいて強制されます。
- 短命トークン: MCPクライアントは、短命アクセス・トークンを使用してMCPサーバーをコールします。
- パスワード共有なし: MCPサーバーは、セキュアなバックエンド・トークン交換を実行して、ユーザー・コンテキストでの処理に必要なトークンを取得し、ユーザーまたはクライアントに資格証明を公開せずにダウンストリーム・アクセスをリクエストします。
- 有効範囲が指定された短いデータベース・アクセス: MCPサーバーは、必要なデータベース操作およびリソース専用の有効範囲付きトークンを取得します。時間制限があり、権限に制限されます。
- 信頼境界および検証:トークンは、適切なアイデンティティ・サービスによって検証されます。
- 監査性:認証および認可イベントは、セキュリティの監視およびコンプライアンスをサポートするために記録されます。
- 一般的な失敗結果:ユーザーにアプリケーション・ロールが割り当てられていない場合、またはトークンが無効または期限切れの場合、リクエストは認可エラーで拒否され、ユーザーはアクセスを再認証またはリクエストする必要がある場合があります。
次の図は、IAMアプリケーション・ロールを持つユーザーがMCPクライアントを使用してデータベース・ツールMCPサーバーをコールするエンドツーエンド・フローを示しています。このサーバーは、IAMトークンベースのデータベース認証用に構成されたデータベース・ツール接続を使用してOracle Database Cloud Serviceに接続します。
この図は、ユーザーのIAMアイデンティティがデータベースにどのように伝播されるかも示しています。また、IAMユーザーのデータベース側の設定、つまりIAMプリンシパル名でグローバルに識別されるデータベース・ユーザーの作成についても説明します。

次の手順では、MCPクライアントからデータベースへのユーザー要求がMCPサーバーを介して認証、承認、および実行される方法について説明します。
- ユーザーはIAM SSOを使用してサインインし、MCPクライアントはアクセス・トークンを取得します。
- クライアントは、
Authorization: Bearer <token>を使用してMCPサーバーをコールします。 - MCPサーバーは、トークンとユーザーの役割を検証します。
- MCPサーバーは、必要な期限付きデータベース承認を取得します。
- MCPサーバーはリクエストを実行し、結果を返します。
OAuth 2.0クライアント資格情報フロー
アプリケーションがユーザー・インタラクションなしで通信するサービス間シナリオの場合、OAuth 2.0クライアント資格証明フローを使用できます。このフローでは、アイデンティティ・ドメインに構成された機密クライアントが、トークン・エンドポイントを使用して認可サーバーからアクセス・トークンをリクエストします。MCPサーバーにアクセスするには、クライアントに適切なスコープと役割が割り当てられている必要があります。
Authorization: Bearer <access_token>ヘッダーを使用してAPIリクエストに含まれます。
-
トークンが無効または期限切れの場合、リクエストは401 Unauthorizedレスポンスを返します。
-
トークンが有効で十分なアクセス権がない場合、403 Forbiddenレスポンスが返されます。
MCPクライアントとMCPサーバー間のすべての通信はHTTPS経由で行われ、転送中の暗号化と認証トークンの保護が保証されます。