2010-09-28 15 views
2

En allant de l'avant avec la re-conception d'une architecture de service Web à l'aide de WCF, notre équipe a discuté de la façon dont nous voulons exposer les points de terminaison. Exemple: J'ai un point de terminaison standard que tous les utilisateurs peuvent utiliser avec le jeton approprié, mais j'ai également un certain nombre de points de terminaison qui utiliseront à la place la sécurité du certificat. En fin de compte, tous les points de terminaison utiliseront la même implémentation. Il s'agit donc simplement de différentes manières d'accéder au système.Meilleure pratique pour exposer plusieurs points de terminaison spécifiques à un client dans un service WCF?

Les points de terminaison de certificat devront pointer vers un certificat spécifique dans le magasin et ne fonctionneront donc que pour un client spécifique. L'idée est que notre service standard pourrait vivre à http://mysite.com/MyService.svc et les points d'extrémité de certificat seraient quelque chose comme http://mysite.com/MyService.svc/Acme. Le souci ici est que je mets effectivement notre liste de clients dans notre WSDL, ce qui n'est pas souhaitable.

Quelle est la meilleure pratique ici? Existe-t-il un moyen de diriger plusieurs clients via un point de terminaison de certificat unique et d'obtenir le certificat du côté du code (comment saurions-nous quel client nous traitons sans point de terminaison spécifique)? Quelle est la meilleure façon de cacher cette liste de clients? Y a-t-il une solution entièrement meilleure que je ne vois pas?

Répondre

0

Vous n'avez pas besoin de créer un point de terminaison distinct pour chaque client. Créez un point de terminaison unique avec l'authentification basée sur le certificat client et implémentez votre propre X509CertificateValidator avec votre propre logique d'authentification.

1

Configurer votre comportement de service comme:

 <behavior name="CertBeh"> 

      <serviceCredentials> 

       <clientCertificate> 

        <authentication certificateValidationMode="PeerTrust" /> 

       </clientCertificate> 

      </serviceCredentials> 

     </behavior> 

PeerTrust dit WCF de regarder si les certificats fournis par les clients sont en magasin TrustedPeople. Mettez donc tous les certificats clients dans le magasin sur la boîte où se trouve votre service et tout ira bien. Voir this article pour d'autres options possibles.