Как создать клиент веб-службы ColdFusion, использующий WS-Security?

#web-services #coldfusion #ws-security

Вопрос:

Я представил несколько веб-сервисов в нашем продукте с использованием Java и WS-Security. Один из наших клиентов хочет использовать веб-сервис с помощью ColdFusion. Поддерживает ли ColdFusion WS-Безопасность? Могу ли я обойти это, написав Java-клиент и используя его в ColdFusion?

(Я мало что знаю о колдфузии).

Ответ №1:

Я предполагаю, что вы имеете в виду, что вам нужно передать защиту как часть заголовка SOAP. Вот пример того, как подключиться к a .Сетевое обслуживание. Тот же подход должен применяться и к 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)>
 

Надеюсь, это то, что вам было нужно.

Комментарии:

1. Мне придется попробовать это. Спасибо!

Ответ №2:

Это, вероятно, более точно для создания «простого» заголовка xml soap. В приведенном выше примере отсутствует несколько строк.

 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);
 

Ответ №3:

Я никогда не занимался ws-безопасностью и не знаю, может ли ColdFusion использовать ее или нет, но чтобы ответить на ваш второстепенный вопрос:

Могу ли я обойти это, написав java-клиент и используя его в coldfusion?

Да, безусловно. ColdFusion может легко использовать объекты и методы Java.