文档菜单
文档首页
/ / /
C++ 驱动程序

保护您的数据

在本页

  • 概述
  • 示例应用程序
  • SCRAM-SHA-256
  • SCRAM-SHA-1
  • MONGODB X.509
  • MONGODB-AWS
  • 连接 URI
  • 环境变量
  • AssumeRoleWithWebIdentity 请求
  • ECS 元数据
  • EC2 实例元数据
  • Kerberos
  • PLAIN SASL

MongoDB 支持多种机制,您可以使用这些机制来对应用程序进行身份验证。此页包含代码示例,演示了每种机制。

提示

要了解更多关于此页面上任何身份验证机制的信息,请参阅认证机制企业认证机制 页面。

要从本页面使用认证示例,请将代码示例复制到示例应用程序 或您的应用程序中。请确保用您的 MongoDB 部署的相关值替换代码示例中的所有占位符,例如<hostname>

您可以使用以下示例应用程序来测试本页面上的代码示例。要使用示例应用程序,请执行以下步骤

  1. 确保您已将 C++ 驱动程序安装在一个可以从您的项目中导入它的位置。

  2. 复制以下代码并将其粘贴到您的项目中的一个新 .cpp 文件中。

  3. 从本页面复制一个代码示例并将其粘贴到文件中高亮显示的部分。

1#include <bsoncxx/json.hpp>
2
3#include <mongocxx/client.hpp>
4#include <mongocxx/exception/exception.hpp>
5#include <mongocxx/instance.hpp>
6#include <mongocxx/uri.hpp>
7
8#include <iostream>
9
10int main()
11{
12 mongocxx::instance instance;
13
14 try
15 {
16 // Start example code here
17
18 // End example code here
19
20 auto admin = client["admin"];
21 admin.run_command(bsoncxx::from_json(R"({ "ping": 1 })"));
22
23 std::cout << "Successfully pinged the MongoDB server." << std::endl;
24 }
25 catch (const mongocxx::exception &e)
26 {
27 std::cout << "An exception occurred: " << e.what() << std::endl;
28 return EXIT_FAILURE;
29 }
30
31 return EXIT_SUCCESS;
32}

以下代码展示了如何创建一个连接 URI 以使用 SCRAM-SHA-256 认证机制进行认证

auto uri = mongocxx::uri("mongodb://<db_username>:<db_password>@<hostname>:<port>/?"
"authSource=admin&authMechanism=SCRAM-SHA-256");
auto client = mongocxx::client(uri);

要了解有关 SCRAM-SHA-256 认证的相关信息,请参阅认证指南中的 SCRAM-SHA-256

以下代码演示了如何创建用于通过 SCRAM-SHA-1 认证机制进行认证的连接 URI

auto uri = mongocxx::uri("mongodb://<db_username>:<db_password>@<hostname>:<port>/?"
"authSource=admin&authMechanism=SCRAM-SHA-1");
auto client = mongocxx::client(uri);

要了解更多关于 SCRAM-SHA-1 认证的信息,请参阅认证指南中的 SCRAM-SHA-1

以下代码演示了如何创建用于通过 X.509 认证机制进行认证的连接 URI

auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?"
"tls=true&tlsCertificateKeyFile=path/to/client.pem&authMechanism=MONGODB-X509");
auto client = mongocxx::client(uri);

要了解更多关于 X.509 认证的信息,请参阅认证指南中的 MONGODB X.509

以下部分展示了如何使用 MONGODB-AWS 认证机制连接到 MongoDB。当使用 MONGODB-AWS 机制时,C++ 驱动程序会按照以下顺序尝试从以下来源检索您的 AWS 凭据:

  1. 传递给连接 URI 的命名参数

  2. 环境变量

  3. AWS EKS AssumeRoleWithWebIdentity 请求

  4. ECS 容器元数据

  5. EC2 实例元数据

每个部分都展示了如何从指定来源检索 AWS 凭据时创建用于通过 MONGODB-AWS 进行认证的连接 URI。

要了解更多关于使用 AWS 进行认证的信息,请参阅认证指南中的 MONGODB-AWS

以下代码演示了如何创建包含 AWS 凭据的连接 URI,用于通过 MONGODB-AWS 进行认证

auto uri = mongocxx::uri("mongodb://<AWS IAM access key ID>:<AWS IAM secret access key>@<hostname>:<port>/?"
"authMechanism=MONGODB-AWS");
auto client = mongocxx::client(uri);

以下代码展示了如何从环境变量获取凭证时创建与 MONGODB-AWS 的连接 URI。确保在运行此代码之前已指定您的环境变量。

auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?"
"authMechanism=MONGODB-AWS");
auto client = mongocxx::client(uri);

要了解更多关于使用环境变量通过 AWS 进行身份验证的信息,请参阅 环境变量。

以下代码展示了如何从 AssumeRoleWithWebIdentity 请求获取凭证时创建与 MONGODB-AWS 的连接 URI。确保您的环境中存在 AWS 配置文件,并且已配置 AWS_WEB_IDENTITY_TOKEN_FILEAWS_ROLE_ARN 环境变量。

auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?"
"authMechanism=MONGODB-AWS");
auto client = mongocxx::client(uri);

要了解更多关于使用 AssumeRoleWithWebIdentity 请求通过 AWS 进行身份验证的信息,请参阅 AssumeRoleWithWebIdentity 请求。

以下代码展示了如何从ECS元数据中获取凭证时,创建用于认证MONGODB-AWS的连接URI。请确保您在名为AWS_CONTAINER_CREDENTIALS_RELATIVE_URI的环境变量中指定ECS端点的URI。

auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?"
"authMechanism=MONGODB-AWS");
auto client = mongocxx::client(uri);

要了解更多关于使用ECS元数据通过AWS进行认证的信息,请参阅ECS元数据。

以下代码展示了如何从EC2实例元数据中获取凭证时,创建用于认证MONGODB-AWS的连接URI。请确保您已配置您的EC2实例以使用临时凭证。

auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?"
"authMechanism=MONGODB-AWS");
auto client = mongocxx::client(uri);

要了解更多关于使用EC2实例元数据通过AWS进行认证的信息,请参阅EC2实例元数据。

注意

MongoDB企业版仅限使用

Kerberos认证仅在MongoDB企业版中可用。

以下代码展示了如何创建用于Kerberos认证的连接URI

auto uri = mongocxx::uri("mongodb://<Kerberos principal>@<hostname>:<port>/?"
"authMechanism=GSSAPI"
"&authMechanismProperties=SERVICE_NAME:<authentication service name>");
auto client = mongocxx::client(uri);

要了解更多关于Kerberos认证的信息,请参阅企业认证指南中的Kerberos

注意

MongoDB企业版仅限使用

PLAIN SASL身份验证仅在MongoDB Enterprise中可用。

以下代码演示了如何创建用于PLAIN SASL身份验证的连接URI。

auto uri = mongocxx::uri("mongodb://<db_username>:<db_password>@<hostname>:<port>/?"
"authMechanism=PLAIN&tls=true");
auto client = mongocxx::client(uri);

要了解更多关于PLAIN SASL身份验证的信息,请参阅《企业身份验证指南》中的PLAIN SASL

返回

运行命令