我有一個WCF服務,將需要接收客戶端憑證,並保持某種形式的基於角色的數據的基礎上,我的身份驗證方法。WCF - 在頭中配置客戶端/服務器身份驗證?
客戶端將駐留在許多不同的系統,因此,每個客戶都會有一個唯一的用戶ID和PW。
我正在使用basicHttpBinding並閱讀了一些描述該過程的文章,例如這一個, http://nirajrules.wordpress.com/2009/05/22/username-over-https-custombinding-with-wcf%E2%80%99s-channelfactory-interface/。
所以,我正在尋找的是如果有人這樣來配置,以看一看,所以我可以得到這個我自己的解決方案一個完整的客戶端/服務器。
我希望做的是在標題爲每個請求通過用戶名和密碼,傳回某種SecurityTokenValidationException上失敗,或者如果繼續傳遞。
謝謝。
UPDATE
我使用的是與客戶端和服務器上的以下配置中的WSHttpBinding:
<wsHttpBinding>
<binding name="wsHttpEndpointBinding" >
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="Basic" />
<message clientCredentialType="UserName" />
</security>
</binding>
</wsHttpBinding>
並從客戶端調用外面的服務器如下:
ServiceReference1.ServiceClient myClient = new ServiceReference1.ServiceClient();
myClient.ClientCredentials.UserName.UserName = "billuser";
myClient.ClientCredentials.UserName.Password = "mypassword";
Response.Write("Data from WCF Service: " + myClient.GetData(1));
我想我需要一點點連接服務器上的CustomUsernamePasswordValidator,因爲我仍然得到「......無法啓動」。錯誤。
當我從basicHttpBinding的切換到WsHttpBinding的(端點綁定=「的wsHttpBinding」 bindingConfiguration =「wsHttp」)我得到錯誤「的請求的服務......不能啓動。請參見服務器的診斷跟蹤日誌更多信息。」由於這是託管解決方案,因此我無法訪問日誌。 我正在通過https執行此操作。 – ElHaix 2009-11-26 02:56:47
如果您使用的是https,您是否爲綁定配置了傳輸安全性?傳輸安全意味着傳輸協議加密通道。由於您使用的是https,因此您需要爲綁定啓用傳輸安全性。嘗試配置,看看它是否工作。您可能需要能夠看到完整的異常報告才能使安全工作。啓動和運行通常是一些試驗和錯誤......它並不是真正的「困難」,只是在您第一次實現端點安全性時「不明顯」。 – jrista 2009-11-26 04:54:58
對於WsHttpBinding的爲客戶端和服務器,我設置安全模式=「TransportWithMessageCredential」,運輸clientCredentialType =「基本」,消息clientCredentialType =「用戶名」。所以通過錯誤信息,我知道他們正在互相交談,只是不正確:)。在進行服務調用之前,我還設置了proxy.ClientCredentials.UserName.UserName和proxy.ClientCredentials.UserName.Password(如果我沒有,那是另一個錯誤)。 – ElHaix 2009-11-26 05:03:11