Java と WS-Security を使用して、当社の製品でいくつかの Web サービスを公開しました。お客様の 1 人が、ColdFusion を使用して Web サービスを利用したいと考えています。ColdFusion は WS-Security をサポートしていますか? Java クライアントを作成して ColdFusion で使用することで回避できますか?
(ColdFusion についてはよくわかりません)。
Java と WS-Security を使用して、当社の製品でいくつかの Web サービスを公開しました。お客様の 1 人が、ColdFusion を使用して Web サービスを利用したいと考えています。ColdFusion は WS-Security をサポートしていますか? Java クライアントを作成して ColdFusion で使用することで回避できますか?
(ColdFusion についてはよくわかりません)。
私はあなたが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)>
これがあなたが必要としていたものであることを願っています。
これはおそらく、「単純な」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);
私はws-securityを実行したことがなく、ColdFusionがそれを使用できるかどうかはわかりませんが、2番目の質問に答えます。
Javaクライアントを作成し、それをColdFusionで使用することで、これを回避できますか?
そのとおり。ColdFusionは、Javaオブジェクトとメソッドを簡単に使用できます。