2009-08-21 112 views
3

我們的設置包括一個WCF服務和我們編寫的一些客戶端。一些客戶端包括Silverlight應用程序,而其他客戶端則包括Web和Windows應用程序。WCF證書認證,無需安裝在客戶端

我(想)我想基於X.509證書來驗證客戶端。通常你會在客戶端安裝一個私鑰來加密(又名digitaly sign)這些消息。服務器可以使用客戶端公鑰對其進行解密以確​​保消息未被更改,並證明消息來自我們期望的人(又稱爲已認證)。

我不想在客戶機上安裝證書。它是無法部署的,我們不能真正要求我們的客戶這樣做。我前幾天向某個人說話,他們將證書嵌入客戶程序集中,閱讀並使用它。那可能嗎?

如果有人能指點我一個例子,那將會很棒。

由於提前,

大衛

回答

2

是的,你可以通過證書字節數組密碼一樣

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

拿到證書的字節數組裝載X509certificate2,你可以簡單地複製粘貼到.pfx文件內容,它是.cer(公鑰)和.pvk(私鑰)的組合。

然後你可以在你的客戶端加載這個證書:

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

如果您使用自動生成的客戶端代理,或者您更願意通過.config文件配置證書,那麼您可能需要看看this from codeproject