AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

OIDC 認証メカニズム

OpenID Connect(OIDC)認証メカニズムを使用すると、 AzureやGoogle Cloud Platform (GCP )などのサードパーティのIdPを使用してMongoDBに認証できます。

MONGODB-OIDC認証メカニズムでは、 Linuxプラットフォーム上でMongoDB Server v7.0 以降を実行中必要があります。このメカニズムは、 MongoDB AtlasまたはMongoDB Enterprise Advancedに認証する場合にしか使用できません。

Tip

OIDC 認証の詳細

OIDC認証用のMongoDB Atlasの構成の詳細については、Atlas ドキュメントの「 OIDC を使用した Workforce IdP の設定 」を参照してください。

MongoDBで OIDC認証を使用する方法の詳細については、 MongoDB Serverマニュアルの「 OIDC/OAuth.2 0および oidcIdentityProviders による認証と認可 を参照してください。

次のセクションでは、MONGODB-OIDC認証メカニズムを使用してさまざまなプラットフォームから認証する方法について説明します。

アプリケーションが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);

アプリケーションが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クラスターで実行される場合は、 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 トークンの内容を読み取ります。

OIDC トークンは、アプリケーション の実行に使用するサービスに対応するロケーションに保存する必要があります。

Node.jsドライバーは、 Azure Functions を含むすべてのプラットフォームで組み込みサポートを提供していません。 代わりに、OIDC を使用してこれらのプラットフォームから認証するためのカスタムコールバックを定義する必要があります。

まず、OIDC 認証に使用するアクセス トークンを取得する関数を定義します。 この関数には次の署名が必要です。

const myCallback = (params: OIDCCallbackParams): Promise<OIDCResponse> => { }

OIDCCallbackParamsパラメーターには、 関数内でアクセスできる次のプロパティが含まれています。

プロパティ
値

timeoutContext

認証ワークフローを30秒後に中止するAbortSignal

version

現在の OIDC API バージョン

idpInfo

サーバーから返された IdP 情報

username

接続stringに含まれる ユーザー名(該当する場合)

refreshToken

発行者に新しいアクセス トークンを要求するためのリフレッシュ トークン(存在する場合)

コールバック関数はOIDCResponseオブジェクトを返す必要があります。 このオブジェクトには、次のプロパティが含まれています。

プロパティ
値

accessToken

認証に使用するアクセス トークン。

expiresInSeconds

任意。 アクセス トークンの有効期限が切れるまでの秒数。

refreshToken

任意。 発行者に新しいアクセス トークンを要求するためのリフレッシュ トークン。

次のコールバック関数の例では、ローカル ファイル システム内の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 ドキュメントを参照してください。