У меня есть настольное приложение, которое подключается к службе WCF и использует обнаружение WCF 4.0. Мой код, чтобы сделать сервис обнаруживаемые выглядит так:Как ограничить доступность службы WCF определенным адресам?
public static void MakeServiceHostDiscoverable(ServiceHost sh)
{
IServiceBehavior Beh = new ServiceDiscoveryBehavior();
sh.Description.Behaviors.Add(Beh);
ServiceEndpoint Endp = new UdpDiscoveryEndpoint();
sh.AddServiceEndpoint(Endp);
}
Недавно приложение используется 2 различных ведомств в одной и той же компании. Каждый отдел имеет свой собственный сервер (ы), и клиенты в этом отделе должны только открывать сервер (ы) этого отдела. Сейчас клиенты могут видеть все серверы в сети компании.
Есть ли способ для обслуживания ограничить, с каких IP-адресов он может быть обнаружен? Или, еще лучше, может ли он динамически утверждать/отклонять запросы на обнаружение, когда они происходят?
Вот как я решил это. Каждый может обнаруживать службы, но экземпляры служб могут создаваться только клиентами, у которых есть разрешение. Я по-прежнему предпочел бы, чтобы службы оставались полностью невидимыми, но контроль доступа на уровне обслуживания пока достаточно хорош. – maxxxx