Nó phụ thuộc vào quy mô và yêu cầu của dự án của bạn.
Tôi có thể thấy một cách mà dữ liệu về người dùng có thể được chia thành hai bộ, với các mục đích khác nhau và do đó yêu cầu:
- Dữ liệu nhận dạng: tên người dùng, mật khẩu băm, địa chỉ email, thời gian đăng nhập lần cuối, v.v.
- Dữ liệu hồ sơ người dùng, bao gồm tùy chọn người dùng, hoạt động mới nhất, cập nhật trạng thái, v.v.
Lưu ý rằng có một số thuộc tính về người dùng có thể thuộc một trong hai loại (ví dụ: ngày sinh của người dùng). Sự khác biệt giữa hai bộ này là bộ đầu tiên được kiểm soát chặt chẽ và chỉ thông qua các quy trình công việc nhất định, nó mới có thể được sửa đổi. Ví dụ: thay đổi mật khẩu có thể yêu cầu cung cấp mật khẩu hiện tại, thay đổi email có thể yêu cầu xác minh email và nó sẽ được sử dụng trong trường hợp người dùng quên mật khẩu.
Tùy chọn không yêu cầu ACL như vậy và về mặt lý thuyết có thể được sửa đổi bởi người dùng hoặc ứng dụng khác miễn là người dùng đồng ý với nó. Các cổ phần thấp nếu ứng dụng độc hại hoặc do lỗi làm hỏng dữ liệu hoặc cố gắng sửa đổi nó (giả sử các biện pháp bảo mật khác được thực hiện.) Tuy nhiên, thường sẽ là thảm họa nếu bất kỳ tên người dùng, mật khẩu hoặc email nào có thể được sửa đổi vì chúng có thể được sử dụng để giả định danh tính người dùng hoặc từ chối dịch vụ hoặc gây ra chi phí hỗ trợ, v.v. cho quản trị viên.
Do đó, thông thường dữ liệu được lưu trữ trong hai loại hệ thống:
- Dữ liệu nhận dạng thường sẽ đi trong một thư mục hoặc giải pháp IAM.
- Dữ liệu ưu tiên sẽ kết thúc trong một cơ sở dữ liệu.
Có nói rằng, trong thực tế, mọi người sẽ vi phạm các quy tắc này và sử dụng cái này hoặc cái kia (ví dụ: máy chủ SQL đằng sau nhà cung cấp thành viên ASP.NET).
Khi dữ liệu nhận dạng trở nên lớn hơn hoặc tổ chức sử dụng nó trở nên lớn hơn, các loại vấn đề khác nhau xuất hiện. Ví dụ, trong trường hợp thư mục, nó sẽ cố gắng sao chép mật khẩu thay đổi ngay lập tức cho tất cả các máy chủ trong môi trường nhiều máy chủ. Tuy nhiên, sở thích của người dùng chỉ yêu cầu sự nhất quán cuối cùng. (FYI: Cả hai đều là tối ưu hóa khác nhau của định lý CAPS.)
Cuối cùng, các thư mục (đặc biệt là các thư mục trực tuyến / đám mây) cũng sẽ cấp mã thông báo truy cập cho các tài nguyên khác bằng các giao thức như OAUTH (ví dụ: xem xét Facebook, Google, Tài khoản Microsoft, ADFS), trong khi cơ sở dữ liệu không có nhu cầu như vậy. Một cơ sở dữ liệu sẽ hỗ trợ các phép nối và cấu trúc truy vấn khá phức tạp, thư mục nào không cần.
Để biết thêm chi tiết, một vài tìm kiếm trên thư mục nhận dạng so với cơ sở dữ liệu sẽ giúp ích.
Cuối cùng, các kịch bản của bạn là gì và dự kiến sẽ có trong tương lai, bao gồm tích hợp với bất kỳ bên thứ ba nào (và những gì họ đang sử dụng). Nếu đó là một dự án đầy đủ và bạn tự tin rằng bạn có thể bảo mật dữ liệu nhận dạng người dùng và xác thực chính xác, thì bạn có thể truy cập cơ sở dữ liệu. Nếu không, nó có thể đáng để điều tra một thư mục danh tính.
Nếu bạn chọn DB, IMO, sử dụng một DB so với hai cuối cùng sẽ đi xuống để kiểm soát truy cập, cho cả người dùng và ứng dụng.