В .Net есть два разных типа Claim
. Один в WIF (Microsoft.IdentityModel.Claims
) и один в System.IdentityModel.Claims
, который использовался в WCF pre-WIF (хотя на самом деле он не является частью WCT). Только у System.IdentityModel.Claims.Claim
есть свойство Right
, как вы упомянули.
Я использовал подход на основе утверждений с WCF и ASP.Net с WIF и без него, и модель программирования WIF определенно проще из этих двух.
Для сценария редактирования пользователя, который вы описываете, я бы определил роль с подходящим именем. UserEditor может быть в порядке, но это звучит очень специфично. Вам следует просмотреть коллекцию всех разрешений, которые вы хотите предоставить этим пользователям, и найти подходящее обобщающее имя (может быть, UserAdministrator?).
Для этих пользователей вы должны добавить заявку на роль (например, типа http://schemas.microsoft.com/ws/2008/06/identity/claims/role или Microsoft.IdentityModel.Claims.ClaimTypes.Role
). Если ваш поставщик удостоверений является внешним по отношению к вашему приложению, и вы не можете управлять заявками, которые он создает, вам потребуется реализовать пользовательский ClaimsAuthenticationManager
для преобразования выданного набора утверждений путем добавления нового утверждения роли.
Затем вы можете украсить операции, к которым вы хотите предоставить доступ, PrincipalPermissionAttribute
примерно так:
[PrincipalPermission (SecurityAction.Demand, Role = "UserAdministrator")]
Эта структура довольно гибкая и может использоваться различными способами в ASP.Net, WCF или просто в обычной разработке .Net. Ваш вопрос не дает много контекста, чтобы дать очень конкретный ответ с примерами.