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); 
認証メカニズムとしてKubernetes OIDC を指定すると、ドライバーは次のいずれかのロケーションから OIDC トークンの内容を読み取ります。
AZURE_FEDERATED_TOKEN_FILEAzure Kubernetes Service(AKS)で実行中アプリケーションの環境変数AWS_WEB_IDENTITY_TOKEN_FILEElastic Kubernetes Service(EKS)で実行中アプリケーションの環境変数/var/run/secrets/kubernetes.io/serviceaccount/tokenファイル: Google Kubernetes Engine(GKE)で実行されるものを含む他のすべてのアプリケーションのデフォルトのロケーション
OIDC トークンは、アプリケーション の実行に使用するサービスに対応するロケーションに保存する必要があります。
カスタム コールバック
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 ドキュメントを参照してください。