我在第三方 WCF 服务的身份验证方面遇到了一些问题。我不知道它是如何配置的,它对我来说就像一个黑匣子。我唯一知道的是,那些网络服务应该使用基本身份验证,但可能不会。
我添加了提琴手,甚至是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";
但我无法将这些Authorization
标头编码为 base64。我想知道如何配置我的客户端以获取这些标头以便在 web 服务端获得授权。我确实找到了一篇描述如何自己制作的文章。但也许有一种方法可以让它变得更容易?
更新 1:
我刚刚从第 3 方供应商处接收服务配置设置。Mb 它可以以某种方式帮助找出错误的原因。
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_1" >
<security mode="TransportCredentialOnly">
<message clientCredentialType="UserName"/>
</security>
</binding>
</basicHttpBinding>
</bindings>