Dữ liệu nào sẽ được lưu trữ dưới dạng `Claim`?


9

Trong ASP.Net Core, tôi thấy Claimsủy quyền là phương pháp không cụ thể. Chúng tôi có thể thêm bất cứ điều gì như ClaimTypeClaimValuecặp; các nhóm, tên, họ, brithdate, canAccess ThisURI, isEditor, v.v. Tuy nhiên, cách tiếp cận này (lưu trữ bất cứ thứ gì có thể được lưu trữ dưới dạng khiếu nại) sẽ tạo ra một bảng yêu cầu khổng lồ bao gồm 50% dữ liệu ứng dụng của tôi.

Tôi tự hỏi, như một thực tiễn tốt, dữ liệu phổ biến nên được lưu trữ như là yêu cầu là gì?


4
Bạn sẽ lưu trữ ở đó bất cứ dữ liệu nào bạn cần để xác thực / ủy quyền cho người dùng. Điều đó gần như chắc chắn không bao gồm 50% dữ liệu ứng dụng của bạn.
Robert Harvey

Câu trả lời:


3

Khiếu nại chỉ đơn giản là một thực tế về người dùng có khả năng có thể được sử dụng để xác định hoặc ủy quyền cho ai đó trong hệ thống của bạn. Hai ràng buộc đó phải đủ để hạn chế những gì bạn sẽ đưa ra như một yêu cầu.

Một số ý tưởng cho khiếu nại bao gồm:

  • tên người dùng
  • tên tài khoản
  • Email người dùng
  • vai trò
  • thành viên nhóm

Siêu dữ liệu của người dùng nên được giới hạn ở những gì cần thiết để cá nhân hóa ứng dụng cho người dùng và liên kết người dùng với dữ liệu của họ. Id người dùng đủ để liên kết người dùng với dữ liệu hoặc cung cấp dấu vết kiểm toán. Đừng tham lam.

Vai trò và thành viên nhóm là yêu cầu ủy quyền. Ví dụ: nếu bạn có các nhóm trong ứng dụng của mình thì danh sách các nhóm mà người dùng thuộc về cho phép bạn nhanh chóng kiểm tra xem họ có thể truy cập vào một nhóm riêng tư hay không. Vai trò là chi tiết hơn một chút và nói về những đặc quyền mà người dùng có. Đây thường là ứng dụng cụ thể, vì vậy chỉ thêm những gì bạn cần để thực thi.


0

Có nhiều hệ thống, đặc biệt là hệ thống STS / liên đoàn, thực hiện theo cách này:

  • một yêu cầu mô tả người dùng duy nhất
  • các loại yêu cầu mô tả những điều khái niệm chung mà họ (và những người khác) có quyền truy cập vào

Dữ liệu "hồ sơ" của người dùng trong ứng dụng có thể không được dịch sang / từ nguồn xác thực bạn đang sử dụng và bạn không được sử dụng cùng một điểm cuối tại mọi thời điểm hoặc tất cả người dùng.

Nếu bạn đã quen thuộc với xác thực Biểu mẫu cũ, nó tương tự như mô hình tên người dùng và vai trò và rất nhiều công cụ tích hợp vẫn trông giống như vậy nếu bạn sử dụng System.Security.Claims.ClaimTypes về tên và vai trò một cách thích hợp.

Cả mô hình cũ hay mới đều không cung cấp cho bạn quyền thừa kế hoặc quyền thừa kế vai trò, nhưng điều đó không khó thực hiện và thực hiện nó cho phép bạn cắt giảm khối lượng khiếu nại hoặc vai trò mà bạn cần tiếp tục thực hiện theo yêu cầu yêu cầu.

Nếu ứng dụng của bạn cần theo dõi ngày sinh nhật, nhưng không cần sử dụng nó trong cơ chế bảo mật thì thực sự không có bất kỳ lợi ích nào trong việc giữ nó trong bộ sưu tập yêu cầu. Đặt nó trong một tập dữ liệu hồ sơ riêng biệt hoặc một cái gì đó.

Nếu ứng dụng của bạn cần lấy ngày sinh nhật như một yêu cầu từ một hệ thống khác thì bạn đang xem xét một cái gì đó giống như tùy chỉnh liên kết xác thực hoặc cho phép yêu cầu bổ sung tiếp tục.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.