Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/ / /
Node.js ドライバー
/ /

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 認証の詳細

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

MongoDBで OIDC認証を使用する方法の詳細については、 MongoDB Serverマニュアルの「 OIDC/OAuth2.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 ドキュメントを参照してください。

戻る

AWS IAM

項目一覧