Posso configurar um filtro de IP para um serviço WCF?
-
05-09-2019 - |
Pergunta
Eu estou modificando minha WCF API para incluir um novo serviço que deve ser exposto a apenas endereços IP internos. Todos os serviços em minha API estão disponíveis em SOAP, POX e JSON. O que eu estou procurando é um comportamento ou algo que me permite implementar um filtro de endereço IP simples, para processar os pedidos de IP do interno e negar tudo o resto. Eu gostaria que ele funcione na configuração, porque todos os outros serviços na API deve permanecer disponível para a Internet. Fiz algumas googling mas não consigo encontrar nada parecido embutido no WCF. Estou faltando alguma coisa?
Solução
Ok, eu percebi isso, e seu tipo de mancha, na minha opinião. Eu implementou um sistema de filtro IP como um comportamento de serviço, em seguida, acrescentou que para o meu serviço no web.config. Aqui está a minha nova seção comportamentos de configuração web:
<serviceBehaviors>
<behavior name="ServiceBehaviour">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
<behavior name="RestrictedServiceBehaviour">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<IPFilter filter="172.*.*.* 127.0.0.1" />
</behavior>
</serviceBehaviors>
implementos classe A ipfilter IDispatchMessageInspector para pegar o pedido o mais rapidamente possível, inspeccionar o cliente IP e lançar uma exceção se ele não coincidir com o filtro. Se de ninguém I interessados ??podem postar meu código.
Outras dicas
Se o seu serviço está hospedado no IIS, em seguida, você pode fazer isso com o IIS, em uma base per-site (talvez por aplicativo, mas eu não sei).