2013-07-19 303 views
1

我正在使用C#,帶有WCF的asp.net應用程序。通過將客戶端和服務器證書進行匹配來驗證WCF

我已經創建了一個客戶端證書(Client.pfx),並安裝在我的機器當前用戶下。然後我在我的WCF託管機器中創建並安裝了一個服務器證書(Server.pfx)。現在我需要通過將客戶端和服務器證書一起匹配從客戶端進行身份驗證。如果匹配,那麼它將不得不允許訪問WCF內部的方法。如何實現這一目標?

+0

你能詳細說明你的意思嗎?「匹配證書」?兩臺機器都有相同的證書嗎? –

+0

要從客戶端應用程序對WCF進行身份驗證,我們需要匹配是否在WCF託管的服務器中配置相同的證書。因此,如果配置的服務器和客戶端證書相同,則該服務將進行身份驗證。 –

回答

0

您不必編寫代碼來執行證書認證 - 這可以通過配置來處理。

從這篇文章:

http://msdn.microsoft.com/en-us/library/ff648360.aspx

有多種方式來指定證書的位置。這個例子是使用證書存儲服務:

<behaviors> 
    <serviceBehaviors> 
    <behavior name="ServiceBehavior"> 
     <serviceMetadata httpGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="false" /> 
     <serviceCredentials> 
      <serviceCertificate findValue="CN=tempCertServer" /> 
     </serviceCredentials> 
    </behavior> 
    </serviceBehaviors> 

而這一次使用在配置文件中直接編碼的證書:

<system.serviceModel> 
    <behaviors> 
     <endpointBehaviors> 
      <behavior name="NewBehavior"> 
       <clientCredentials> 
        <clientCertificate findValue="CN=tempCertClient"/> 
       </clientCredentials> 
      </behavior> 
     </endpointBehaviors> 
    </behaviors> 
    ... 
    <client> 
     <endpoint address="http://<<service address>>" 
      behaviorConfiguration="NewBehavior" binding="wsHttpBinding" 
      bindingConfiguration="wsHttpEnpoint1" contract="ServiceReference1.IService" 
      name="wsHttpEndpoint"> 
      <identity> 
       <certificate encodedValue="<<Encode Value>>" /> 
      </identity> 
     </endpoint> 
    </client> 
</system.serviceModel> 
+0

這是WCF web.config文件嗎? –

+0

是的 - 是的。瞭解證書是一個很大的話題 - 你必須做的不僅僅是從這裏複製和粘貼某人的答案。我建議讀一下關於證書和WCF配置的內容。 – RQDQ

0

你在說什麼關於Praveen,是客戶端證書認證。有很多關於這方面的文章,但基本上你有兩個認證選項,當使用客戶端證書認證:

一個被稱爲ChainTrust,這意味着客戶端證書具有作爲其證書頒發機構(CA)的基礎上在主機上找到的證書。

另一個選項稱爲PeerTrust,它表示客戶端身份驗證證書在主機上的LocalMachine \ TrustedPeople存儲中的主機上找到了副本。

或者你可以使用PeerOrChainTrust,這意味着如果在鏈或同行的信任是真實的,允許客戶端在

這是一個很大的話題 - 太大了,這個小論壇,但這裏有一個很好的起點點開始爲:

這裏有一個鏈接; http://msdn.microsoft.com/en-us/library/ff650785.aspx

+0

我的情況是從客戶端創建一個證書,並將此證書的副本發送給WCF託管方進行審批,就像First Data API的工作方式一樣。那麼我需要採用什麼方法? –

+0

你談論的這種方法對我來說是新的。我使用的開發模型允許WCF服務根據客戶端所匹配的證書(基於我在我的回答中概述的內容)在主機上找到的證書向客戶端驗證客戶端。你所說的聽起來更像是一個證書註冊過程......我不知道你是如何完成這項工作的。 – Brian

相關問題