Docs Menu
Docs Home
/ / /
Node.js ドライバー
/ /

エンタープライズ認証メカニズム

項目一覧

  • Kerberos (GSSAPI/SSPI)
  • LDAP (PLAIN)
  • MONGODB-OIDC
  • API ドキュメント

このガイドでは、MongoDB Enterprise Edition で使用可能な各認証メカニズム Kerberos (GSSAPI/SSPI)LDAP (PLAIN)MONGODB-OIDCを使用して MongoDB に接続するためのサンプル コードを紹介します。

注意

Node.js ドライバーは、MIT Kerberos ライブラリを使用して UNIX では Kerberos をサポートし、SSI API を使用して Windows では Kerberos をサポートします。

GSSAPI認証メカニズムは、ユーザー プリンシパルを使用して Kerberos サービスを認証します。

この認証メカニズムを指定するには、 接続stringでオプションを指定する際に次のアクションを実行します。

  • authMechanismパラメータをGSSAPIに設定します。

  • mongodb以外の値を使用する場合は、 authMechanismPropertiesパラメータにSERVICE_NAME値を設定します。

  • カスタム サービス邦土が必要な場合は、 authMechanismPropertiesパラメータにSERVICE_REALM値を指定します。

  • ホスト名の正規化が必要な場合は、 authMechanismPropertiesパラメータにCANONICALIZE_HOST_NAME値を指定します。 このプロパティは、次の値を取ることができます。

    • none:(デフォルト)ホスト名の正規化を実行しません

    • forward: DNS のフォワードルックアップを実行してホスト名を正規化します

    • forwardAndReverse: DNS のフォワードルックアップを行い、次にその値に対してリバースルックアップを実行してホスト名を正規化します

重要

gssapiServiceNameパラメータは非推奨であり、ドライバーの将来のバージョンで削除される可能性があります。 代わりに、接続 URI でauthMechanismProperties=SERVICE_NAME:<your service name>を使用してください。 詳細については、 authMechanismPropertiesパラメーターのドキュメント を参照してください。

次のコード サンプルでは、 GSSAPIを使用して UNIX 用の Kerberos で認証を行います。

重要

正しく解析されるようにするには、必ずencodeURIComponentメソッドを使用してプリンシパルをURI エンコードしてください。

const { MongoClient } = require("mongodb");
// specify the placeholder values for your environment in the following lines
const clusterUrl = "<MongoDB cluster URL>";
const principal = encodeURIComponent("<Kerberos principal and realm>");
const serviceRealm = "<Kerberos service realm>";
const canonicalizationSetting = "<canonicalization setting>";
const authMechanismProperties = `SERVICE_REALM:${serviceRealm},CANONICALIZE_HOST_NAME:${canonicalizationSetting}`;
const authMechanism = "GSSAPI";
// Connection URI
const uri = `mongodb+srv://${principal}@${clusterUrl}/?authMechanism=${authMechanism}&authMechanismProperties=${authMechanismProperties}`;
const client = new MongoClient(uri);
// Function to connect to the server
async function run() {
try {
// Establish and verify connection
await client.db("admin").command({ ping: 1 });
console.log("Connected successfully to server");
} finally {
// Ensures that the client will close when you finish/error
await client.close();
}
}
run().catch(console.dir);

注意

メソッドは、GSSAPI ではなくKerberos 認証メカニズムを参照します。これは、ドライバーが GSSAPI RFC-4652 である SASL メカニズムを介して認証するためです。

PLAIN認証メカニズムは、ユーザー名とパスワードを使用して LDAP(Lightweight Directory Access Protocol)サーバーで認証します。

この認証メカニズムを指定するには、次のサンプル コードに示すように、authMechanism パラメータを PLAIN に設定し、 LDAPユーザー名とパスワードを接続stringに含めます。

const { MongoClient } = require("mongodb");
// specify the placeholder values for your environment in the following lines
const clusterUrl = "<MongoDB cluster URL>";
const ldapUsername = "<LDAP username>";
const ldapPassword = "<LDAP password>";
const authMechanism = "PLAIN";
// Connection URI
const uri = `mongodb+srv://${ldapUsername}:${ldapPassword}@${clusterUrl}/?authMechanism=${authMechanism}`;
const client = new MongoClient(uri);
// Function to connect to the server
async function run() {
try {
// Establish and verify connection
await client.db("admin").command({ ping: 1 });
console.log("Connected successfully to server");
} finally {
// Ensures that the client will close when you finish/error
await client.close();
}
}
run().catch(console.dir);

注意

認証メカニズムは 、RFC-4616 で定義されている PLAIN 簡易認証とセキュリティ層(SASL) を使用して認証するため、 ではなく という名前が付けられていますPLAIN LDAP

重要

MONGODB-OIDC 認証メカニズムでは、Linux プラットフォーム上で MongoDB Server v 7.0以降を実行する必要があります。

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

MONGODB-OIDC 認証メカニズムの詳細については、 MongoDB ServerMongoDB Serverマニュアルの 「 OpenID Connect 認証 」 と 「 パラメーター 」 を参照してください。

アプリケーションが Azure VM 上で実行され、 や Azure インスタンス メタデータ サービス が使用される場合 (MDS)では、Node.js ドライバーの組み込み Azure サポートを使用して MongoDB で認証できます。

認証メカニズムとしてAzure IMDS OIDC を指定するには、 接続stringに次のオプションを設定します。

  • username: Azure マネージド ID を使用している場合は、管理対象 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);

Node.js ドライバーは、Azure Functions や Azure Kubernetes Service(AKS)を含むすべてのプラットフォームで組み込みサポートを提供していません。 代わりに、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 ドキュメントを参照してください。

戻る

認証メカニズム