需要在WCF客户端调用webService时在(header)信息头中加入以下内容:
<wsse:Security mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken wsu:Id="UsernameToken-5700630" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:Username>username</wsse:Username>
<wsse:UserTokenID>password</wsse:UserTokenID>
</wsse:UsernameToken>
</wsse:Security>
其中username,和passwork会变化需要传入。
目前使用在config中加入
<client>
<endpoint address="http://localhost:81/="MessageTransportBinding"
binding="basicHttpBinding" bindingConfiguration="MessageTransportBinding"
contract="MessageTransportService.MessageTransportPort" name="MessageTransportPort" >
<headers>
<wsse:Security mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken wsu:Id="UsernameToken-5700630" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:Username>username</wsse:Username>
<wsse:UserTokenID>password</wsse:UserTokenID>
</wsse:UsernameToken>
</wsse:Security>
</headers>
</endpoint>
</client>
虽然实现了在消息中加入自定义的头,但是无法修改username和password的值。。。。
往大哥指教告诉我怎么才能按username和password的值生成相应的信息头并加入到消息的头区域。
Hi,
我查询到一个文章,你参考一下http://stackoverflow.com/questions/893588/wcf-adding-username-to-the-message-header-is-this-secure。里面有操作MessageHeader的代码,:
using (OperationContextScope scope = new OperationContextScope(myService2.InnerChannel))
{
Guid myToken = Guid.NewGuid();
MessageHeader<string> messageHeader = new MessageHeader<string>(HttpContext.Current.User.Identity.Name);
MessageHeader untyped = messageHeader.GetUntypedHeader("token", "ns");
OperationContext.Current.OutgoingMessageHeaders.Add(untyped);
lblResult.Text = myService2.GetData(1231);
}
你调用Web服务,应该可以对消息做处理,代码应该类似。
我不确定这个对你是否有参考价值http://social.msdn.microsoft.com/Forums/en-US/asmxandxml/thread/aa1e3c3a-be80-417e-a26e-233fe8c2ef5b。
希望对你的问题解决有帮助~
亲,请问您的问题解决了吗?