Вы не можете сделать это в конфигурации - но поскольку вы используете аутентификацию Windows, вы можете легко использовать поставщиков ролей ASP.NET - либо на основе членства в роли Active Directory / домена Windows, либо на основе сборки ASP.NET. в базе данных ролей / членства.
Теперь вы можете использовать декларативный синтаксис, чтобы ограничить количество абонентов определенными группами:
[ServiceContract]
interface IMyService
{
[OperationContract]
[PrincipalPermission(SecurityAction.Demand, Role="YourCustomRole")]
public string MethodLimitedToGroup(string someInput);
}
Любой, кто не входит в указанную вами группу и пытается вызвать этот метод, получит исключение SecurityException - но ничего больше.
Вы также можете ограничиться определенным набором фактических имен пользователей - хотя и не рекомендуется - слишком сложным, слишком ограничительным, как правило:
[ServiceContract]
interface IMyService
{
[OperationContract]
[PrincipalPermission(SecurityAction.Demand, Name="User1")]
[PrincipalPermission(SecurityAction.Demand, Name="User2")]
public string MethodLimitedToGroup(string someInput);
}
Вы можете определить все это в конфигурации:
<behaviors>
<serviceBehavior>
<behavior name="WinAuth">
<serviceAuthorization principalPermissionMode="Windows" />
</behavior>
</serviceBehavior>
</behaviors>
, а затем просто назначьте это поведение службы вашей службе в вашей конфигурации:
<service name="YourService" behaviorConfiguration="WinAuth"> ......
Если вы хотите использовать предоставляемую ASP.NET базу данных о членстве / роли, укажите
<serviceAuthorization principalPermissionMode="UseAspNetRoles" />
вместо.
Марк