参考 > 参考 > MongoDB软件包组件 > mongoldap
3.4版的新功能: MongoDB Enterprise
从3.4版开始,MongoDB Enterprise提供
mongoldap
了针对正在运行的LDAP服务器或一组服务器测试MongoDB的LDAP 配置选项的功能。
要验证配置文件中的LDAP选项,请将
选项设置为配置文件的路径。mongoldap
--config
要测试LDAP配置选项,必须指定--user
和--password
。mongoldap
模拟对使用提供的配置选项和凭据运行的MongoDB服务器的身份验证。
mongoldap
返回一个报告,其中包含LDAP身份验证或授权过程中任何步骤的成功或失败。错误消息包括有关遇到的特定错误的信息以及解决该错误的潜在建议。
在配置与LDAP授权相关的选项时,mongoldap
执行使用提供的配置选项和用户名构造的LDAP查询,并在admin
数据库中返回授权用户的角色列表。
在为用户访问控制配置LDAP授权角色时,可以使用此信息。例如,用于
mongoldap
确保您的配置允许特权用户获得必要的角色,以执行其预期的任务。同样,用于
mongoldap
确保您的配置禁止非特权用户获得访问MongoDB服务器或执行未授权操作的角色。
在配置与LDAP认证相关的选项时,请使用mongoldap
以确保认证操作按预期进行。
本文档提供的所有命令行选项的完整概述
mongoldap
。
该mongoldap
工具是MongoDB工具包的一部分。请查阅所用平台的
安装指南,以获取有关如何在MongoDB安装过程中安装工具包的说明。
该工具包也可以从
MongoDB下载中心获得,可以单独tools
下载,也可以包含在
TGZ
或ZIP
下载中,具体取决于平台。在Windows上,MSI
企业版的安装程序mongoldap
是默认安装的一部分。
小费
如果从下载中心下载TGZ
或ZIP
文件,则可能需要更新PATH
环境变量以包括安装这些工具的目录。有关
更多信息,请参见所用平台的安装指南。
注意
LDAP或Active Directory的完整描述超出了本文档的范围。
考虑以下样本配置文件,该文件旨在支持通过Active Directory进行LDAP身份验证和授权:
您可以mongoldap
用来验证配置文件,该配置文件返回过程的报告。您必须为指定用户名和密码mongoldap
。
如果提供的凭据有效,并且配置文件中的LDAP选项有效,则输出可能如下:
mongoldap
¶--config
=<filename>
,
-f
=<filename>
¶指定运行时配置选项的配置文件。这些选项等效于命令行配置选项。有关更多信息,请参见配置文件选项。
mongoldap使用与LDAP代理身份验证 或LDAP授权相关的任何配置选项来测试LDAP身份验证或授权。
需要指定--user
。可以接受--password
测试LDAP身份验证。
确保配置文件使用ASCII编码。该mongoldap 实例不支持非ASCII编码,包括UTF-8的配置文件。
--user
=<string>
¶尝试LDAP身份验证或授权时使用的mongoldap的用户名。
--ldapServers
=<host1>:<port>,<host2>:<port>,...,<hostN>:<port>
¶3.4版的新功能:仅在MongoDB Enterprise中可用。
mongoldap用来对用户进行身份验证的LDAP服务器,或确定授权用户在给定数据库上执行的操作。如果指定的LDAP服务器具有任何复制实例,则可以在逗号分隔的列表中指定每个复制服务器的主机和端口。
如果您的LDAP基础结构将LDAP目录分区到多个LDAP服务器上,则将一个 LDAP服务器或其任何复制实例指定为
--ldapServers
。MongoDB支持RFC 4511 4.1.10中定义的以下LDAP引用。不要--ldapServers
用于列出基础结构中的每个LDAP服务器。
此设置可以对运行中的配置mongoldap使用
setParameter
。
如果未设置,则mongoldap无法使用LDAP认证或授权。
--ldapQueryUser
=<string>
¶3.4版的新功能:仅在MongoDB Enterprise中可用。
当连接到LDAP服务器或在LDAP服务器上执行查询时,mongoldap绑定的身份。
仅在满足以下任一条件时才需要:
username transformation
您必须--ldapQueryUser
与一起使用--ldapQueryPassword
。
如果未设置,mongoldap将不会尝试绑定到LDAP服务器。
此设置可以对运行中的配置mongoldap使用
setParameter
。
注意
Windows MongoDB部署可以--ldapBindWithOSDefaults
代替--ldapQueryUser
和使用--ldapQueryPassword
。您不能同时指定--ldapQueryUser
和--ldapBindWithOSDefaults
。
--ldapQueryPassword
=<string>
¶3.4版的新功能:仅在MongoDB Enterprise中可用。
使用时用于绑定到LDAP服务器的密码
--ldapQueryUser
。您必须--ldapQueryPassword
与一起
使用--ldapQueryUser
。
如果未设置,mongoldap将不会尝试绑定到LDAP服务器。
此设置可以对运行中的配置mongoldap使用
setParameter
。
注意
Windows MongoDB部署可以--ldapBindWithOSDefaults
代替--ldapQueryPassword
和使用--ldapQueryPassword
。您不能同时指定--ldapQueryPassword
和--ldapBindWithOSDefaults
。
--ldapBindWithOSDefaults
=<bool>
¶默认值:false
3.4版中的新功能: MongoDB Enterprise中仅适用于Windows平台。
连接到LDAP服务器时,允许mongoldap使用Windows登录凭据进行身份验证或绑定。
仅在以下情况下需要:
username transformation
使用--ldapBindWithOSDefaults
替换--ldapQueryUser
和
--ldapQueryPassword
。
--ldapBindMethod
=<string>
¶默认值:简单
3.4版的新功能:仅在MongoDB Enterprise中可用。
该方法mongoldap用于认证到LDAP服务器。与--ldapQueryUser
和--ldapQueryPassword
一起使用以连接到LDAP服务器。
--ldapBindMethod
支持以下值:
值 | 描述 |
---|---|
simple |
mongoldap使用简单身份验证。 |
sasl |
mongoldap使用SASL协议进行身份验证。 |
如果指定sasl
,则可以使用来配置可用的SASL机制--ldapBindSaslMechanisms
。mongoldap默认使用使用DIGEST-MD5
机制。
--ldapBindSaslMechanisms
=<string>
¶默认值:DIGEST-MD5
3.4版的新功能:仅在MongoDB Enterprise中可用。
在对LDAP服务器进行身份验证时,可以使用mongoldap逗号分隔的SASL机制列表。该mongoldap和LDAP服务器必须同意在至少一种机制。该mongoldap 动态加载在运行时安装在主机上的任何SASL机制库。
在mongoldap主机和远程LDAP服务器主机上为选定的SASL机制安装并配置适当的库。您的操作系统可能默认包含某些SASL库。遵循与每个SASL机制相关的文档,以获取有关安装和配置的指导。
如果将GSSAPI
SASL机制用于
Kerberos身份验证,请为mongoldap主机验证以下内容
:
Linux
KRB5_CLIENT_KTNAME
环境变量解决客户的名称Linux的密钥表文件
的主机。有关Kerberos环境变量的更多信息,请参考
Kerberos文档。Windows
--ldapBindWithOSDefaults
为
true
允许mongoldap在连接到Active Directory服务器并执行查询时使用生成的凭据。设置--ldapBindMethod
为sasl
使用此选项。
注意
有关SASL机制的完整列表,请参见 IANA列表。遵循LDAP或Active Directory服务的文档,以识别与该服务兼容的SASL机制。
MongoDB不是SASL机制库的来源,MongoDB文档也不是用于安装或配置任何给定SASL机制的权威来源。有关文档和支持,请遵循SASL机制库的供应商或所有者。
有关SASL的更多信息,请参考以下资源:
--ldapTransportSecurity
=<string>
¶默认值:tls
3.4版的新功能:仅在MongoDB Enterprise中可用。
默认情况下,mongoldap创建与LDAP服务器的TLS / SSL安全连接。
对于Linux部署,必须在/etc/openldap/ldap.conf
文件中配置适当的TLS选项
。您的操作系统的软件包管理器通过libldap
依赖关系在MongoDB Enterprise安装中创建此文件
。查看文档中
的ldap.conf OpenLDAP的文档
进行更完整的说明。TLS Options
对于Windows部署,必须将LDAP服务器CA证书添加到Windows证书管理工具中。该工具的确切名称和功能可能会因操作系统版本而异。请参阅您的Windows版本的文档,以获取有关证书管理的更多信息。
设置--ldapTransportSecurity
为none
禁用mongoldap和LDAP服务器之间的TLS / SSL 。
警告
设置--ldapTransportSecurity
为none
在mongoldap和LDAP服务器之间传输纯文本信息以及可能的凭证。
--ldapTimeoutMS
=<long>
¶默认值:10000
3.4版的新功能:仅在MongoDB Enterprise中可用。
mongoldap应该等待的时间(以毫秒为单位),以等待LDAP服务器响应请求。
--ldapTimeoutMS
如果失败的根源是连接超时,则增加值可以防止MongoDB服务器与LDAP服务器之间的连接失败。减小的值将--ldapTimeoutMS
减少MongoDB等待LDAP服务器响应的时间。
此设置可以对运行中的配置mongoldap使用
setParameter
。
--ldapUserToDNMapping
=<string>
¶3.4版的新功能:仅在MongoDB Enterprise中可用。
将提供给mongoldap进行身份验证的用户名映射到LDAP专有名称(DN)。--ldapUserToDNMapping
在以下情况下,您可能需要使用将用户名转换为LDAP DN:
LDAP authorization query template
--ldapUserToDNMapping
期望用引号括起来的JSON字符串表示文档的有序数组。每个文档都包含一个正则表达式match
以及用于转换传入用户名的substitution
或ldapQuery
模板。
数组中的每个文档具有以下形式:
领域 | 描述 | 例 |
---|---|---|
match |
ECMAScript格式的正则表达式(regex)以与提供的用户名匹配。每个括号括起来的部分代表substitution 或使用的正则表达式捕获组ldapQuery 。 |
"(.+)ENGINEERING"
"(.+)DBA" |
substitution |
LDAP专有名称(DN)格式模板,用于将与 替换的结果必须是RFC4514转义的字符串。 |
"cn={0},ou=engineering,
dc=example,dc=com" |
ldapQuery |
LDAP查询格式模板,该模板将与match 正则表达式匹配的身份验证名称插入到遵循RFC4515和RFC4516编码的LDAP查询URI中。每个大括号括起来的数字值都由通过表达式从身份验证用户名中提取的相应正则表达式捕获组替换match 。
mongoldap对LDAP服务器执行查询以检索已认证用户的LDAP DN。mongoldap恰好需要一个返回的结果才能成功进行转换,否则mongoldap会跳过此转换。 |
"ou=engineering,dc=example,
dc=com??one?(user={0})" |
对于数组中的每个文档,必须使用substitution
或
ldapQuery
。您不能在同一文档中同时指定两者。
执行身份验证或授权时,mongoldap将以给定的顺序遍历数组中的每个文档,并根据match
过滤器检查身份验证用户名。如果找到匹配项,
mongoldap将应用转换并使用输出对用户进行身份验证。mongoldap不会检查阵列中的其余文档。
如果给定文档与提供的身份验证名称不匹配,或者文档描述的转换失败,则mongoldap继续浏览文档列表以查找其他匹配项。如果在任何文档中都找不到匹配项,则mongoldap返回错误。
例
下面显示了两个转换文档。第一个文档与以结尾的任何字符串匹配@ENGINEERING
,将后缀之前的任何内容放入正则表达式捕获组。第二个文档与以结尾的任何字符串匹配@DBA
,将后缀之前的任何内容放入正则表达式捕获组。
重要
您必须将数组--ldapUserToDNMapping
作为字符串传递。
具有用户名的用户alice@ENGINEERING.EXAMPLE.COM
与第一个文档匹配。正则表达式捕获组{0}
对应于字符串
alice
。结果输出为DN
"cn=alice,ou=engineering,dc=example,dc=com"
。
具有用户名的用户bob@DBA.EXAMPLE.COM
与第二个文档匹配。正则表达式捕获组{0}
对应于字符串bob
。结果输出是LDAP查询
"ou=dba,dc=example,dc=com??one?(user=bob)"
。mongoldap对LDAP服务器执行此查询,并返回结果
"cn=bob,ou=dba,dc=example,dc=com"
。
如果--ldapUserToDNMapping
未设置,则在尝试根据LDAP服务器对用户进行身份验证或授权时,mongoldap不会对用户名进行任何转换。
可以使用
数据库命令在正在运行的mongoldap上配置此设置setParameter
。
--ldapAuthzQueryTemplate
=<string>
¶3.4版的新功能:仅在MongoDB Enterprise中可用。
格式为RFC4515和RFC4516的相对LDAP查询URL格式,由mongoldap执行以获取经过身份验证的用户所属的LDAP组。该查询相对于中指定的一个或多个主机--ldapServers
。
在URL中,可以使用以下替换标记:
替代令牌 | 描述 |
---|---|
{USER} |
替换通过身份验证的用户名,transformed
如果指定了a,则替换用户
名。username mapping |
{PROVIDED_USER} |
替换提供的用户名,即在身份验证或之前。 4.2版中的新功能。 |
构造查询URL时,请确保LDAP参数的顺序遵守RFC4516:
如果您的查询包含一个属性,则mongoldap假定该查询检索到该实体所属的DN。
如果您的查询不包含属性,则mongoldap假定该查询检索用户所属的所有实体。
对于查询返回的每个LDAP DN,mongoldap都会为授权用户分配admin
数据库上的相应角色。如果admin
数据库上的角色
与DN完全匹配,mongoldap会向用户授予角色和分配给该角色的特权。有关db.createRole()
创建角色的更多信息,请参见该
方法。
例
该LDAP查询返回LDAP用户对象的memberOf
属性中列出的所有组
。
您的LDAP配置可能不包含该memberOf
属性作为用户架构的一部分,可能具有用于报告组成员身份的其他属性,或者可能无法通过属性跟踪组成员身份。根据您自己的唯一LDAP配置配置查询。
如果未设置,mongoldap无法使用LDAP授权用户。
可以使用
数据库命令在正在运行的mongoldap上配置此设置setParameter
。