Puncte:1

Depanare autentificare Active Directory cu MongoDB

drapel eg

Î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

drapel eg
Ceea ce ar putea fi cel mai util este o modalitate de a obține informații suplimentare de depanare de la mongo despre procesul de autentificare pentru a înțelege ce se întâmplă. Nu văd o opțiune mongod.conf pentru ajustarea verbozității. Și am încercat să folosesc mongosh și nu primesc nicio eroare mai pronunțată acolo.
drapel eg
Iată șirul de autentificare cu care mă conectez: mongodb://brad.test:[email protected]:27017/?tls=true&authMechanism=PLAIN&authSource=%24external Autentificarea regulată a directorului inactiv funcționează bine.
drapel mx
Nu știu multe despre MongoDB și jurnalul său mai puțin descriptiv nu ajută. Dar dacă trebuie să ghicesc, mesajul de eroare „Verificarea parolei a eșuat” a venit din contul pe care l-ați folosit pentru interogarea AD (CN=percona). Eroare ulterioară a fost rezultatul faptului că contul de interogare nu a fost autentificat cu succes. Așa că verificați-vă contul percona în loc de „brad.test”. Dacă CN=percona s-a conectat cu AD cu succes, MongoDB ar verifica atunci dacă „brad.test” este membru al anumitor grupuri, ceea ce nu implică nicio autentificare a brad.test

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.