كيف يمكنني إنشاء عميل خدمة كولد فيوجن ويب يستخدم WS-الأمن؟

StackOverflow https://stackoverflow.com/questions/168798

سؤال

ولقد تعرضت العديد من الخدمات على شبكة الإنترنت في منتجاتنا باستخدام جافا وWS-الأمن. واحد من عملائنا يريد أن تستهلك خدمة الويب باستخدام كولد فيوجن. هل يدعم كولد فيوجن WS-الأمن؟ هل يمكنني الحصول على من حوله من خلال كتابة العميل جافا واستخدام ذلك في كولد فيوجن؟

و(أنا لا أعرف الكثير عن كولد فيوجن).

هل كانت مفيدة؟

المحلول

وأفترض يعني أنك تحتاج إلى تمرير الأمن في كجزء من رأس SOAP. وفيما يلي عينة حول كيفية الاتصال بخدمة صافي. وينبغي أن تطبق نفس النهج ث / جافا، فقط رابط ستكون مختلفة.

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

وهذا الأمل هو ما كنت في حاجة.

نصائح أخرى

وربما هذا هو أكثر دقة لإنتاج "بسيط" رأس الصابون أكس. في المثال أعلاه مفقود بضعة أسطر.

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-الأمن، ولا أعرف إذا كولد فيوجن يمكن أن تستهلك ذلك أم لا، ولكن للإجابة على السؤال الثانوي:

<اقتباس فقرة>   <اقتباس فقرة>     

هل يمكنني الحصول على من حوله من خلال كتابة جافا العميل واستخدام ذلك في كولد فيوجن؟

  

نعم، بالتأكيد. كولد فيوجن يمكن بسهولة استخدام كائنات جافا والأساليب.

وأنا أفعل بعض البحوث على WS-يوفر الوظائف التالية وكولد فيوجن نفسي لبعض الوقت، ويمكن القول بالتأكيد أن المثال أعلاه لا يشكل تنفيذ WS-الأمن. على الرغم من أن يتم إرسال اسم المستخدم وكلمة المرور في رأس، ويتم إرسالها في نص عادي. استخدام SSL سوف تساعد، ولكن WS-الأمن أكثر بكثير من العمل الذي مجرد تطبيق هذا القانون. كولد فيوجن أصلا لا يدعم WS-الأمن، ولكن يمكن بسهولة استخدام كائنات جافا والأساليب. هناك حزمة من طراز أباتشي دعا WSS4J التي لا توفر وسيلة لتنفيذ WS-الأمن في جاوة. يمكنك كتابة المجمع ومن ثم الاستفادة منه في كولد فيوجن. I persoanlly كانت قادرة على القيام بذلك، ومع ذلك، يجب أن يكون هناك تغيير التكوين صغير على الجانب كولد فيوجن التي أواجه بعض المشاكل مع.

وإذا كان أي شخص يستطيع مساعدتي من جانب التكوين، ويهمني ان نقدر ذلك حقا.

وديمتري

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top