1

我有一个连接到 WCF 服务并使用 WCF 4.0 发现的桌面应用程序。我使服务可发现的代码如下所示:

public static void MakeServiceHostDiscoverable(ServiceHost sh)
    {
        IServiceBehavior Beh = new ServiceDiscoveryBehavior();
        sh.Description.Behaviors.Add(Beh);
        ServiceEndpoint Endp = new UdpDiscoveryEndpoint();
        sh.AddServiceEndpoint(Endp);

    }

最近,同一家公司的 2 个不同部门正在使用该应用程序。每个部门都有自己的服务器,该部门的客户端应该只发现该部门的服务器。现在客户可以看到公司网络内的所有服务器。

服务有没有办法限制可以从哪些 IP 地址发现它?或者,更好的是,它可以在发现请求发生时动态批准/拒绝它们吗?

4

1 回答 1

0

WS-Discovery 的初始发现方面基于广播原则工作——它不接收和回复请求。在某种程度上,元数据的目的是帮助客户区分它有资格获得哪些服务。除此之外,您应该应用适当的安全性来验证和授权服务级别的传入请求。最后,如果部门位于不同的子网中,您可以过滤子网之间的 UDP 广播,假设您有适当的网络基础设施。

于 2011-03-03T11:11:59.690 回答