在本页面
MongoDB Enterprise提供对用户代理身份验证的支持。这样,管理员可以将MongoDB集群配置为通过将身份验证请求代理到指定的轻型目录访问协议(LDAP)服务来对用户进行身份验证。
注意
对于链接到的MongoDB 4.2(和4.0.9)企业二进制文件
libldap(例如在RHEL上运行时),对的访问
libldap是同步的,这会导致性能/延迟成本。
对于链接到的MongoDB 4.2(和4.0.9)企业二进制文件,与
libldap_r早期MongoDB版本相比,行为没有变化。
警告
适用于Windows的MongoDB Enterprise不支持通过进行绑定
saslauthd。
saslauthd守护程序绑定到LDAP服务器
。saslauthd以及LDAP服务器之间使用安全的加密或信任连接。LDAP服务器使用该机制,以纯文本格式发送和接收数据。您应仅使用可信通道(例如VPN),使用TLS / SSL加密的连接或可信有线网络。SASL PLAINsaslauthd¶LDAP对用户身份验证的支持要求正确配置saslauthd守护进程以及MongoDB服务器。
在saslauthd使用该
/etc/sysconfig/saslauthd文件配置的系统(例如Red Hat Enterprise Linux,Fedora,CentOS和Amazon Linux AMI)上,将该机制设置MECH为
ldap:
在saslauthd使用该
/etc/default/saslauthd文件进行配置的系统(例如Ubuntu)上,将MECHANISMS
选项设置为ldap:
如果saslauthd.conf文件不存在,请创建它。该saslauthd.conf文件通常位于/etc
文件夹中。如果要指定不同的文件路径,看到
-O选项的
saslauthd。
要与ActiveDirectory saslauthd一起使用,请从saslauthd.conf文件中设置的以下配置选项开始:
对于,请指定ldap服务器的uri。例如,。<ldap uri>ldap_servers: ldaps://ad.example.net
有关saslauthd配置的更多信息,请参见
http://www.openldap.org/doc/admin24/guide.html#Configuringsaslauthd。
saslauthd配置。¶使用testsaslauthd实用程序来测试saslauthd
配置。例如:
0: OK "Success" 表示认证成功。0: NO "authentication failed" 表示用户名,密码或配置错误。相对于saslauthd主机操作系统上目录的位置修改文件路径
。
重要
saslauthdUnix域套接字文件的父目录,指定给security.sasl.saslauthdSocketPath或
必须授予以下之一的读取和执行()权限:--setParameter saslauthdPathr-x
该mongod或mongos无法通过身份验证成功
saslauthd,而不在指定的权限saslauthd
目录及其内容。
要将MongoDB服务器配置为使用saslauthd实例进行代理身份验证,请在启动时包括以下选项mongod:
--auth命令行选项或security.authorization设置,
authenticationMechanisms参数设置为PLAIN和
saslauthdPath参数设置为saslauthd实例的Unix域套接字的路径。
重要
saslauthdUnix域套接字文件的父目录,指定给security.sasl.saslauthdSocketPath或
必须授予以下之一的读取和执行()权限:--setParameter saslauthdPathr-x
该mongod或mongos无法通过身份验证成功
saslauthd,而不在指定的权限saslauthd
目录及其内容。
如果使用该authorization选项强制执行身份验证,则将需要特权来创建用户。
saslauthd套接字路径。¶对于的套接字路径/<some>/<path>/saslauthd,将设置
saslauthdPath为/<some>/<path>/saslauthd/mux,如以下命令行示例所示:
包括配置所需的其他选项。例如,如果您希望远程客户端连接到您的部署,或者您的部署成员在不同的主机上运行,请指定
--bind_ip。有关更多信息,请参见
Localhost绑定兼容性更改。
或者,如果使用YAML格式配置文件,请在文件中指定以下设置:
或者,如果使用旧的配置文件格式:
要使用默认的Unix域套接字路径,请将设置
saslauthdPath为空字符串"",如以下命令行示例所示:
包括配置所需的其他选项。例如,如果您希望远程客户端连接到您的部署,或者您的部署成员在不同的主机上运行,请指定
--bind_ip。有关更多信息,请参见
Localhost绑定兼容性更改。
或者,如果使用YAML格式配置文件,请在文件中指定以下设置:
或者,如果使用旧的配置文件格式:
包括配置所需的其他选项。例如,如果您希望远程客户端连接到您的部署,或者您的部署成员在不同的主机上运行,请指定net.bindIp设置。有关更多信息,请参见Localhost绑定兼容性更改。
mongo外壳中验证用户。¶您可以在连接期间从命令行进行身份验证,或者先连接然后使用db.auth()方法进行身份验证。
要在与mongo外壳连接时进行身份验证,请mongo使用以下命令行选项(替换为<host>和)运行<user>,并在出现提示时输入密码:
或者,在不提供凭据的情况下进行连接,然后db.auth()在$external数据库上调用该方法。"PLAIN"在mechanism字段中指定值,在user和pwd字段中分别指定用户和密码。使用默认
digestPassword值(false),因为服务器必须接收未消化的密码才能继续转发到saslauthd,如以下示例所示:
小费
从mongoShell的4.2版本开始,您可以将该passwordPrompt()方法与各种用户身份验证/管理方法/命令结合使用,以提示输入密码,而不是直接在方法/命令调用中指定密码。但是,您仍然可以像在早期版本的mongoShell中一样直接指定密码
。
出现提示时输入密码。
服务器以纯文本形式转发密码。通常,仅在受信任的通道(VPN,TLS / SSL,受信任的有线网络)上使用。请参阅注意事项。