Как проверить, кто вызывает службу Windows WCF

#c# #asp.net #wcf #authentication

#c# #asp.net #wcf #аутентификация

Вопрос:

Я создал службу WCF, которая размещается с помощью службы Windows.

Служба Windows запущена в LocalSystem в разделе services.msc

Я только хочу разрешить принимать запросы от моего asp.net Пользователи пользовательского интерфейса, входящие в группу пользователей dmain? В конечном итоге у нас будет несколько пользовательских интерфейсов, и я не хочу писать код проверки безопасности в пользовательском интерфейсе.

Как мне проверить, кто выполняет вызов, чтобы я мог сделать что-то вроде:

 if (incomingUserGroup != "GroupRequired)
{
 throw NotAllowedException();
}
 

Ответ №1:

Вы можете проверить учетные данные безопасности вызывающего пользователя через OperationContext . Это зависит от того, сделали ли вы службу доступной на конечной точке, используя защищенную привязку, такую как NetTcpBinding или wsHttpBinding.

 OperationContext.Current.ServiceSecurityContext.WindowsIdentity.Groups
 

Комментарии:

1. Куда мне добавить этот код? В моей библиотеке служб wcf? например, если мой метод getData(), я добавлю эту строку внутри getData()?

2. также группа имеет только значение Guid. как мне получить имя группы вместо домена?