2015-06-21 19 views
48

Tôi hoàn toàn mới sử dụng claims trong ASP.NETIdentity và muốn có ý tưởng về các phương pháp hay nhất trong việc sử dụng Roles and/or Claims.Thực tiễn tốt nhất cho vai trò và xác nhận quyền sở hữu trong ASP.NET Identity

Sau khi đọc xong, tôi vẫn có các câu hỏi như ...

Hỏi: Chúng tôi không còn sử dụng Vai trò?
Q: Nếu vậy, tại sao Vai trò vẫn được cung cấp?
Hỏi: Chúng tôi có nên sử dụng Xác nhận quyền sở hữu không?
Hỏi: Chúng tôi có nên sử dụng Vai trò & Khiếu nại cùng nhau không?

Suy nghĩ ban đầu của tôi là chúng tôi "nên" sử dụng chúng cùng nhau. Tôi thấy Claims là các danh mục con cho số Roles chúng hỗ trợ.

VÍ DỤ:
Vai trò: Kế toán
Claims: CanUpdateLedger, CanOnlyReadLedger, CanDeleteFromLedger

Q: Có phải họ dự định được loại trừ lẫn nhau?
Hỏi: Hoặc tốt hơn là bạn chỉ nên sử dụng Yêu cầu bồi thường và "đủ điều kiện" mà bạn khiếu nại?
Hỏi: Vậy các phương pháp hay nhất ở đây là gì?

VÍ DỤ: Sử dụng Vai trò & Bố Cùng
Tất nhiên, bạn sẽ phải viết logic Thuộc tính của riêng bạn cho điều này ...

[Authorize(Roles="Accounting")] 
[ClaimAuthorize(Permission="CanUpdateLedger")] 
public ActionResult CreateAsset(Asset entity) 
{ 
    // Do stuff here 

    return View(); 
} 

VÍ DỤ: Đã Vòng loại Claims bạn

[ClaimAuthorize(Permission="Accounting.Ledger.CanUpdate")] 
public ActionResult CreateAsset(Asset entity) 
{ 
    // Do stuff here 

    return View(); 
} 
+1

Vì vậy, tôi đang đối mặt với cùng một vấn đề ngay bây giờ, cách bạn giải quyết nó và cách bạn có thể hủy bỏ Quyền trong ứng dụng? – Loai

Trả lời

47

Vai trò là một danh mục tượng trưng thu thập cùng nhau người dùng r có cùng mức độ đặc quyền bảo mật. Ủy quyền dựa trên vai trò yêu cầu đầu tiên xác định người dùng, sau đó xác định các vai trò mà người dùng được chỉ định và cuối cùng so sánh các vai trò đó với các vai trò được phép truy cập tài nguyên.

Ngược lại, Xác nhận quyền sở hữu là quyền của người dùng để xác định chính họ. Nói cách khác, "Tôi được phép làm điều này bởi vì tôi có Tuyên bố này". Nói chung, ủy quyền dựa trên xác nhận quyền sở hữu sẽ cho phép ủy quyền dựa trên vai trò. Để chính xác, tư cách thành viên vai trò được xác định dựa trên danh tính và danh tính chỉ là một loại quyền đối với giá trị của xác nhận quyền sở hữu. Vai trò về cơ bản là một loại xác nhận quyền sở hữu rất cụ thể, tức là "Bởi vì Tên người dùng của tôi là tên này, tôi là thành viên của Vai trò này. Bởi vì tôi là thành viên của Vai trò này, tôi có quyền truy cập vào tài nguyên này".

Bạn có thể sử dụng cả trong buổi hòa nhạc hoặc sử dụng một loại trong một số trường hợp và một loại trong một số trường hợp khác. Nó chủ yếu phụ thuộc vào sự tương tác với các hệ thống khác và chiến lược quản lý của bạn. Ví dụ: người quản lý có thể dễ dàng quản lý danh sách người dùng được gán vai trò hơn là quản lý người được chỉ định Xác nhận quyền sở hữu cụ thể. Tuyên bố có thể rất hữu ích trong một kịch bản RESTful nơi bạn có thể gán một yêu cầu cho một khách hàng, và sau đó khách hàng có thể trình bày yêu cầu ủy quyền thay vì chuyển Tên người dùng và Mật khẩu cho mọi yêu cầu.

13

Khi @Claies giải thích một cách hoàn hảo, tuyên bố có thể là một loại vai trò mô tả và sâu sắc hơn. Tôi nghĩ về chúng như id vai trò của bạn. Tôi có một id phòng tập thể dục, vì vậy tôi thuộc về vai trò của các thành viên. Tôi cũng đang trong các bài học kickboxing, vì vậy tôi có một yêu cầu bồi thường cho họ, một id kickboxing. Đơn đăng ký của tôi sẽ cần tuyên bố vai trò mới để phù hợp với quyền thành viên của tôi. Thay vào đó, tôi có id cho mỗi điều đặc biệt tôi có thể làm tại phòng tập thể dục, thay vì rất nhiều loại thành viên mới. Đó là lý do tại sao yêu cầu phù hợp tốt hơn cho tôi.

Có một video giải thích tuyệt vời về Barry Dorrans, nói về lợi thế của việc sử dụng xác nhận quyền sở hữu đối với vai trò. Ông cũng nói rằng vai trò, vẫn còn trong .NET cho khả năng tương thích ngược. Video rất thông tin về cách xác nhận quyền sở hữu, vai trò, chính sách, ủy quyền và xác thực.

Bạn có thể tìm thấy tại đây: ASP.NET Core Authorization with Barr Dorrans

PS. Xin lỗi về ngữ pháp tiếng anh của tôi.

Các vấn đề liên quan