Từ Mongo Java Tutorial
MongoDB có thể được chạy ở chế độ an toàn, nơi quyền truy cập vào cơ sở dữ liệu được kiểm soát thông qua xác thực tên và mật khẩu. Khi chạy ở chế độ này, bất kỳ ứng dụng khách nào cũng phải cung cấp tên và mật khẩu trước khi thực hiện bất kỳ thao tác nào. Trong trình điều khiển Java, bạn chỉ cần thực hiện như sau với đối tượng mongo được kết nối:
boolean auth = db.authenticate(myUserName, myPassword);
Nếu tên và mật khẩu hợp lệ cho cơ sở dữ liệu, auth sẽ là true. Nếu không, nó sẽ là sai. Bạn nên xem nhật ký MongoDB để biết thêm thông tin nếu có.
Hầu hết người dùng chạy MongoDB mà không cần xác thực trong môi trường đáng tin cậy.
Định cấu hình xác thực và bảo mật
Xác thực được lưu trữ trong bộ sưu tập system.users của mỗi cơ sở dữ liệu. Ví dụ:trên cơ sở dữ liệu projectx, projectx.system.users sẽ chứa thông tin người dùng.
Trước tiên, chúng ta nên định cấu hình người dùng quản trị viên cho toàn bộ quy trình máy chủ db. Người dùng này được lưu trữ trong cơ sở dữ liệu quản trị đặc biệt.
Nếu không có người dùng nào được định cấu hình trong admin.system.users, một người có thể truy cập cơ sở dữ liệu từ giao diện localhost mà không cần xác thực. Do đó, từ máy chủ đang chạy cơ sở dữ liệu (và do đó trên localhost), hãy chạy trình bao cơ sở dữ liệu và định cấu hình người dùng quản trị:
$ ./mongo
> use admin
> db.addUser("theadmin", "anadminpassword")
Bây giờ chúng tôi có một người dùng được tạo cho quản trị viên cơ sở dữ liệu. Lưu ý rằng nếu chúng tôi chưa xác thực trước đó, thì bây giờ chúng tôi phải xác thực nếu chúng tôi muốn thực hiện các hoạt động khác, vì có một người dùng trong admin.system.users.
> db.auth("theadmin", "anadminpassword")
Chúng tôi có thể xem những người dùng hiện có cho cơ sở dữ liệu bằng lệnh:
> db.system.users.find()
Bây giờ, hãy định cấu hình người dùng "thông thường" cho một cơ sở dữ liệu khác.
> use projectx
> db.addUser("joe", "passwordForJoe")
Cuối cùng, hãy thêm một người dùng chỉ đọc. (chỉ được hỗ trợ trong 1.3.2+)
> use projectx
> db.addUser("guest", "passwordForGuest", true)