企业级身份验证机制
概述
MongoDB企业版包括MongoDB社区版中不可用的身份验证机制。在本指南中,您可以了解如何使用这些身份验证机制进行MongoDB身份验证。有关MongoDB中可用的其他身份验证机制的更多信息,请参阅身份验证机制.
密钥管理协议(Kerberos)
通用安全服务API(GSSAPI)为Kerberos身份验证提供了一个接口。
注意
要使用GSSAPI进行身份验证,您必须使用支持SASL的MongoDB C驱动程序进行构建。如果您从源代码构建驱动程序,可以使用ENABLE_SASL
cmake
选项启用SASL支持。ENABLE_SASL
cmake
完成以下步骤以使用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
设置连接选项
接下来,设置以下连接选项
username
:用于认证的 Kerberos 主体。authMechanism
:设置为"GSSAPI"
。authMechanismProperties
:可选。默认情况下,MongoDB 使用mongodb
作为认证服务名称。要指定不同的服务名称,请将此选项设置为"SERVICE_NAME:<authentication service name>"
。
您可以通过连接 URI 中的参数设置这些选项,如下所示
const char *uri = "mongodb://mongodbuser%40EXAMPLE.COM@<hostname>:<port>/?authMechanism=GSSAPI&authMechanismProperties=SERVICE_NAME:<authentication service name>"); mongoc_client_t *client = mongoc_client_new(uri);
注意
您必须在主体中的 @
符号替换为 %40
,如前面的示例所示。
PLAIN SASL
PLAIN 简单身份验证和安全层 (SASL),由RFC 4616,是一种常与TLS或另一个加密层一起使用的用户名密码认证机制。您必须编译带有SASL支持的C驱动程序才能使用PLAIN SASL认证。
重要
PLAIN SASL是一种明文认证机制。我们强烈建议您在用PLAIN SASL对MongoDB进行认证时,使用TLS/SSL并验证证书。
要使用SASL进行认证,将authMechanism
连接选项设置为PLAIN
。您可以通过连接字符串中的参数设置此选项,如下例所示
const char *uri = "mongodb://<username>:<password>@<hostname>:<port>/?authMechanism=PLAIN"); mongoc_client_t *client = mongoc_client_new(uri);
API文档
有关在C驱动程序中认证应用程序的更多信息,请参阅以下API文档