Score:1

การดีบักการเข้าสู่ระบบ Active Directory ด้วย MongoDB

ธง eg

ฉันพยายามลงชื่อเข้าใช้ MongoDB โดยใช้ชื่อผู้ใช้ไดเรกทอรีที่ใช้งานอยู่ เรากำลังใช้ Percona สำหรับ MongoDB แต่ฉันเชื่อว่าสิ่งนี้น่าจะค่อนข้างคล้ายกับการตรวจสอบความถูกต้องของ MongoDB 5.x ทั่วไป

เราได้ลองใช้รูปแบบต่างๆ แล้วรูปแบบต่างๆ นี่คือความพยายามครั้งล่าสุด:

สุทธิ:
   tls:
      โหมด: ต้องใช้TLS
      allowConnectionsWithoutCertificates: จริง
ความปลอดภัย:
  การอนุญาต: เปิดใช้งาน
  ลดาป:
    รับรองความถูกต้อง:
      queryTemplate: "dc=domain,dc=local??sub?(&(objectClass=group)(member:1.2.840.113556.1.4.1941:={USER}))"
    เซิร์ฟเวอร์: "my-dc.domain.local"
    การขนส่งความปลอดภัย: ไม่มี
    ผูก:
      ผู้ใช้แบบสอบถาม: "CN=percona,OU=บัญชี,OU=เว็บไซต์ของฉัน,DC=โดเมน,DC=ท้องถิ่น"
      แบบสอบถามรหัสผ่าน: "ความลับสุดยอด"
    userToDNMapping: >-
      [
         {
           การแข่งขัน: "(.+)",
           ldapQuery: "dc=domain,dc=local??sub?(&(objectClass=organizationalPerson)(sAMAccountName={0}))"
         }
      ]
ชุดพารามิเตอร์:
  กลไกการพิสูจน์ตัวตน: "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=organizationalPerson)(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.createRole(
   {
     บทบาท: "CN=ผู้ใช้ MongoDB,OU=กลุ่ม,OU=ไซต์ของฉัน,DC=โดเมน,DC=ท้องถิ่น",
     สิทธิพิเศษ: [],
     บทบาท: [ "userAdminAnyDatabase" ]
   }
)

หากฉันตรวจสอบบันทึกความปลอดภัยบนเซิร์ฟเวอร์ไดเรกทอรีที่ใช้งานอยู่ ฉันเห็น

คอมพิวเตอร์พยายามตรวจสอบข้อมูลประจำตัวสำหรับบัญชี

แพ็คเกจการรับรองความถูกต้อง: MICROSOFT_AUTHENTICATION_PACKAGE_V1_0
เข้าสู่ระบบบัญชี: percona
เวิร์กสเตชันต้นทาง: MY-DC
รหัสข้อผิดพลาด: 0x0

รหัสข้อผิดพลาด 0x0 หมายถึงเข้าสู่ระบบสำเร็จ

ตอนนี้ฉันไม่เห็นความพยายามในการเข้าสู่ระบบสำหรับบัญชีผู้ใช้ brad.test ของฉัน - นั่นอาจบ่งชี้ว่า AD ไม่ได้ติดต่อ AD เพื่อตรวจสอบสิทธิ์ผู้ใช้ของฉัน แต่ฉันไม่แน่ใจว่าทำไม น่าเศร้าที่มีเอกสารมากมายสำหรับทั้ง mongo และ percona สำหรับ Mongo ซึ่งแตกต่างกันไปขึ้นอยู่กับว่า AD หรือ LDAP ของผู้ใช้ของคุณ การหาตัวอย่างที่ใช้งานได้นั้นยาก

ฉันรู้สึกเหมือนมีบางอย่างผิดปกติ แต่ฉันไม่เห็นว่ามันคืออะไร ใครเคยทำมาก่อนและมีคำแนะนำหรือข้อเสนอแนะ?

ขอบคุณ แบรด

eg flag
สิ่งที่อาจเป็นประโยชน์มากที่สุดคือวิธีรับข้อมูลการดีบักเพิ่มเติมจาก mongo เกี่ยวกับกระบวนการตรวจสอบสิทธิ์เพื่อทำความเข้าใจว่าเกิดอะไรขึ้น ฉันไม่เห็นตัวเลือก mongod.conf สำหรับการปรับการใช้คำฟุ่มเฟือย และฉันได้ลองใช้ mongosh และไม่พบข้อผิดพลาดแบบละเอียดอีกต่อไป
eg flag
นี่คือสตริงการรับรองความถูกต้องที่ฉันกำลังเชื่อมต่อด้วย: mongodb://brad.test:[email protected]:27017/?tls=true&authMechanism=PLAIN&authSource=%24external การตรวจสอบสิทธิ์ไดเรกทอรีที่ไม่ได้ใช้งานตามปกติทำงานได้ดี
mx flag
ฉันไม่รู้เกี่ยวกับ MongoDB มากนัก และบันทึกที่มีคำอธิบายน้อยก็ไม่ได้ช่วยอะไร แต่ถ้าฉันต้องเดา ข้อความแสดงข้อผิดพลาด "การยืนยันรหัสผ่านล้มเหลว" มาจากบัญชีที่คุณใช้สำหรับการค้นหา AD ( CN=percona) ข้อผิดพลาดที่ตามมาเป็นผลมาจากการที่บัญชีแบบสอบถามไม่ผ่านการรับรองความถูกต้อง ดังนั้น ตรวจสอบบัญชี percona ของคุณอีกครั้งแทน "brad.test" หาก CN=percona เข้าสู่ระบบ AD สำเร็จ MongoDB จะตรวจสอบว่า "brad.test" เป็นสมาชิกของกลุ่มหรือไม่ ซึ่งไม่เกี่ยวข้องกับการรับรองความถูกต้องของ brad.test

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา