エンタープライズ認証メカニズム
このガイドでは、MongoDB Enterprise Edition で使用可能な各認証メカニズム Kerberos (GSSAPI/SSPI)
、 LDAP (PLAIN)
、 MONGODB-OIDC
を使用して MongoDB に接続するためのサンプル コードを紹介します。
Kerberos (GSSAPI/SSPI)
注意
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 メカニズムを介して認証するためです。
LDAP (PLAIN)
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
重要
MONGODB-OIDC 認証メカニズムでは、Linux プラットフォーム上で MongoDB Server v 7.0以降を実行する必要があります。
次のセクションでは、MONGODB-OIDC 認証メカニズムを使用してさまざまなプラットフォームから認証する方法について説明します。
MONGODB-OIDC 認証メカニズムの詳細については、 MongoDB ServerMongoDB Serverマニュアルの 「 OpenID Connect 認証 」 と 「 パラメーター 」 を参照してください。
Azure IMDS
アプリケーションが 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);
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);
カスタム コールバック
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 ドキュメント
このガイドで説明するメソッドとタイプの詳細については、次の API ドキュメントを参照してください。