企业级身份验证机制
概述
MongoDB 企业版包含 MongoDB 社区版中不可用的身份验证机制。在本指南中,您可以了解如何使用这些身份验证机制进行 MongoDB 身份验证。有关 MongoDB 中可用的其他身份验证机制的更多信息,请参阅身份验证机制.
密钥管理服务
通用安全服务API(GSSAPI)为Kerberos认证提供接口。
注意
要使用GSSAPI进行认证,您必须使用带有SASL支持的MongoDB C驱动程序进行构建。如果您是从源代码构建驱动程序,可以使用ENABLE_SASL
cmake
选项启用SASL支持。
完成以下步骤以使用GSSAPI进行认证
获取票据授予票据
在Unix环境中,您必须首先运行kinit
命令以获取和缓存初始票据授予票据。如果您在Windows环境中运行,可以跳到下一步。
以下示例使用kinit
命令获取主体为mongodbuser@EXAMPLE.COM
的票据授予票据。然后,它使用klist
命令显示凭据缓存中的主体和票据。
kinit mongodbuser@EXAMPLE.COM mongodbuser@EXAMPLE.COM's Password: klist Credentials cache: FILE:/tmp/krb5cc_1000 Principal: mongodbuser@EXAMPLE.COM Issued Expires Principal Feb 9 13:48:51 2013 Feb 9 23:48:51 2013 krbtgt/mongodbuser@EXAMPLE.COM
设置连接选项
接下来,设置以下连接选项
Kerberos主体
:要认证的Kerberos主体。authMechanism
:设置为"GSSAPI"
。authMechanismProperties
:可选。默认情况下,MongoDB使用mongodb
作为认证服务名称。要指定不同的服务名称,请将此选项设置为"SERVICE_NAME:<认证服务名称>"
。
您可以通过连接URI中的参数设置这些选项,如下例所示
auto uri = mongocxx::uri("mongodb://<Kerberos principal>@<hostname>:<port>/?" "authMechanism=GSSAPI" "&authMechanismProperties=SERVICE_NAME:<authentication service name>"); auto client = mongocxx::client(uri);
注意
您必须将主体中的@
符号替换为%40
,如前例所示。
PLAIN SASL
PLAIN简单认证和安全层(SASL),如由以下定义RFC 4616定义,是一种常与TLS或其他加密层一起使用的用户名密码认证机制。
重要
PLAIN SASL是一种明文认证机制。我们强烈建议您在使用PLAIN SASL对MongoDB进行认证时,使用TLS/SSL并验证证书。
有关如何启用连接的TLS的更多信息,请参阅配置传输层安全(TLS)。
要使用SASL进行认证,将authMechanism
连接选项设置为PLAIN
。您可以通过连接字符串中的参数设置此选项,如下例所示
auto uri = mongocxx::uri("mongodb://<db_username>:<db_password>@<hostname>:<port>/?" "authMechanism=PLAIN&tls=true"); auto client = mongocxx::client(uri);
API 文档
要了解更多关于在 C++ 驱动中创建 mongocxx::client
对象的信息,请参阅以下 API 文档