我要添加另一個答案,只是爲了保持什麼不會在這個問題上的工作歷史。
這就是說,我終於通過customBinding工作。這次我已經三重檢查了IIS是否需要客戶端證書:)
它涉及在一個BizTalk應用程序的接收位置和另一個BizTalk應用程序的發送端口上創建自定義綁定,爲什麼?因爲我們的項目涉及一個Biztalk應用程序發送給另一個。
所以,把一切工作,我只好:
接收位置(接收應用程序)
- 使用Visual Studio中的WCF發佈嚮導使用重新發布接收應用程序「WCF-CustomIsolated」。我想要一個新的開始,並希望讓BizTalk/Visual Studio做他們的事情而不是猜測。
- 我去,並在在BizTalk管理控制檯編輯的接收位置。
- 設置textMessageEncoding messageVersion屬性Soap11,因爲這是我們一直在使用什麼
- 去除的
httpTransport
綁定元素,因爲如果你不這樣做,你不能添加httpsTransport
元素,它需要
- 添加了
security
元素。在這一點上,它看起來像這樣(的元素事項順序)
- 的
security
元件具有稱爲authenticationMode
的屬性將其切換到UserNameOverTransport。儘管名稱,這是允許用戶名與消息一起發送。在security
其他一切留下了默認
- 的
httpsTransport
有一個名爲requireClientCertificate
此設置爲「真」一切留下了默認值的屬性。
- 然後加到這是非常簡單的,之後,接收位置做我們所要求的行爲。
發送端口(發送應用程序)
這是幾乎相同的接收,但只是在發送的,而不是接收位置端口。
- 在綁定選項卡,我再說一遍所概述的接收位置的具體步驟
- 行爲標籤,我添加行爲擴展名爲
clientCredentials
併成立了以下值則ClientCertificate元素,它只是搶客戶端證書位於當前用戶存儲中,用於您的發送端口以運行的服務帳戶。
- 憑證選項卡我輸入了先前在WCF-BasicHttp適配器發送端口的安全選項卡中輸入的用戶名憑據。
一旦這些全部完成,2個應用程序現在應該能夠同時使用客戶端證書和用戶名,身份驗證來相互交談。
看到我對這個問題的回答,這基本上轉化爲非BizTalk WCF服務。 How to supply both UserName and Client Certificate in WCF client (why does this example work)?
並且不要忘記重新啓動主機實例。
編輯 - 紅利如果你最終導出/部署到不同的服務器,即使您導出和導入/單獨安裝web目錄,你可能會得到一個IIS說,它不能找到端點MyService/Myservice.svc認爲接收端口/位置被禁用。但是,這是因爲它現在是一個WCF-CustomIsolated。解決方案:打開已發佈服務的.svc文件,並將Factory
屬性從BasicHttpWebServiceHostFactory
更改爲CustomWebServiceHostFactory
您必須創建自定義行爲才能實現此目的。在這裏看到一篇關於雙層認證的文章(非BizTalk),可以幫助http://blogs.msdn.com/b/saurabs/archive/2013/05/05/10349529.aspx – Dijkgraaf
我仍然試圖得到這個加工。在非Biztalk環境中,您的評論有效。基本上,它歸結爲與像這樣一個customBinding配置所述接收位置: <綁定名稱= 「CustomCDARequestEndpointBinding」> <安全authenticationMode = 「UserNameOverTransport」/> < httpsTransport requireClientCertificate =「真」 /> customBinding>但是,BizTalk的customBinding配置,沒有'httpsTransport'綁定元素擴展 –
Bensonius
那麼現在,你怎麼在BizTalk端口允許'httpsTransport'綁定元素擴展,是讓這個工作的關鍵? – Bensonius