配置文件选项

您所在的位置:网站首页 mongodb客户端命令 配置文件选项

配置文件选项

2024-07-10 02:44| 来源: 网络整理| 查看: 265

类型:字符串

版本3中的新增功能。 4 : 仅在 MongoDB Enterprise 中可用。

将提供给 mongod 或 mongos 进行身份验证的用户名映射到 LDAP 唯一标识名 (DN)。在以下情况下,可能需要使用 userToDNMapping 将用户名转换为 LDAP DN:

通过 LDAP 简单绑定进行 LDAP 身份验证,其中用户使用非完整 LDAP DN 的用户名向 MongoDB 进行身份验证。

使用需要 DN 的 LDAP authorization query template。

将使用不同身份验证机制(如 x.509、kerberos)向 Mongo DB 进行身份验证的客户端的用户名转换为完整的 LDAP DN,以进行授权。

userToDNMapping 需要一个用引号括住的 JSON 字符串,代表一个有序的文档数组。每个文档都包含正则表达式 match 以及用于转换传入用户名的 substitution 或 ldapQuery 模板。

数组中的每个文档均采用以下形式:

{ match: "" substitution: "" | ldapQuery: ""}字段说明例子matchECMAScript 格式的正则表达式 (regex),用于与提供的用户名进行匹配。每个括号括起来的部分表示 substitution 或 ldapQuery 使用的正则表达式捕获组。"(.+)ENGINEERING" "(.+)DBA"substitution

LDAP 标识名 (DN) 格式模板,该模板将 match 正则表达式匹配的身份验证名称转换为 LDAP DN。每个大括号括起来的数值都会替换为相应的正则表达式捕获群组,这些群组通过 match 正则表达式从身份验证用户名中提取。

替换的结果必须是 RFC4514 转义字符串。

"cn={0},ou=engineering, dc=example,dc=com"ldapQueryLDAP 查询格式模板,该模板将匹配 match 正则表达式的身份验证名称插入到按照 RFC4515 和 RFC4516 编码的 LDAP 查询 URI 中。每个大括号内的数值都替换为相应的正则表达式捕获组,这些捕获组是通过match 表达式从身份验证用户名中提取而来的。mongod 或 mongos 针对 LDAP 服务器执行查询,以检索经身份验证用户的 LDAP DN。mongod 或 mongos 要求只有一个返回结果才能转换成功,也可以通过 mongod 或 mongos 跳过转换。"ou=engineering,dc=example, dc=com??one?(user={0})"注意

对 RFC4514、 RFC4515、RFC4516 或 LDAP 查询的解释超出了 MongoDB 文档的范围。请直接查看 RFC 或使用您首选的 LDAP 资源。

对于数组中的每个文档,必须使用 substitution 或 ldapQuery。不能在同一文档中同时指定两者。

执行身份验证或授权时,mongod 或 mongos 按给定顺序遍历数组中的每个文档,对照 match 过滤器检查身份验证用户名。如果找到匹配项,mongod 或 mongos 就会进行转换,并使用输出结果对用户进行身份验证。mongod 或 mongos 不会检查数组中的其余文档。

如果给定文档与提供的身份验证名称不匹配,mongod 或 mongos 会继续在文档列表中查找其他匹配项。如果在任何文档中都没有找到匹配项,或者文档描述的转换失败,mongod 或 mongos 将返回错误信息。

如果由于 LDAP 服务器的联网或身份验证失败而无法评估其中一个转换,mongod 或 mongos 还会返回错误。mongod 或 mongos 会拒绝连接请求,不检查数组中的其余文件。

从 MongoDB 5.0 开始,userToDNMapping 接受空字符串 "" 或空数组 [ ] 来代替映射文档。如果向 userToDNMapping 提供空字符串或空数组,MongoDB 会将经过身份验证的用户名映射为 LDAP DN。以前,提供空映射文档会导致映射失败。

例子

下面展示了两个转换文档。第一个文档匹配以 @ENGINEERING 结尾的任何字符串,将后缀前面的所有内容放入正则表达式捕获组中。第二个文档匹配以 @DBA 结尾的任何字符串,将后缀前面的所有内容放入正则表达式捕获组中。

重要必须将数组作为字符串传递给 UserToDNMapping。"[ { match: "(.+)@ENGINEERING.EXAMPLE.COM", substitution: "cn={0},ou=engineering,dc=example,dc=com" }, { match: "(.+)@DBA.EXAMPLE.COM", ldapQuery: "ou=dba,dc=example,dc=com??one?(user={0})" }]"

用户名为 [email protected] 的用户匹配第一个文档。正则表达式捕获群组 {0} 对应于字符串 alice。生成的输出是 DN "cn=alice,ou=engineering,dc=example,dc=com"。

用户名为 [email protected] 的用户匹配第二个文档。正则表达式捕获群组 {0} 对应于字符串 bob。生成的输出是 LDAP 查询 "ou=dba,dc=example,dc=com??one?(user=bob)"。mongod 或 mongos 对 LDAP 服务器执行该查询,并返回结果 "cn=bob,ou=dba,dc=example,dc=com"。

如果未设置 userToDNMapping,则在尝试通过 LDAP 服务器对用户进行身份验证或授权时,mongod 或 mongos 不会对用户名进行转换。

可以在运行中的 mongod 或 mongos 上使用 setParameter 数据库命令配置此设置。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3