Question

Je modifier mon API WCF pour inclure un nouveau service qui devrait être exposé à des adresses IP internes seulement. Tous les services de mon API sont disponibles dans SOAP, et POX JSON. Ce que je suis à la recherche est un comportement ou quelque chose qui me permet de mettre en place un simple filtre d'adresse IP, pour traiter les demandes de son IP interne et renie tout le reste. Je voudrais que cela fonctionne dans la configuration, parce que tous les autres services de l'API doivent rester disponibles à Internet. Je l'ai fait quelques googler, mais ne trouve pas quelque chose comme ça intégré dans WCF. Est-ce que je manque quelque chose?

Était-ce utile?

La solution

Ok, j'ai tout compris, et son genre de marée noire, à mon avis. Je mis en place un système de filtre IP comme un comportement de service, puis ajouté à mon service dans le web.config. Voici ma nouvelle section comportements de configuration 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>

La classe IPFilter implémente IDispatchMessageInspector pour attraper la demande le plus tôt possible, inspecter l'adresse IP du client et de lancer une exception si elle ne correspond pas au filtre. Si quelqu'un est intéressé je peux poster mon code.

Autres conseils

Si votre service est hébergé dans IIS, vous pouvez le faire avec IIS, sur une base par site (peut-être par application, mais je ne sais pas).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top