2008-10-03 3 views
3

Java 및 WS-Security를 ​​사용하여 제품에서 여러 웹 서비스를 노출했습니다. 고객 중 한 명이 ColdFusion을 사용하여 웹 서비스를 사용하려고합니다. ColdFusion은 WS-Security를 ​​지원합니까? Java 클라이언트를 작성하고이를 ColdFusion에서 사용하여이 문제를 해결할 수 있습니까?WS-Security를 ​​사용하는 ColdFusion 웹 서비스 클라이언트는 어떻게 만듭니 까?

(ColdFusion에 대해 많이 알지 못합니다).

답변

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

희망이 있습니다.

+0

나는 이것을 시험해보아야 할 것이다. 감사! – ScArcher2

1

나는 어떤 WS-보안을 해본 적이 없다, 및 ColdFusion 그것을 소비 또는 아니지만, 보조 질문에 대답 할 수 있는지 모르겠어요

이 난을 작성하여 주위를받을 수 자바 클라이언트와 coldfusion에서 그것을 사용하고 계십니까?

예, 물론입니다. ColdFusion은 Java 객체 및 메소드를 쉽게 사용할 수 있습니다.

1

WS-Secuirty 및 ColdFusion에 대한 조사를 얼마 동안하고 있으며 위 예제가 WS-Security의 구현이 아니라고 말할 수 있습니다. 헤더에 사용자 이름과 비밀번호가 전송 되더라도 일반 텍스트로 전송됩니다. SSL을 활용하면 도움이되지만 WS-Security는이 코드를 적용하는 것보다 훨씬 더 많은 작업입니다. ColdFusion은 기본적으로 WS-Security를 ​​지원하지 않지만 Java 객체 및 메소드를 쉽게 사용할 수 있습니다. Apache의 WSS4J라는 패키지는 Java에서 WS-Security를 ​​구현하는 수단을 제공합니다. 래퍼를 작성한 다음 ColdFusion에서 활용할 수 있습니다. persoanlly 그렇게 할 수 있었지만 ColdFusion 측에서 약간의 구성 변경이 필요합니다. 일부 문제가 있습니다.

누군가가 구성 부분에서 나를 도와 줄 수 있다면 정말 고맙겠습니다.

드미트리

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); 
관련 문제