Tôi đang cố đăng nhập vào MongoDB bằng tên người dùng thư mục hoạt động. Chúng tôi đang sử dụng Percona cho MongoDB nhưng tôi tin rằng điều này thực sự sẽ khá giống với xác thực MongoDB 5.x thông thường.
Chúng tôi đã thử hết biến thể này đến biến thể khác. Đây là nỗ lực gần đây nhất:
bọc lưới:
tls:
chế độ: yêu cầuTLS
allowConnectionsWithoutCertificates: đúng
Bảo vệ:
ủy quyền: đã bật
ldap:
xác thực:
queryTemplate: "dc=domain,dc=local??sub?(&(objectClass=group)(thành viên:1.2.840.113556.1.4.1941:={USER}))"
máy chủ: "my-dc.domain.local"
An ninh vận tải: không có
trói buộc:
queryUser: "CN=percona,OU=Accounts,OU=My Site,DC=domain,DC=local"
queryPassword: "siêu bí mật"
userToDNMapping: >-
[
{
khớp: "(.+)",
ldapQuery: "dc=domain,dc=local??sub?(&(objectClass=organizationalPerson)(sAMAccountName={0}))"
}
]
thiết lập tham số:
cơ chế xác thực: "PLAIN"
Lỗi tôi nhận được là:
{"t":{"$date":"2022-05-27T21:31:24.896+00:00"},"s":"I", "c":"ACCESS", "id":29052, "ctx":"conn349795","msg":"Thông báo máy chủ SASL: ({priority}) {msg}","attr":{"priority":2,"msg":"Xác minh mật khẩu không thành công"}}
{"t":{"$date":"2022-05-27T21:31:24.896+00:00"},"s":"I", "c":"ACCESS", "id":20249, "ctx":"conn349795","msg":"Xác thực thất bại","attr":{"cơ chế":"PLAIN","speculative":false,"principalName":"brad.test","authenticationDatabase": "$external","remote":"10.40.14.16:42930","extraInfo":{},"error":"OperationFailed: bước SASL chưa hoàn thành: (không tìm thấy người dùng)"}}
Bây giờ từ hai lỗi trên, bạn cho rằng mật khẩu đã bị nhập sai nhưng tôi đã kiểm tra bốn lần mật khẩu trong mongod.conf là chính xác. Tôi cũng đã kiểm tra bốn lần tên người dùng và mật khẩu của người dùng mà tôi đang kết nối với mogodb có đúng không.
Cũng có đề cập đến việc không tìm thấy người dùng nhưng nếu tôi lấy tên người dùng của mình và truy vấn trực tiếp thư mục hoạt động bằng cách sử dụng: (objectClass=organizationalPerson)(sAMAccountName=brad.test) thì tôi sẽ lấy lại được tài khoản của mình.
Tương tự như vậy Nếu tôi truy vấn thư mục hoạt động bằng cách sử dụng: (objectClass=group)(member:1.2.840.113556.1.4.1941:=CN=Brad - Test,OU=Foo,OU=Bar,DC=domain,DC=local) tôi nhận được một danh sách các nhóm mà tôi là thành viên.
Tôi nghĩ rằng truy vấn ldap và mẫu truy vấn của tôi là chính xác.
Tôi nên đề cập rằng tôi có các định nghĩa sau trong cơ sở dữ liệu quản trị viên mongo và tài khoản của tôi là thành viên của nhóm đó:
var admin = db.getSiblingDB("admin")
admin.createRole(
{
vai trò: "CN=Người dùng MongoDB,OU=Nhóm,OU=Trang web của tôi,DC=miền,DC=cục bộ",
đặc quyền: [],
vai trò: [ "userAdminAnyDatabase" ]
}
)
Nếu tôi kiểm tra nhật ký bảo mật trên máy chủ thư mục hoạt động, tôi sẽ thấy
Máy tính đã cố xác thực thông tin xác thực cho một tài khoản.
Gói xác thực: MICROSOFT_AUTHENTICATION_PACKAGE_V1_0
Tài khoản đăng nhập: percona
Nguồn máy trạm: MY-DC
Mã lỗi: 0x0
Mã lỗi 0x0 nghĩa là đã đăng nhập thành công.
Bây giờ tôi không thấy bất kỳ nỗ lực đăng nhập nào cho tài khoản người dùng của mình brad.test - có thể đó là dấu hiệu cho thấy nó không liên hệ với AD để xác thực người dùng của tôi nhưng tôi không chắc tại sao. Đáng buồn thay, có quá nhiều tài liệu cho cả mongo và percona cho Mongo khác nhau tùy thuộc vào việc người dùng của bạn là AD hay LDAP. Tìm một ví dụ làm việc đã được khó khăn.
Tôi cảm thấy như có gì đó nhỏ không ổn nhưng tôi không thấy nó là gì. Bất kỳ ai khác đã thực hiện việc này trước đây và có bất kỳ gợi ý hoặc đề xuất nào không?
Cảm ơn
Brad