0

这有点牵强,我希望有 WSS4CF 经验的人能确切地知道我在说什么。

我们正在尝试访问远程 Web 服务,需要带有用户名/密码的 WS 安全性。在使用 SOAP +<cfhttp>并遇到课堂问题后,我的同事建议我看看WSS4CF。这似乎正是我需要避免需要处理那些额外的 jar 文件等。

没有提供示例,我注意到 cfc(在此处查看)似乎被配置为使用类似 dotNet SOAP 服务的东西,您只需调用带有参数的方法,例如

<cfinvoke 
            webservice="https://service.gov.au/OrgService.svc?WSDL" 
            refreshwsdl="true"
            method="Search"
            returnvariable="aSearch">
                <cfinvokeargument name="request" value="#arguments.sXML#"/>
        </cfinvoke>

WSS4CF 首先创建一个安全的 Web 服务,然后在该安全环境中发出请求。我尝试了上面的代码,但它不起作用(没想到会这样)。该服务需要一个 xml 数据包,而不是带有参数的方法调用。

而不是摆弄它,我需要将它配置为与 cfhttp 一起使用,我们在 cfhttpparam 中传递一个 xml 信封,例如如下:

<cfhttp
    url="/service.gov.au/OrgService.svc?WSDL"
    method="post">

    <cfhttpparam type="header" name="content-type" value="application/soap+xml" /><!---text/xml--->
    <cfhttpparam type="header" name="SOAPAction" value="http://service.gov.au/services/IOrgService/Search"/>
    <cfhttpparam type="header" name="accept-encoding" value="no-compression" />
    <cfhttpparam type="xml" value="#trim(sXML)#"/>

</cfhttp> 

对此的任何帮助将不胜感激。我不指望人们研究图书馆,除非他们感兴趣。更希望有使用过WSS4CF的人可以提供一些启发。

4

1 回答 1

0

尽管它本身没有使用 WS-Security,但这里的答案可能会帮助您完成您所追求的事情,假设您可以在消息头中发送 WS-Security 数据包(维基百科向我保证可以)。在这种方法中,您使用 cfinvoke,但添加一个标头,在您的情况下是 ws-security 标头。您仍然必须自己组装标题,但我认为这是可能的

于 2012-08-07T08:50:01.493 回答