我在第三方的WCF服務上遇到了一些驗證問題。我不知道它是如何配置的,對我來說就像一個黑匣子。我知道的唯一一件事,那些web服務應該使用基本身份驗證,但可能不會。使用BasicHttpBinding和授權標頭的WCF服務身份驗證
我已經添加了fiddler,甚至wireshark來分析這些請求中發生了什麼,並發現請求與authorization
標頭確實得到驗證。所以基本上,使用SoapUI我可以在這些WCF服務上進行身份驗證。
我已經生成使用svcutil
測試客戶端和這樣的指定配置文件:
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_1" useDefaultWebProxy="false" >
<security mode="Message" >
<message clientCredentialType="UserName" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://theurl.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_1"
contract="CA_TestMediaSaturn.IDCIntegration" name="BasicHttpBinding_2" />
</client>
而且我在代碼文件中添加授權信息到客戶端:
client.ClientCredentials.UserName.UserName = "one";
client.ClientCredentials.UserName.Password = "two";
但我沒無法獲得在base64中編碼的頭文件。 我不知道如何配置我的客戶端來獲取這些頭以獲得Web服務端的授權。我確實發現了一個article描述如何自己做。但也許有辦法讓它變得更容易?
更新1:
我從第三方供應商只是接收器服務配置設置。 Mb它可以以某種方式幫助找出錯誤的原因。
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_1" >
<security mode="TransportCredentialOnly">
<message clientCredentialType="UserName"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
我應該在綁定配置部分添加''字符串嗎? –
順便說一句,使用傳輸級別需要https連接,但我的第三方的服務是http,我可以以某種方式解決它嗎? –
你可以設置mode =「TransportCredentialOnly」,然後憑證類型爲「基本」 –