我正在尝试使用活动目录用户名登录 MongoDB。我们正在使用 Percona for MongoDB,但我相信这实际上应该与常规 MongoDB 5.x 身份验证非常相似。
我们尝试了各种变化。以下是最近的尝试:
net:
tls:
mode: requireTLS
allowConnectionsWithoutCertificates: true
security:
authorization: enabled
ldap:
authz:
queryTemplate: "dc=domain,dc=local??sub?(&(objectClass=group)(member:1.2.840.113556.1.4.1941:={USER}))"
servers: "my-dc.domain.local"
transportSecurity: none
bind:
queryUser: "CN=percona,OU=Accounts,OU=My Site,DC=domain,DC=local"
queryPassword: "super-secret"
userToDNMapping: >-
[
{
match: "(.+)",
ldapQuery: "dc=domain,dc=local??sub?(&(objectClass=organizationalPerson)(sAMAccountName={0}))"
}
]
setParameter:
authenticationMechanisms: "PLAIN"
我收到的错误是:
{"t":{"$date":"2022-05-27T21:31:24.896+00:00"},"s":"I", "c":"ACCESS", "id":29052, "ctx":"conn349795","msg":"SASL 服务器消息:({priority}) {msg}","attr":{"priority":2,"msg":"密码验证失败"}}
{“t”:“$date”:“2022-05-27T21:31:24.896+00:00”},“s”:“I”,“c”:“ACCESS”,“id”:“20249,”ctx“:“conn349795”,“msg”:“身份验证失败”,“attr”:“mechanism”:“PLAIN”,“speculative”:“false”,“principalName”:“brad.test”,“authenticationDatabase”:“$external”,“remote”:“10.40.14.16:42930”,“extraInfo”:{},“error”:“OperationFailed:SASL 步骤未完成:(未找到用户)”}}
现在,从上面的两个错误中,您可能会认为密码输入有误,但我已经四次检查了 mongod.conf 中的密码是否正确。我还四次检查了我用来连接 mogodb 的用户的用户名和密码是否正确。
还提到未找到用户,但如果我使用我的用户名并直接查询活动目录:(objectClass = organizationPerson)(sAMAccountName = brad.test)我就可以取回我的帐户。
同样,如果我使用以下命令查询活动目录:(objectClass=group)(member:1.2.840.113556.1.4.1941:=CN=Brad - Test,OU=Foo,OU=Bar,DC=domain,DC=local),我会得到我所属的组列表。
我认为我的 ldap 查询和查询模板是正确的。
我应该提到我在 mongo 管理数据库中定义了以下内容,并且我的帐户是该组的成员:
var admin = db.getSiblingDB("admin")
admin.createRole(
{
role: "CN=MongoDB Users,OU=Groups,OU=My Site,DC=domain,DC=local",
privileges: [],
roles: [ "userAdminAnyDatabase" ]
}
)
如果我检查活动目录服务器上的安全日志,我会看到
The computer attempted to validate the credentials for an account.
Authentication Package: MICROSOFT_AUTHENTICATION_PACKAGE_V1_0
Logon Account: percona
Source Workstation: MY-DC
Error Code: 0x0
错误代码0x0表示登录成功。
现在我没有看到任何针对我的用户帐户 brad.test 的登录尝试 - 也许这表明它没有联系 AD 来验证我的用户,但我不确定为什么。遗憾的是,mongo 和 percona for Mongo 的文档太多了,具体取决于您的用户是 AD 还是 LDAP。找到一个可行的示例很难。
我觉得一定是有什么小问题,但我不知道是什么问题。有没有其他人遇到过这种情况,有什么指点或建议吗?
谢谢布拉德