如果需要通过HTTPS发送用户名,则可以使用标准方法(如果正确定义了WSDL,则应该通过添加服务引用为您自动创建):
<bindings> <basicHttpBinding> <binding name="secured"> <security mode="TransportWithMessageCredential"> <message clientCredentialType="UserName" /> </security> </binding> </basicHttpBinding></bindings><client> <endpoint name="..." address="https://..." contract="..." binding="basicHttpBinding" bindingConfiguration="secured" /></client>
您可以在代码中定义绑定:
var basicHttpBinding = new BasicHttpBinding(BasicHttpSecurityMode.TransportWithMessageCredential);basicHttpBinding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;
您现在将在代理中设置凭据:
client.ClientCredentials.UserName.UserName = "bob";client.ClientCredentials.UserName.Password = "1234";
如果只需要HTTP上的UserNameToken配置文件,而没有任何其他WS-
Security基础结构,则最简单的方法是使用ClearUserNameBinding。
如果您对来自客户端的所有请求都需要相同的用户名和密码,则可以使用没有任何安全性的简单basicHttpBinding并包括配置中的静态标头:
<client> <endpoint ...> <headers> <wsse:UsernameToken xmlns:wsse='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd' > <wsse:Username>Bob</wsse:Username> <wsse:Password Type='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText'>1234 </wsse:Password> </wsse:UsernameToken> </headers> </endpoint></client>
如果您需要更复杂的内容,请显示WSDL(安全性断言)的相关部分或示例SOAP请求。还要提及是否需要使用HTTP或HTTPS。



