使用 MongoDB 调试 Active Directory 登录

使用 MongoDB 调试 Active Directory 登录

我正在尝试使用活动目录用户名登录 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。找到一个可行的示例很难。

我觉得一定是有什么小问题,但我不知道是什么问题。有没有其他人遇到过这种情况,有什么指点或建议吗?

谢谢布拉德

相关内容