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_FILE
Azure Kubernetes Service(AKS)で実行中アプリケーションの環境変数AWS_WEB_IDENTITY_TOKEN_FILE
Elastic 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 ドキュメントを参照してください。