在本页面
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 PLAIN
saslauthd
¶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
。
要连接到OpenLDAP服务器,请saslauthd.conf
使用以下配置选项更新文件:
该ldap_servers
指定LDAP服务器的URI用于验证。通常,对于在本地计算机上安装的OpenLDAP,可以指定该值;ldap://localhost:389
如果在TLS / SSL上使用LDAP,则可以指定该值
ldaps://localhost:636
。
该ldap_search_base
指定专有名称到搜索是相对的。搜索包括下面的基础或对象。
在ldap_filter
指定的搜索过滤器。
这些配置选项的值应对应于您的测试特定的值。例如,要过滤电子邮件,请指定
。ldap_filter: (mail=%n)
saslauthd.conf
OpenLDAP 的样本文件包括以下内容:
要使用此示例OpenLDAP配置,请创建具有uid
属性(登录名)的用户,并将其放置在Users
组织单位(ou
)下的域组件(dc
)example
和
之下com
。
有关saslauthd
配置的更多信息,请参见
http://www.openldap.org/doc/admin24/guide.html#Configuringsaslauthd。
saslauthd
配置。¶使用testsaslauthd
实用程序来测试saslauthd
配置。例如:
0: OK "Success"
表示认证成功。0: NO "authentication failed"
表示用户名,密码或配置错误。相对于saslauthd
主机操作系统上目录的位置修改文件路径
。
重要
saslauthd
Unix域套接字文件的父目录,指定给security.sasl.saslauthdSocketPath
或
必须授予以下之一的读取和执行()权限:--setParameter saslauthdPath
r-x
该mongod
或mongos
无法通过身份验证成功
saslauthd
,而不在指定的权限saslauthd
目录及其内容。
要将MongoDB服务器配置为使用saslauthd
实例进行代理身份验证,请在启动时包括以下选项mongod
:
--auth
命令行选项或security.authorization
设置,
authenticationMechanisms
参数设置为PLAIN
和
saslauthdPath
参数设置为saslauthd
实例的Unix域套接字的路径。
重要
saslauthd
Unix域套接字文件的父目录,指定给security.sasl.saslauthdSocketPath
或
必须授予以下之一的读取和执行()权限:--setParameter saslauthdPath
r-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
,如以下示例所示:
小费
从mongo
Shell的4.2版本开始,您可以将该passwordPrompt()
方法与各种用户身份验证/管理方法/命令结合使用,以提示输入密码,而不是直接在方法/命令调用中指定密码。但是,您仍然可以像在早期版本的mongo
Shell中一样直接指定密码
。
出现提示时输入密码。
服务器以纯文本形式转发密码。通常,仅在受信任的通道(VPN,TLS / SSL,受信任的有线网络)上使用。请参阅注意事项。