Overview
重要
MONGODB-OIDC認証メカニズムでは、 LinuxプラットフォームでMongoDB Server v7.0 以降を実行中必要があります。
MONGODB-OIDC認証メカニズムでは、OpenID Connect(OIDC)トークンを使用してMongoDB Serverを認証できます。 C++ドライバーはワークロードID の OIDC認証をサポートしています。ワークロードID は、他のサービスとリソースを認証してアクセスするために、アプリケーション、 サービス、スクリプト、またはコンテナなどの ソフトウェアワークロードに割り当てる ID です。
次のセクションでは、MONGODB-OIDC認証メカニズムを使用して様々なプラットフォームに認証する方法について説明します。
Tip
詳細情報
MONGODB-OIDC認証メカニズムの詳細については、 MongoDB Serverマニュアルの 「OpenID Connect 認証」 と「MongoDB Serverパラメーター」 を参照してください。
コード プレースホルダー
このページのコード例では、次のプレースホルダーを使用します。
<hostname>: MongoDB Server 配置のネットワーク アドレス<client_id>: Azure マネージド ID またはエンタープライズアプリケーションのクライアント ID またはアプリケーションID<token-resource>: MongoDB Server 配置に構成されているaudienceサーバー パラメータの値
このページのコード例を使用するには、これらのプレースホルダーを独自の値に置き換えます。
Azure IMDS
アプリケーションがAzure VM 上で実行されるか、 Azure Instance Metadata Service(MDS)を使用する場合は、 C++ドライバーに組み込まれているAzureサポートを使用してMongoDB Serverを認証できます。
Azure IMDS 認証を使用するには、接続文字列に次のパラメータを含めます。
<client_id>: Azure マネージド ID を使用している場合は、管理対象 ID のクライアント ID にこれを設定します。authMechanism: に設定しますMONGODB-OIDCauthMechanismProperties: に設定しますENVIRONMENT:azure,TOKEN_RESOURCE:<token-resource>
次の例では、MONGODB-OIDC メカニズムを使用して MongoDB Server に認証します。
auto instance = mongocxx::instance(); auto uri = mongocxx::uri( "mongodb+srv://<client_id>@<hostname>/" "?authMechanism=MONGODB-OIDC" "&authMechanismProperties=ENVIRONMENT:azure," "TOKEN_RESOURCE:<token-resource>"); auto client = mongocxx::client(uri);
Tip
アプリケーションが Azure VM で実行されており、その VM に関連付けられているマネージド ID が 1 つだけの場合は、接続文字列から <client_id> パラメーターを省略できます。
Azure Functions および App Service Environment
C++ ドライバーは、Azure Functions または Azure App Service Environment (ASE) の組み込みサポートを提供していません。これらのプラットフォームから MONGODB-OIDC 認証を使用するには、次の手順を実行します。
カスタム OIDC コールバックを定義する
mongocxx::options::client インスタンスで oidc_callback() メソッドを使用して、Azure::Identity::DefaultAzureCredential を使用して OIDC トークンを検索するコールバックを定義します。
auto instance = mongocxx::instance(); auto uri = mongocxx::uri("mongodb+srv://<client_id>@<hostname>/" "?authMechanism=MONGODB-OIDC"); auto opts = mongocxx::options::client{}; opts.oidc_callback([](const mongocxx::oidc_callback_params &) { Azure::Identity::DefaultAzureCredential credential; Azure::Core::Credentials::TokenRequestContext token_request_ctx; token_request_ctx.Scopes = {"<token-resource>/.default"}; auto access_token = credential.GetToken(token_request_ctx, Azure::Core::Context{}); return mongocxx::oidc_credential(access_token.Token); }); auto client = mongocxx::client(uri, opts);
API ドキュメント
C++ドライバーで mongocxx::clientオブジェクトを作成する方法、またはクライアント オプションを構成する方法の詳細については、次のAPIドキュメントを参照してください。