Как обеспечить полный сервис 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)
{
}
}