Overview
OpenID Connect(OIDC)認証メカニズムを使用すると、 AzureやGoogle Cloud Platform (GCP )などのサードパーティのIdPを使用してMongoDBに認証できます。
MONGODB-OIDC認証メカニズムでは、 Linuxプラットフォーム上でMongoDB Server v7.0 以降を実行中必要があります。このメカニズムは、 MongoDB AtlasまたはMongoDB Enterprise Advancedに認証する場合にしか使用できません。
Tip
OIDC 認証の詳細
MongoDB Atlas をOIDC認証用に構成する方法の詳細については、Atlas ドキュメントの「OIDC を使用した Workforce IdP の設定」を参照してください。
MongoDBで OIDC認証を使用する方法の詳細については、 MongoDB Serverマニュアルの「 OIDC/OAuth2.0 と oidcIdentityProviders による認証と認可 」を参照してください。
OIDC 認証の指定
次のセクションでは、MONGODB-OIDC認証メカニズムを使用してさまざまなプラットフォームから認証する方法について説明します。
Azure IMDS
アプリケーションがAzure VM 上で実行される場合、またはAzure Instance Metadata Service(MDS)を使用する場合は、 Node.jsドライバーの組み込みAzureサポートを使用してMongoDBで認証できます。
認証メカニズムとしてAzure IMDS OIDC を指定するには、 接続stringに次のオプションを設定します。
username: Azureマネージド ID を使用している場合は、管理対象 ID のクライアントIDにこれを設定します。それ以外の場合は、このオプションを省略します。authMechanism:MONGODB-OIDCに設定します。authMechanismProperties:ENVIRONMENT:azure,TOKEN_RESOURCE:<audience>に設定します。<audience>プレースホルダーを、MongoDB 配置に設定されたaudienceパラメータの値に置き換えます。
次のコード例は、上記の接続オプションを設定する方法を示しています。
const { MongoClient } = require("mongodb"); const uri = "mongodb+srv://<username>@<hostname>:<port>/?authMechanism=MONGODB-OIDC" + "&authMechanismProperties=ENVIRONMENT:azure,TOKEN_RESOURCE:<audience>"; const client = new MongoClient(uri);
GCP IMDS
アプリケーションがGoogle Compute Engine VM で実行される場合、またはGCPインスタンス メタデータ サービス を使用する場合は、 Node.jsドライバーに組み込まれているGCPサポートを使用してMongoDBを認証できます。
認証メカニズムとしてGCP IMDS OIDC を指定するには、 接続stringに次のオプションを設定します。
authMechanism:MONGODB-OIDCに設定します。authMechanismProperties:ENVIRONMENT:gcp,TOKEN_RESOURCE:<audience>に設定します。<audience>プレースホルダーを、MongoDB 配置に設定されたaudienceパラメータの値に置き換えます。
次のコード例は、上記の接続オプションを設定する方法を示しています。
const { MongoClient } = require("mongodb"); const uri = "mongodb+srv://<host>:<port>/?authMechanism=MONGODB-OIDC" + "&authMechanismProperties=ENVIRONMENT:gcp,TOKEN_RESOURCE:<audience>"; const client = new MongoClient(uri);
Kubernetes
アプリケーションがKubernetesクラスターで実行される場合は、 Node.jsドライバーに組み込まれているKubernetesサポートを使用してMongoDBに認証できます。
認証メカニズムとしてKubernetes OIDC を指定するには、接続文字列に次のオプションを設定します。
authMechanism:MONGODB-OIDCに設定します。authMechanismProperties:ENVIRONMENT:k8sに設定します。
次のコード例は、上記の接続オプションを設定する方法を示しています。
import { MongoClient } from "mongodb"; const uri = "mongodb://<hostname>:<port>/?authMechanism=MONGODB-OIDC" + "&authMechanismProperties=ENVIRONMENT:k8s"; const client = new MongoClient(uri);
カスタム コールバック
Node.jsドライバーは、 Azure Functions を含むすべてのプラットフォームで組み込みサポートを提供していません。 代わりに、OIDC を使用してこれらのプラットフォームから認証するためのカスタムコールバックを定義する必要があります。
まず、OIDC 認証に使用するアクセス トークンを取得する関数を定義します。 この関数には次の署名が必要です。
const myCallback = (params: OIDCCallbackParams): Promise<OIDCResponse> => { }
OIDCCallbackParamsパラメーターには、 関数内でアクセスできる次のプロパティが含まれています。
プロパティ | 値 |
|---|---|
| 認証ワークフローを30秒後に中止する |
| 現在の OIDC API バージョン |
| サーバーから返された IdP 情報 |
| 接続stringに含まれる ユーザー名(該当する場合) |
| 発行者に新しいアクセス トークンを要求するためのリフレッシュ トークン(存在する場合) |
コールバック関数はOIDCResponseオブジェクトを返す必要があります。 このオブジェクトには、次のプロパティが含まれています。
プロパティ | 値 |
|---|---|
| 認証に使用するアクセス トークン。 |
| 任意。 アクセス トークンの有効期限が切れるまでの秒数。 |
| 任意。 発行者に新しいアクセス トークンを要求するためのリフレッシュ トークン。 |
次のコールバック関数の例では、ローカル ファイル システム内のaccess-token.datという名前のファイルから OIDC アクセス トークンを検索します。
const fs = require("node:fs"); const myCallback = (params: OIDCCallbackParams): Promise<OIDCResponse> => { const token = fs.readFileSync("access-token.dat", "utf8"); return { accessToken: token, expiresInSeconds: 300, refreshToken: token }; }
コールバック関数を定義したら、 authMechanismPropertiesパラメーターの一部としてMongoClientコンストラクターに渡します。 Node.js ドライバーは次の認証パターンをサポートしています。
マシン認証:ウェブ サービスや人間の操作を必要としないその他のアプリケーションで使用されます。 この構文の例については、 Machine Callbackタブを選択してください。
人間認証:データベース ツール、コマンドライン ユーティリティ、および人間が直接操作するその他のアプリケーションで使用されます。 この構文の例については、 Human Callbackタブを選択してください。
マシン認証の場合は、次の例に示すように、コールバック関数をauthMechanismProperties.OIDC_CALLBACKプロパティに割り当てます。
const { MongoClient } = require("mongodb"); const uri = "mongodb+srv://<host>:<port>/?authMechanism=MONGODB-OIDC"; const client = new MongoClient(uri, { authMechanismProperties: { OIDC_CALLBACK: myCallback } });
人間認証の場合は、次の例に示すように、コールバック関数をauthMechanismProperties.OIDC_HUMAN_CALLBACKプロパティに割り当てます。
const { MongoClient } = require("mongodb"); const uri = "mongodb+srv://<host>:<port>/?authMechanism=MONGODB-OIDC"; const client = new MongoClient(uri, { authMechanismProperties: { OIDC_HUMAN_CALLBACK: myCallback } });
API ドキュメント
このガイドで説明するメソッドとタイプの詳細については、次の API ドキュメントを参照してください。