2012-06-09 55 views
0

我有一个需要与之通信的非WCF服务。我有服务的WSDL,它使用带有UsernameToken策略的WS-Security 1.0。头的与非WCF服务进行通信的最佳方式

例子:

<S11:Envelope xmlns:S11="..." xmlns:wsse="..."> 
<S11:Header> 
... 
<wsse:Security> 
<wsse:UsernameToken> 
<wsse:Username>username</wsse:Username> 
<wsse:Password>password</wsse:Password> 
</wsse:UsernameToken> 
</wsse:Security> 
... 
</S11:Header> 
... 
</S11:Envelope> 

这有什么服务沟通的最佳方式?

如果我使用WCF,使标题看起来像我需要的UsernameToken将成为一个问题,从我所知道的,对吧?我怎样才能做到这一点?

另一方面,我可以做一个非WCF代理,即使它是一种过时。

最好的方法是什么?

回答

1

如果该服务使用SSL,那么你可以有你的WCF的配置是这样的:

<customBinding> 
    <binding name="NewBinding0"> 
    <textMessageEncoding messageVersion="Soap11" /> 
    <security authenticationMode="UserNameOverTransport"> 
     <secureConversationBootstrap /> 
    </security> 
    <httpTransport /> 
    </binding> 
</customBinding> 

如果服务不使用SSL,那么你应该使用ClearUsernameBinding

+0

并使用非WCF代理?这是一个坏主意吗? – seth

+0

在你的情况下,这也是一个有效的想法。如果xml正文非常简单,那么您可以在没有序列化的情况下离开,只需要一个请求模板并将用户名头推送给它。如果你需要序列化,我推荐使用wcf而不是手动维护序列化程序集。但即使使用wcf,您也无法将其配置为执行任何安全措施,并通过自定义消息检查器自己推送用户名头。 –

+0

我结束了使用非wcf代理和wse 3.0。感谢您的帮助,我将您的答案标记为正确答案。 – seth

相关问题