2009-08-21 6 views
3

Notre installation comprend un service WCF et un certain nombre de clients que nous avons écrits. Certains clients incluent des applications Silverlight, tandis que d'autres incluent des applications Web et Windows.Authentification du certificat WCF sans installation sur le client

Je pense que je voudrais authentifier les clients basés sur les certificats X.509. En règle générale, vous installez une clé privée sur le client pour crypter (aka digitaly sign) les messages. Le serveur peut utiliser la clé publique du client pour la déchiffrer afin de s'assurer que le message n'a pas été modifié et prouver que le message provient de qui nous attendons (c'est-à-dire authentifié). Je ne veux pas installer un certificat sur une machine client. C'est un hassel à déployer, et nous ne pouvons pas vraiment demander à nos clients de le faire. Je parlais à quelqu'un l'autre jour qui a suggéré d'intégrer le CERT dans une assemblée client, de le lire et de l'utiliser. Est-ce possible?

Ce serait génial si quelqu'un pouvait me donner un exemple.

Merci à l'avance,

David

Répondre

2

Oui, vous pouvez charger X509certificate2 en passant un tableau d'octets de certificat avec un mot de passe comme

var certificate = new X509Certificate2(theByteArrary, "password"); 

Pour obtenir le tableau d'octets de certificat, vous pouvez simplement copier coller le contenu dans le fichier .pfx , qui est une combinaison de .cer (clé publique) et .pvk (clé privée)

puis vous pouvez charger ce certificat sur votre client en faisant:

var channelFactory = new ChannelFactory<IYourService>(); 
channelFactory.Credentials.ClientCertificate.Certificate = 
             clientCertificate; 

Si vous utilisez un proxy client généré automatiquement, ou si vous préférez configurer le certificat via un fichier .config alors vous voudrez peut-être jeter un oeil à this from codeproject

Questions connexes