Încerc să mă conectez la MongoDB folosind un nume de utilizator de director activ. Folosim Percona pentru MongoDB, dar cred că acest lucru ar trebui să fie destul de similar cu autentificarea obișnuită MongoDB 5.x.
Am încercat variație după variantă. Iată cea mai recentă încercare:
net:
tls:
modul: requireTLS
allowConnectionsWithoutCertificates: true
Securitate:
autorizare: activat
ldap:
authz:
queryTemplate: „dc=domain,dc=local??sub?(&(objectClass=group)(member:1.2.840.113556.1.4.1941:={USER}))”
servere: „my-dc.domain.local”
transportSecurity: niciuna
lega:
queryUser: „CN=percona,OU=Conturi,OU=Site-ul meu,DC=domeniu,DC=local”
queryPassword: „super-secret”
userToDNMapping: >-
[
{
potrivire: „(.+)”,
ldapQuery: "dc=domain,dc=local??sub?(&(objectClass=organizationalPerson)(sAMAccountName={0}))"
}
]
setParameter:
Mecanisme de autentificare: „PLAIN”
Eroarea pe care o primesc este:
{"t":{"$date":"2022-05-27T21:31:24.896+00:00"},"s":"I", "c":"ACCES", "id":29052, "ctx":"conn349795","msg":"Mesaj server SASL: ({priority}) {msg}","attr":{"priority":2,"msg":"Verificarea parolei eșuată"}}
{"t":{"$date":"2022-05-27T21:31:24.896+00:00"},"s":"I", "c":"ACCES", "id":20249, "ctx":"conn349795","msg":"Autentificare eșuată","attr":{"mechanism":"PLAIN","speculative":false,"principalName":"brad.test","authenticationDatabase": "$external","remote":"10.40.14.16:42930","extraInfo":{},"error":"OperationFailed: pasul SASL nu a fost finalizat: (utilizatorul nu a fost găsit)"}}
Acum, din cele două erori de mai sus, ați presupune că parola a fost introdusă greșit, dar am verificat de mai multe ori că parola din mongod.conf este corectă. Am verificat, de asemenea, că numele de utilizator și parola utilizatorului cu care mă conectez la mogodb sunt corecte.
Există, de asemenea, o mențiune despre utilizator care nu a fost găsit, dar dacă îmi iau numele de utilizator și interog direct directorul activ folosind: (objectClass=organizationalPerson)(sAMAccountName=brad.test) îmi recuperez contul.
De asemenea, dacă interog directorul activ folosind: (objectClass=group)(member:1.2.840.113556.1.4.1941:=CN=Brad - Test,OU=Foo,OU=Bar,DC=domain,DC=local) primesc un lista grupurilor din care sunt membru.
Cred că interogarea mea ldap și șablonul meu de interogare sunt corecte.
Ar trebui să menționez că am următoarele definite în baza de date de administrare mongo și contul meu este membru al grupului respectiv:
var admin = db.getSiblingDB(„admin”)
admin.createRole(
{
rol: „CN=Utilizatori MongoDB,OU=Grupuri,OU=Site-ul meu,DC=domeniu,DC=local”,
privilegii: [],
roluri: [ "userAdminAnyDatabase" ]
}
)
Dacă verific jurnalul de securitate pe serverul Active Directory, văd
Computerul a încercat să valideze acreditările pentru un cont.
Pachet de autentificare: MICROSOFT_AUTHENTICATION_PACKAGE_V1_0
Cont de conectare: percona
Stație de lucru sursă: MY-DC
Cod de eroare: 0x0
Codul de eroare 0x0 înseamnă că s-a conectat cu succes.
Acum nu văd nicio încercare de autentificare pentru contul meu de utilizator brad.test - poate că asta indică faptul că nu a contactat AD pentru a-mi autentifica utilizatorul, dar nu sunt sigur de ce. Din păcate, există atât de multă documentație atât pentru mongo, cât și pentru percona pentru Mongo, care diferă în funcție de utilizatorul dvs. AD sau LDAP. Găsirea unui exemplu de lucru a fost dificilă.
Simt că ceva mic trebuie să fie în neregulă, dar nu văd ce este. A mai făcut cineva asta înainte și are sugestii sau sugestii?
Mulțumiri
Brad