Overview
重要
MONGODB-OIDC身份验证机制要求在Linux平台上运行MongoDB Server v7.0 或更高版本。
MONGODB-OIDC 身份验证机制允许您使用 OpenID Connect (OIDC) 令牌向 MongoDB Server 进行身份验证。C++ 驱动程序支持针对工作负载身份的身份验证。工作负载身份是分配给软件工作负载(例如应用程序、服务、脚本或容器)的身份,用于验证和访问其他服务和资源。
以下部分介绍如何使用 MONGODB-OIDC 身份验证机制对各种平台进行身份验证。
代码占位符
本页上的代码示例使用以下占位符:
<hostname>: MongoDB Server 部署的网络地址<client_id>: Azure 托管身份或企业应用程序的客户端 ID 或应用程序 ID<token-resource>: 在 MongoDB Server 部署上配置的audience服务器参数的值
要使用本页上的代码示例,请将这些占位符替换为您自己的值。
Azure IMDS
如果应用程序在 Azure VM 上运行,或使用Azure 实例元数据服务 (IMDS),则可以使用 C++ 驱动程序的内置 Azure 支持对 MongoDB Server 进行身份验证。
要使用 Azure IMDS 身份验证,请在连接字符串中包含以下参数:
<client_id>:如果使用 Azure 托管身份,请将其设置为托管身份的客户端 IDauthMechanism:设置为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);
提示
如果应用程序在 Azure VM 上运行,并且只有一个托管身份与该 VM 关联,则可以从连接字符串中省略 <client_id> 参数。
Azure Functions 和应用服务环境
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 文档: