Docs Menu
Docs Home
/ / /
C#/.NET
/ /

OIDC (ワークロード IdP)

項目一覧

  • Overview
  • コード プレースホルダー
  • アプリケーションでの OIDC 認証の使用
  • Azure IMDS
  • GCP IMDS
  • カスタム コールバック
  • API ドキュメント

OpenID Connect(OIDC)認証メカニズムを使用すると、 AzureやGoogle Cloud Platform (GCP )などのサードパーティのIdPを使用してMongoDBに認証できます。

このメカニズムは、 MongoDB AtlasまたはMongoDB Enterprise Advancedに認証されている場合、およびMongoDB v 7.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認証を使用してさまざまなプラットフォームから認証する方法について説明します。

アプリケーションがAzure VM 上で実行されている場合、またはAzure Instance Metadata Service (EMDS)を使用している場合は、 .NET/ C#ドライバーに組み込まれているAzureサポートを使用してMongoDBを認証できます。

Azure IMDS OIDC認証は、MongoCredentialオブジェクトを使用するか、接続文字列の一部として使用することで、MongoClientSettingsオブジェクトで指定できます。対応する構文を確認するには、 Connection String タブまたは MongoCredentialタブを選択します。

注意

カンマ(, )文字を含む値は authMechanismProperties接続文字列パラメータに渡すことはできません。 MongoCredentialタブに示されているように、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);

アプリケーションが Google Compute Engine VM で実行され、または GCP インスタンス メタデータ サービス を使用している場合 、.NET/C# ドライバーに組み込まれている GCP サポートを使用して MongoDB に認証できます。

MongoClientSettings オブジェクトでGCP IMDS OIDC 認証を指定するには、MongoCredential オブジェクトを使用するか、 接続stringの一部として使用します。 Connection StringMongoCredential対応する構文を確認するには、 タブまたは タブを選択します。

注意

カンマ(, )文字を含む値は authMechanismProperties接続文字列パラメータに渡すことはできません。 MongoCredentialタブに示されているように、MongoCredentialオブジェクトにはカンマを含む値を指定する必要があります。

次のコード例は、認証文字列の一部として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);

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

戻る

AWS IAM