3

我已经使用 Java 和 WS-Security 在我们的产品中公开了几个 Web 服务。我们的一位客户想要使用 ColdFusion 使用 Web 服务。ColdFusion 是否支持 WS-Security?我可以通过编写 Java 客户端并在 ColdFusion 中使用它来解决它吗?

(我对 ColdFusion 了解不多)。

4

3 回答 3

5

我假设您的意思是您需要将安全性作为 SOAP 标头的一部分传递。这是有关如何连接到 .Net 服务的示例。同样的方法应该适用于 Java,只是 url 会有所不同。

<cfset local.soapHeader = xmlNew()>
<cfset local.soapHeader.TheSoapHeader = xmlElemNew(local.soapHeader, "http://someurl.com/", "TheSoapHeader")>
<cfset local.soapHeader.TheSoapHeader.UserName.XmlText = "foo">
<cfset local.soapHeader.TheSoapHeader.UserName.XmlAttributes["xsi:type"] = "xsd:string">

<cfset local.soapHeader.TheSoapHeader = xmlElemNew(local.soapHeader, "http://webserviceUrl.com/", "TheSoapHeader")>
<cfset local.soapHeader.TheSoapHeader.Password.XmlText = "bar">
<cfset local.soapHeader.TheSoapHeader.Password.XmlAttributes["xsi:type"] = "xsd:string">

<cfset theWebService = createObject("webservice","http://webserviceUrl.com/Webservice.asmx?WSDL")>
<cfset addSOAPRequestHeader(theWebService, "ignoredNameSpace", "ignoredName", local.soapHeader, false)>

<cfset aResponse = theWebService.SomeMethod(arg1)>

希望这是你需要的。

于 2008-10-07T12:01:55.577 回答
2

这可能更准确地生成“简单”xml 肥皂标头。上面的示例缺少几行。

Local['soapHeader'] = xmlNew();
Local['soapHeader']['UsernameToken'] =  xmlElemNew(local.soapHeader, "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", "UsernameToken");
Local['soapHeader']['UsernameToken']['username'] =  xmlElemNew(local.soapHeader, "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", "username");
Local['soapHeader']['UsernameToken']['username'].XmlText = Arguments.szUserName;
Local['soapHeader']['UsernameToken']['username'].XmlAttributes["xsi:type"] = "xsd:string";
Local['soapHeader']['UsernameToken']['password'] =  xmlElemNew(local.soapHeader, "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", "password");
Local['soapHeader']['UsernameToken']['password'].XmlText = Arguments.szPassword;
Local['soapHeader']['UsernameToken']['password'].XmlAttributes["xsi:type"] = "xsd:string";
addSOAPRequestHeader(ws, "ignoredNameSpace", "ignoredName", Local.soapHeader, false);
于 2012-07-19T18:51:43.050 回答
1

我从来没有做过任何 ws-security,也不知道 ColdFusion 是否可以使用它,但要回答你的第二个问题:

我可以通过编写一个java客户端并在coldfusion中使用它来解决它吗?

是的,一点没错。ColdFusion 可以轻松地使用 Java 对象和方法。

于 2008-10-03T21:28:57.290 回答