Overview
OpenID Connect(OIDC)認証メカニズムを使用すると、 AzureやGoogle Cloud Platform (GCP )などのサードパーティのIdPを使用してMongoDBに認証できます。
このメカニズムは、 MongoDB AtlasまたはMongoDB Enterprise Advancedに認証されている場合、およびMongoDB v7.0 以降に認証されている場合にのみ使用できます。
Tip
OIDC 認証
MongoDB Atlas をOIDC認証用に構成する方法の詳細については、Atlas ドキュメントの「OIDC を使用した Workforce IdP の設定」を参照してください。
MongoDBで OIDC認証を使用する方法の詳細については、 MongoDB Serverマニュアルの 「OpenID Connect 認証」 と「MongoDB Serverパラメーター」 を参照してください。
コード プレースホルダー
このページのコード例では、次のプレースホルダーを使用します。
+srv
: MongoDB Atlasクラスターに接続している場合にのみ、このオプションを接続文字列のプレフィックスに含めます。+srv
オプションの詳細については、 MongoDB Serverマニュアルの「 接続文字列の形式 」を参照してください。<username>
: Azure IMDS で認証する場合のAzureマネージド ID または エンタープライズアプリケーションのクライアントIDまたはアプリケーションID 。<hostname>
: MongoDBデプロイのネットワーク アドレス。<port>
: MongoDBデプロイのポート番号。 このパラメーターを省略すると、ドライバーはデフォルトのポート番号(27017
)を使用します。 MongoDB Atlasクラスターに接続するときにポートを指定する必要はありません。<audience>
: MongoDBデプロイで構成されたオーディエンス パラメータ。
このページのコード例を使用するには、これらのプレースホルダーを独自の値に置き換えます。
アプリケーションでの OIDC 認証の使用
次のセクションでは、OIDC認証を使用してさまざまなプラットフォームから認証する方法について説明します。
Azure IMDS
アプリケーションがAzure VM 上で実行されている場合、またはAzure Instance Metadata Service (EMDS)を使用している場合は、 .NET/ C#ドライバーに組み込まれているAzureサポートを使用してMongoDBを認証できます。
Azure IMDS OIDC認証は、MongoCredential
オブジェクトを使用するか、接続文字列の一部として使用することで、MongoClientSettings
オブジェクトで指定できます。 対応する構文を確認するには、Connection String タブまたは MongoCredentialタブを選択します。
次のコード例は、Azure IMDS OIDC 認証を指定する方法を示しています。 <percent-encoded audience>
プレースホルダーを、MongoDB 配置に設定されたaudience
パラメータのパーセント エンコードされた値に置き換えます。
var connectionString = "mongodb://<username>@<hostname>[:<port>]/?" + "authMechanism=MONGODB-OIDC" + "&authMechanismProperties=ENVIRONMENT:azure,TOKEN_RESOURCE:<percent-encoded audience>"); var mongoClientSettings = MongoClientSettings.FromConnectionString(connectionString); var client = new MongoClient(mongoClientSettings);
次のコード例は、 Azure IMDS OIDC認証 を指定する方法を示しています。
var mongoClientSettings = MongoClientSettings.FromConnectionString( "mongodb://<hostname>[:<port>]"); mongoClientSettings.Credential = MongoCredential .CreateOidcCredential("azure", "<username>") .WithMechanismProperty("TOKEN_RESOURCE", "<audience>"); var client = new MongoClient(mongoClientSettings);
GCP IMDS
アプリケーションが Google Compute Engine VM で実行され、または GCP インスタンス メタデータ サービス を使用している場合 、.NET/C# ドライバーに組み込まれている GCP サポートを使用して MongoDB に認証できます。
MongoClientSettings
オブジェクトでGCP IMDS OIDC 認証を指定するには、MongoCredential
オブジェクトを使用するか、 接続stringの一部として使用します。 Connection StringMongoCredential対応する構文を確認するには、 タブまたは タブを選択します。
次のコード例は、認証文字列の一部としてGCP IMDS OIDC認証を指定する方法を示しています。
var connectionString = "mongodb://<hostname>[:<port>]/?authMechanism=MONGODB-OIDC" + "&authMechanismProperties=ENVIRONMENT:gcp,TOKEN_RESOURCE:<audience>"); var mongoClientSettings = MongoClientSettings.FromConnectionString(connectionString); var client = new MongoClient(mongoClientSettings);
次のコード例は、 MongoCredential
オブジェクトを使用してGCP IMDS OIDC認証を指定する方法を示しています。
var mongoClientSettings = MongoClientSettings.FromConnectionString( "mongodb://<hostname>[:<port>]"); mongoClientSettings.Credential = MongoCredential .CreateOidcCredential("gcp") .WithMechanismProperty("TOKEN_RESOURCE", "<audience>"); var client = new MongoClient(mongoClientSettings);
Kubernetes
アプリケーションがKubernetesクラスターで実行される場合は、 .NET/ C#ドライバーに組み込まれているKubernetesサポートを使用して、 MongoDBに認証できます。
MongoCredential
オブジェクトを使用するか、接続文字列の一部として、MongoClientSettings
オブジェクトでKubernetes OIDC認証を指定できます。 対応する構文を確認するには、Connection String タブまたは MongoCredentialタブを選択します。
次のコード例は、 接続文字列の一部としてKubernetes OIDC認証を指定する方法を示しています。
var connectionString = "mongodb://<hostname>[:<port>]/?authMechanism=MONGODB-OIDC" + "&authMechanismProperties=ENVIRONMENT:k8s"; var mongoClientSettings = MongoClientSettings.FromConnectionString(connectionString); var client = new MongoClient(mongoClientSettings);
次のコード例は、MongoCredential
オブジェクトを使用してKubernetes OIDC認証を指定する方法を示しています。
var mongoClientSettings = MongoClientSettings.FromConnectionString( "mongodb://<hostname>[:<port>]"); mongoClientSettings.Credential = MongoCredential .CreateOidcCredential("k8s") var client = new MongoClient(mongoClientSettings);
アプリケーションがAmazon Elastic Kubernetes Service(EKS)で実行されている場合は、前述のKubernetes OIDC認証手順を完了するだけでなく、OIDC トークンを含むファイルをポイントする AWS_WEB_IDENTITY_TOKEN_FILE
環境変数を作成する必要があります。Amazon Web ServicesアプリケーションからMongoDBへの認証の詳細については、Amazon Web Services IAM 認証ガイドを参照してください。
カスタム コールバック
.NET/ C#ドライバーは、 Azure Functions を含むすべてのプラットフォームの組み込みサポートを提供していません。代わりに、OIDC を使用してこれらのプラットフォームから認証するためのカスタムコールバックを定義する必要があります。
まず、 IOidcCallback
インターフェースを実装するクラスを定義します。 このインターフェースには 2 つのメソッドが含まれています。
GetOidcAccessToken()
: このメソッドは、コールバック メソッドへのパラメータを受け入れ、コールバック応答を返します。GetOidcAccessTokenAsync()
: このメソッドは、前のメソッドの非同期バージョンです。
次のコードは、 IOidcCallback
インターフェースの実装例です。 この例では、メソッドはローカル ファイル システム内の"access-token.dat"
という名前のファイルから OIDC トークンを検索します。
public class MyCallback : IOidcCallback { public OidcAccessToken GetOidcAccessToken( OidcCallbackParameters parameters, CancellationToken cancellationToken) { var accessToken = File.ReadAllText("access-token.dat"); return new(accessToken, expiresIn: null); } public async Task<OidcAccessToken> GetOidcAccessTokenAsync( OidcCallbackParameters parameters, CancellationToken cancellationToken) { var accessToken = await File.ReadAllTextAsync( "access-token.dat", cancellationToken) .ConfigureAwait(false); return new(accessToken, expiresIn: null); } }
カスタム コールバック メソッドを含むクラスを定義したら、 MongoCredential.CreateOidcCredential()
メソッドを呼び出し、クラスの新しいインスタンスを渡します。 次のコード例に示すように、このメソッド呼び出しの結果をMongoClientSettings
オブジェクトのCredential
プロパティに保存します。
var mongoClientSettings = MongoClientSettings .FromConnectionString("mongodb://<hostname>[:<port>]"); mongoClientSettings.Credential = MongoCredential.CreateOidcCredential(new MyCallback()); var client = new MongoClient(mongoClientSettings);
API ドキュメント
このページで説明するメソッドやタイプの詳細については、次のAPIドキュメントを参照してください。