我正在尝试在 Silverlight 客户端和 Java 服务器之间设置 Web 服务。我需要从 Silverlight 客户端发送用户名令牌(用户名/密码)以进行身份验证。由于这是一个概念验证,我想让事情变得简单并使用 HTTP 作为我的传输层。然而,Silverlight 似乎只支持通过 HTTPS 的用户名令牌(Visual Studio 无法从我的通过 HTTP 处理用户名令牌的 Java 服务器中消化 WSDL)。
所以我的问题是:如何在 Silverlight 客户端发送的 SOAP 标头中添加用户名/密码信息 - 仍然使用 basicHttpBinding 和 HTTP?它不必符合 WS-Security。像这样简单的事情就足以满足我的应用程序:
<soapenv:Header>
<UsernameToken>
<Username>john</Username>
<Password>cool</Password>
</UsernameToken>
</soapenv:Header>
看看IClientMessageInspector http://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.iclientmessageinspector.aspx。在里面BeforeSendRequest
您可以添加用户名/密码的方法:
public object BeforeSendRequest(ref Message request, System.ServiceModel.IClientChannel channel)
{
request.Headers.Add(MessageHeader.CreateHeader("username", "", "user"));
request.Headers.Add(MessageHeader.CreateHeader("password", "", "pass"));
return null;
}
您必须将其添加到您的绑定中:
BasicHttpMessageInspectorBinding binding = new BasicHttpMessageInspectorBinding(new MessageInspector());
var myWs= new MyWsClient(binding, new EndpointAddress(new Uri(Uri)));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)