保护您的数据
在本页
概述
MongoDB 支持多种机制,您可以使用这些机制来对应用程序进行身份验证。此页包含代码示例,演示了每种机制。
要从本页面使用认证示例,请将代码示例复制到示例应用程序 或您的应用程序中。请确保用您的 MongoDB 部署的相关值替换代码示例中的所有占位符,例如<hostname>
。
示例应用程序
您可以使用以下示例应用程序来测试本页面上的代码示例。要使用示例应用程序,请执行以下步骤
确保您已将 C++ 驱动程序安装在一个可以从您的项目中导入它的位置。
复制以下代码并将其粘贴到您的项目中的一个新
.cpp
文件中。从本页面复制一个代码示例并将其粘贴到文件中高亮显示的部分。
1 2 3 4 5 6 7 8 9 10 int 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 }
SCRAM-SHA-256
以下代码展示了如何创建一个连接 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
以下代码演示了如何创建用于通过 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。
MONGODB X.509
以下代码演示了如何创建用于通过 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-AWS
认证机制连接到 MongoDB。当使用 MONGODB-AWS
机制时,C++ 驱动程序会按照以下顺序尝试从以下来源检索您的 AWS 凭据:
传递给连接 URI 的命名参数
环境变量
AWS EKS AssumeRoleWithWebIdentity 请求
ECS 容器元数据
EC2 实例元数据
每个部分都展示了如何从指定来源检索 AWS 凭据时创建用于通过 MONGODB-AWS
进行认证的连接 URI。
要了解更多关于使用 AWS 进行认证的信息,请参阅认证指南中的 MONGODB-AWS。
连接 URI
以下代码演示了如何创建包含 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 请求
以下代码展示了如何从 AssumeRoleWithWebIdentity
请求获取凭证时创建与 MONGODB-AWS
的连接 URI。确保您的环境中存在 AWS 配置文件,并且已配置 AWS_WEB_IDENTITY_TOKEN_FILE
和 AWS_ROLE_ARN
环境变量。
auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?" "authMechanism=MONGODB-AWS"); auto client = mongocxx::client(uri);
要了解更多关于使用 AssumeRoleWithWebIdentity
请求通过 AWS 进行身份验证的信息,请参阅 AssumeRoleWithWebIdentity 请求。
ECS 元数据
以下代码展示了如何从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实例元数据
以下代码展示了如何从EC2实例元数据中获取凭证时,创建用于认证MONGODB-AWS的连接URI。请确保您已配置您的EC2实例以使用临时凭证。
auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?" "authMechanism=MONGODB-AWS"); auto client = mongocxx::client(uri);
要了解更多关于使用EC2实例元数据通过AWS进行认证的信息,请参阅EC2实例元数据。
Kerberos
注意
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。
PLAIN SASL
注意
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。