Как обеспечить полный сервис WCF с PrincipalPermission

У меня есть привязка службы WCF с netTcp более 100 методов, я хотел бы защитить все методы, основанные на группе пользователей Windows.

Я знаю, что вы можете поставить атрибут [PrincipalPermission(SecurityAction.Demand, Role = "MyWindowsUserGroup")] перед каждым методом.

Нужно ли делать это индивидуально для каждого метода или есть способ обеспечить защиту каждого метода в службе с помощью этой же группы пользователей по умолчанию?

1 ответ

Можете добавить PrincipalPermission на уровне класса, а также метод.

// Before:
public class AdministrationService : IAdminService
{
   [PrincipalPermission(SecurityAction.Demand, Role = "Domain\Admin Service Admins")]
   public bool DisableAdministrator(int userId)
   {
   }

   [PrincipalPermission(SecurityAction.Demand, Role = "Admin Service Admins")]
   public bool DeleteAdministrator(int userId)
   {
   }
}

// After:

[PrincipalPermission(SecurityAction.Demand, Role = "Admin Service Admins")]
public class AdministrationService : IAdminService
{
   public bool DisableAdministrator(int userId)
   {
   }

   public bool DeleteAdministrator(int userId)
   {
   }
}

Вы также можете определить несколько его экземпляров, если вы хотите иметь несколько типов разрешений.

[PrincipalPermission(SecurityAction.Demand, Role = "Admin Service Admins")]
[PrincipalPermission(SecurityAction.Demand, Role = "Domain\Domain Admins")]
[PrincipalPermission(SecurityAction.Demand, Role = "Domain\Power Users")]
public class AdministrationService : IAdminService
{
   public bool DisableAdministrator(int userId)
   {
   }

   public bool DeleteAdministrator(int userId)
   {
   }
}
Другие вопросы по тегам