ฉันพยายามลงชื่อเข้าใช้ 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 ของผู้ใช้ของคุณ การหาตัวอย่างที่ใช้งานได้นั้นยาก
ฉันรู้สึกเหมือนมีบางอย่างผิดปกติ แต่ฉันไม่เห็นว่ามันคืออะไร ใครเคยทำมาก่อนและมีคำแนะนำหรือข้อเสนอแนะ?
ขอบคุณ
แบรด