2012-04-05 56 views
2

我已經創建了一個接口ServiceContract在接口和OperationContract其所有的方法。我在一個類中實現了這個接口,然後在我的asp.net網站中,我添加了創建一個svc文件的wcf服務(因爲我想在IIS中使用我的網站託管它)。現在該服務已啓動並可通過http://localhost:8732/webui/webservice/camservice.svc訪問。現在我想爲這個服務啓用用戶名和密碼認證。我想svc使用basicHttpBinding,因爲我不必在我的web.config中使任何配置,使其運行。現在我怎樣才能啓用此服務的用戶名/密碼認證?互聯網上有很多文章,但我相信,wcf安全性是如此巨大,以至於我無法用我用過的方法獲得關於用戶名/密碼認證的重點解釋。我正在使用.net 4.0與vs 2010WCF用戶名和密碼的安全性與basicHttpBinding的 - 基於消息

編輯:好吧,我已經縮小了一點點的問題。我相信,消息級安全性是我需要什麼樣的

<security mode="Message"> 
       <message clientCredentialType="Certificate" /> 
      </security> 

,我可以走了SSL,但對於這一點,我將不得不去dB,各服務電話和認證用戶。我更喜歡的是具有有效證書的客戶由服務提供服務。我從this article得到了很多信息。它沒有解釋的是如何在客戶端和服務器上設置x509證書,以及如何控制只有我的客戶端可以獲取有效證書。

+0

是的WCF安全是一個巨人,如果你想創建安全的服務,你只需要學習至少基礎知識。例如,您希望在您的服務中使用哪種安全性?用戶名和passoword應該如何運輸?應該如何保護密碼? – 2012-04-05 08:02:56

+0

拉迪斯拉夫我想使用用戶名和密碼安全。 ''強制使用ssl。但我不想在第二步移動到ssl。在,第一步,我只是想設置用戶名和密碼添加到客戶端的郵件標題和服務器上正確的身份驗證。有沒有一種安全模式可以讓我這樣做? – 2012-04-05 09:35:11

回答

4

如果你想達到的用戶名密碼驗證不使用SSL,你可以使用一種叫做ClearUsernameBinding,可讓您通過HTTP傳輸的用戶名/密碼。

注意:只有當您的服務位於公司防火牆的後面時,才能使用此服務器,從而爲託管服務的服務器提供足夠的安全性。

在使用2路SSL而言,你需要它已根據本地計算機帳戶的個人存儲文件夾可信的機構或自簽名證書頒發您的服務器上安裝服務證書.PFX。

然後客戶端證書,你需要請求客戶端發送一個.CER文件,並安裝在服務器上在信任的人的存儲文件夾在本地計算機帳戶。

在客戶機上,您需要在當前用戶的個人存儲文件夾下安裝客戶機證書.pfx。

注意:當您的服務器上使用自簽名的證書,然後您的客戶端執行通過代碼到你的Web服務調用需要有下面的代碼是繞過該自簽名證書出現的安全異常:

System.Net.ServicePointManager.ServerCertificateValidationCallback = (sender, cert, chain, error) => 
                      { 
                       return true; 
                      }; 
相關問題