2012-06-09 56 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

相關問題