<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blogs &#187; What If</title>
	<atom:link href="http://software.intel.com/en-us/blogs/tag/what-if/feed/" rel="self" type="application/rss+xml" />
	<link>http://software.intel.com/en-us/blogs</link>
	<description></description>
	<lastBuildDate>Fri, 25 May 2012 22:49:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Intel® OpenCL SDK – Alpha update now available</title>
		<link>http://software.intel.com/en-us/blogs/2011/02/10/intel-opencl-sdk-alpha-update-now-available/</link>
		<comments>http://software.intel.com/en-us/blogs/2011/02/10/intel-opencl-sdk-alpha-update-now-available/#comments</comments>
		<pubDate>Thu, 10 Feb 2011 14:52:18 +0000</pubDate>
		<dc:creator>Arnon Peleg (Intel)</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[Graphics & Media]]></category>
		<category><![CDATA[Parallel Programming]]></category>
		<category><![CDATA[openCL]]></category>
		<category><![CDATA[What If]]></category>

		<guid isPermaLink="false">http://software.intel.com/en-us/blogs/2011/02/10/intel-opencl-sdk-alpha-update-now-available/</guid>
		<description><![CDATA[Intel continues to demonstrate its commitment to parallel computing tools and standards support with the recent announcement of an update to the Intel® OpenCL SDK alpha version on WhatIf.intel.com. This update release brings full coverage of the OpenCL™ 1.1 standard to the Intel® Core™ processors, and supports both 32-bit and 64-bit applications. Currently, Microsoft* Windows* [...]]]></description>
			<content:encoded><![CDATA[<p>Intel continues to demonstrate its commitment to parallel computing tools and standards support with the recent announcement of an update to the Intel® OpenCL SDK alpha version on <a href="http://software.intel.com/en-us/whatif/">WhatIf.intel.com</a>.<br />
This update release brings full coverage of the OpenCL™ 1.1 standard to the Intel® Core™ processors, and supports both 32-bit and 64-bit applications. Currently, Microsoft* Windows* 7 and Windows Vista* operating systems are supported.</p>
<p>On the web site <a href="http://software.intel.com/en-us/whatif">WhatIf.intel.com</a>, Intel provides Alpha software free of charge, but without any warranty that it works as expected or will be supported as is in the future. Nevertheless, this release gives you the opportunity to experiment with OpenCL* capabilities on Intel CPUs long before they become available as a commercial product on Intel platforms.</p>
<p>OpenCL* is an emerging standard from the Khronos Group industry consortium. As a Khronos founder and promoter, Intel has made significant contributions to OpenCL* feature set and continue to be part of the Khronos OpenCL* Working Group. Intel is a strong supporter of open industry standards that create developer choice and foster innovation. The Intel® OpenCL SDK is an addition to Intel’s proven, innovative parallel programming tools available to developers.</p>
<p>Lots of great feedback has helped us to shape this update release. And here's just a sample of what's new:</p>
<blockquote>
<ul>
<li><strong>64 bit support</strong></li>
<li><strong>Full coverage of the OpenCL* 1.1 standard on the CPU</strong> (check <a href="http://software.intel.com/en-us/articles/intel-opencl-sdk/">Intel® OpenCL SDK</a> website for conformance status)
</li>
<li><strong>Preview Feature:</strong> Support for printf() in OpenCL* C kernels (cl_intel_printf)
</li>
<li>Intel OpenCL Offline compiler bug fixes and improvements</li>
</ul>
</blockquote>
<p>Intel® OpenCL SDK is based on a published Khronos Specification, and is expected to pass the Khronos Conformance Testing Process. Current conformance status can be found at <a href="www.khronos.org/conformance">www.khronos.org/conformance</a>.</p>
<p>* OpenCL and the OpenCL logo are trademarks of Apple Inc. used by permission by Khronos.</p>
<p><strong>You can learn more and download this alpha from the <a href="http://software.intel.com/en-us/articles/intel-opencl-sdk/">Intel® OpenCL SDK</a> website.</strong></p>
<p>You can share your feedback with us through our <a href="http://software.intel.com/en-us/forums/intel-opencl-sdk/">support forum</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/en-us/blogs/2011/02/10/intel-opencl-sdk-alpha-update-now-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Joint lifetime and access synchronization algorithm for shared dynamic objects</title>
		<link>http://software.intel.com/en-us/blogs/2011/01/26/joint-lifetime-and-access-synchronization-algorithm-for-shared-dynamic-objects/</link>
		<comments>http://software.intel.com/en-us/blogs/2011/01/26/joint-lifetime-and-access-synchronization-algorithm-for-shared-dynamic-objects/#comments</comments>
		<pubDate>Wed, 26 Jan 2011 17:55:25 +0000</pubDate>
		<dc:creator>Anton Malakhov (Intel)</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Parallel Programming]]></category>
		<category><![CDATA[Performance and Optimization]]></category>
		<category><![CDATA[TBB]]></category>
		<category><![CDATA[Threading Building Blocks]]></category>
		<category><![CDATA[What If]]></category>

		<guid isPermaLink="false">http://software.intel.com/en-us/blogs/2011/01/26/joint-lifetime-and-access-synchronization-algorithm-for-shared-dynamic-objects/</guid>
		<description><![CDATA[Modern programming practices and computer languages (like .NET) tend to dynamically create and destroy objects at run-time, but how does it correlate with multi-core-enabled programming? A parallel program may need to synchronize both lifetime of- and access to- an object in shared memory. Known methods suffer from either limitation of scalability or additional synchronization overhead. [...]]]></description>
			<content:encoded><![CDATA[<p>Modern programming practices and computer languages (like .NET) tend to dynamically create and destroy objects at run-time, but how does it correlate with multi-core-enabled programming? A parallel program may need to synchronize both lifetime of- and access to- an object in shared memory.</p>
<p>Known methods suffer from either limitation of scalability or additional synchronization overhead. For example, the most popular implementation for erasing an item from a concurrent container is to exclusively lock the item before or after cutting it out from a list. So, no one can see (find) and access it anymore thus it’s safe to destroy it completely. It involves fairly small overhead if there is no contention but otherwise it leads to blocking of a thread destroying the object and so imposes scalability degradation. And in some situations, it can cause a deadlock.</p>
<p>To unlock scalability and to enable multiple references, a reference counter is usually used in combination with mutual exclusion. Each owner thread increments the counter to acquire access. To release the rights or to remove the object, the counter is decremented. The thread which reaches zero destroys the object. This method involves overhead of two (!) additional atomic operations (per turn) modifying the counter.</p>
<p>The new algorithm was developed (but not yet released) to overcome described issues while combining theirs strengths in concurrent_hash_map container distributed within Intel® Threading Building Blocks. But it is general enough to be used widely in similar situations and with any other container or collection of objects that accessed and destroyed concurrently.</p>
<p>Usually, a mutual exclusion and a reference counter are represented by separate synchronization objects because their functions are considered as orthogonal. It means separate synchronization. But used in combination, all status fields can be read at once without explicit synchronization and some joint operations can be optimized to only one atomic RMW operation which performs synchronization only once reducing the overhead.</p>
<p>The algorithm enables this optimization by combining spin lock and reference counter inside one machine word of one synchronization object. It which provides the same functionality as its parts while also enabling extra functionality such as full and recurrent lifetime cycle of a dynamic object with stages of construction and destruction, which are protected by mutual exclusion. Of course, recycling is useful only for user objects that are not deallocated after destruction.</p>
<p style="text-align: center"><a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2011/01/Pictures-Joint_Synchronization.png"><img class="size-full wp-image-23538 aligncenter" src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2011/01/Pictures-Joint_Synchronization.png" alt="" width="380" height="410" /></a></p>
<p>Separate operations that don’t benefit from the combination can still be executed separately by addressing only necessary parts of the synchronization object and thus reducing the synchronization effort.</p>
<p>Another optimization which becomes possible due to one atomic read of all fields is considering the acquired mutex to be a reference to the object without an explicit increment of the reference counter. In other words, the lock operation does not touch the reference counter at all, while still keeping the object marked as “in use”. There are also other tricks improving scalability and fail-safety guarantees that may be interesting to experts.</p>
<p>However, users interested in improving scalability and performance of theirs synchronization may need some new high-level usage model to apply this synchronization algorithm. A prototype of such an interface may be like std::shared_ptr but with some additional semantics to manage also access rights to an object.</p>
<p>If you are interested in this idea, I will probably provide more details in the next blog. And perhaps then, your feedback will help us to finally release the code (which already 2 years waits its turn) as part of TBB.</p>
<p>Update: Thanks for comments! Let me clarify the purpose of this technique. It is a small-sized synchronization primitive that is suitable to individually protect each object from a swarm of similar objects. And so, it is *not* supposed to handle heavy contended case with a lot of threads trying to lock/attach to the same object nor to support thousands of references (yes, 16 bit ref counter is enough, otherwise it is not the primitive you need). Here, under scalability I meant that it allows to unlock a list (bucket) which contains up to several objects while desired object is locked by a busy thread. Thus, many threads accessing many different objects which can share the same list finally meet less contention - it is what reference counter is about. It is probably a subject for separate blog where I can show the use case in pseudo-code.</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/en-us/blogs/2011/01/26/joint-lifetime-and-access-synchronization-algorithm-for-shared-dynamic-objects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Try Intel® SOA Expressway software for yourself....</title>
		<link>http://software.intel.com/en-us/blogs/2010/12/06/try-intel-soa-expressway-software-for-yourself/</link>
		<comments>http://software.intel.com/en-us/blogs/2010/12/06/try-intel-soa-expressway-software-for-yourself/#comments</comments>
		<pubDate>Mon, 06 Dec 2010 10:28:03 +0000</pubDate>
		<dc:creator>Pete Logan (Intel)</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[What If]]></category>

		<guid isPermaLink="false">http://software.intel.com/en-us/blogs/2010/12/06/try-intel-soa-expressway-software-for-yourself/</guid>
		<description><![CDATA[Just a quick post to let people know that they can now try SOA Expressway directly themselves. Go to the DynamicPerimeter.com portal and you can select to download Services Designer to use yourself to write a web service or proxy (don't worry, we'll provide step by step instructions). We'll then set up a cloud instance [...]]]></description>
			<content:encoded><![CDATA[<p>Just a quick post to let people know that they can now try SOA Expressway directly themselves. Go to the <a href="http://www.dynamicperimeter.com/download/SOAExpressway" target="_blank">DynamicPerimeter.com</a> portal and you can select to download Services Designer to use yourself to write a web service or proxy (don't worry, we'll provide step by step instructions). We'll then set up a cloud instance of the runtime for you to deploy your service onto and experiment with for 2 days.</p>
<p>As always, if you want to take things further and are evaluating SOA Expressway in order to make a decision to buy then we have pre sales engineers ready to get involved and help with your use case.</p>
<p><a href="http://www.dynamicperimeter.com/download/SOAExpressway" target="_blank">Evaluate SOA Expressway here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/en-us/blogs/2010/12/06/try-intel-soa-expressway-software-for-yourself/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using a Service Gateway to Protect against the OWASP Top 10</title>
		<link>http://software.intel.com/en-us/blogs/2010/11/09/using-a-service-gateway-to-protect-against-the-owasp-top-10/</link>
		<comments>http://software.intel.com/en-us/blogs/2010/11/09/using-a-service-gateway-to-protect-against-the-owasp-top-10/#comments</comments>
		<pubDate>Tue, 09 Nov 2010 18:17:15 +0000</pubDate>
		<dc:creator>Blake Dournaee (Intel)</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[authentication]]></category>
		<category><![CDATA[content attack]]></category>
		<category><![CDATA[cryptographic storage]]></category>
		<category><![CDATA[csrf]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[owasp]]></category>
		<category><![CDATA[sql injection]]></category>
		<category><![CDATA[threats]]></category>
		<category><![CDATA[tls]]></category>
		<category><![CDATA[What If]]></category>
		<category><![CDATA[XML Security]]></category>
		<category><![CDATA[xss]]></category>

		<guid isPermaLink="false">http://software.intel.com/en-us/blogs/2010/11/09/using-a-service-gateway-to-protect-against-the-owasp-top-10/</guid>
		<description><![CDATA[The Open Web Application Security Project (OWASP) maintains and publishes an oingoing list of top ten threats to web applications. With some of exceptions, the threats listed in the OWASP top ten can be applicable to any service, be it a web application, REST service, SOAP service or custom application. It is interesting to note [...]]]></description>
			<content:encoded><![CDATA[<p>The Open Web Application Security Project (OWASP) maintains and publishes an oingoing list of <a href="http://www.owasp.org/index.php/Top_10">top ten threats</a> to web applications. With some of exceptions, the threats listed in the OWASP top ten can be applicable to any service, be it a web application, REST service, SOAP service or custom application. It is interesting to note that while there are changes to the bottom five threats, the top five threats remain unchanged since 2007. That is, despite increased awareness and adoption of security technologies, our top application vulnerabilities are essentially unchanged over the last three years or so!</p>
<p>Why is this the case? One reason is that security policy enforcement remains tightly coupled to applications, making security a hard problem for the average developer.  In fact, the phrase 'tight coupling' may not even go far enough to describe the problem. A better way to put it is that application code or business logic is <em>irrevocably enlaced </em>with security processing. The same code processing a purchase order or rendering HTML content is probably also performing a wide range of security processing such as input validation, digital signature verification, decryption, authentication, access control, authorization and numerous other functions.</p>
<p>This is a problem because, let's face it, as evidenced by the OWASP top ten, software developers aren't security architects; they solve different problems in their day to day jobs.  When it comes down to doing code reviews or auditing security policy, the existing security code is bound up with the rest of code. It becomes difficult to figure out where the security processing starts and stops without doing a full code review - and who has time for that?  </p>
<h2>Are we all Insane?</h2>
<p>Based on the most recent OWASP, it appears that we haven't made more than marginal improvements in application security. A famous Einstein quote seems to reflect the situation:<br />
<blockquote>"Insanity: doing the same thing over and over again and expecting different results.” - Einstein</p></blockquote>
<p>Rather than constantly hound developers to improve input validation or write more secure code maybe there is a better way? Rather than focus on what hasn't worked it's time divide and conquer this problem by moving security away from applications into a dedicated gateway.</p>
<h2>Service Gateways: The Art of Decoupling</h2>
<p>So what do we mean by decoupling in this context? To the extent possible, we need to stop the trend of<em> irrecovably enlaced </em>security processing and break these functions away from the application server and into a dedicated gateway where they become the responsibility of a security architect, not an application programmer. This means that security processing such as threat defense and trust functions should be the job of a dedicated service gateway not intertwined with the application. With this model,  the service gateway provides a virtual endpoint for the real application, be it a SOAP or REST service, and enforces security on the wire.  The basic model is shown as follows:</p>
<p><a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/service-gateway-architecture.png"><img src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/service-gateway-architecture-300x135.png" alt="" width="300" height="135" class="alignnone size-medium wp-image-19874" /></a></p>
<p>In this model, there is a simple trust relationship between the gateway and the application server. The hard work of threat prevention and trust enablement is done by the gateway and presents only secured messages to the application server. This protection is more than just one way: It is also able to protect clients, especially browsers. It does this by also scanning and cleansing messages as they are returned to clients. This bi-directional control is what allows the gateway to combat some of the OWASP top 10 threats quite effectively, all without lengthy code reviews or micro-managed changes to application logic.</p>
<p>So how can a service gateway provide additional protection against the OWASP Top 10? Let's go through the risks for 2010 and see how these are addressed with Intel(R) SOA Expressway, <a href="http://www.dynamicperimeter.com?partnerref=bhdblog">Intel's service gateway product</a>.</p>
<h3>Threat: A1- Injection</h3>
<blockquote><p>Injection flaws, such as SQL, OS, and LDAP injection, occur when untrusted data is sent to an  interpreter as part of a command or query. The attacker’s hostile data can trick the interpreter into executing unintended commands or accessing unauthorized data.</p></blockquote>
<p>
<b>Serivce Gateway Mitigation:</b> Code injection comes in many forms and part of the reason for it stems from weakly typed programming languages such as JavaScript and lack of input validation. Fortunately, common code injection techniques can be easily trapped by a security gateway using a defense in depth approach with multiple layers of protection. Beginning at the very bottom, type checking can be enforced on the wire with XML schema types, but since many schemas are extensible by design this is only the beginning. After type enforcement specific language specific attacks can be scanned for such as SQL Injection and XPath injection. Furthermore, since code injection is context dependent and may include shell injection, LDAP calls, PHP code and other languages (maybe some yet unforeseen) the service gateway provides a full regular expression capability for both required and forbidden regular expressions. This will allow the gateway to trap any possible code injection at the perimeter. The best part is that this sort of input validation is no longer required at the application server. Developers rejoice!</p>
<h3>Threat: A2 - Cross-Site Scripting (XSS)</h3>
<blockquote><p>XSS flaws occur whenever an application takes untrusted data and sends it to a web browser without proper validation and escaping. XSS allows attackers to execute scripts in the victim’s browser which can hijack user sessions, deface web sites, or redirect the user to malicious sites.</p></blockquote>
<p></p>
<p><b>Service Gateway Mitigation:</b> Combating XSS threats happens with two protection mechanisms – one is keeping the script out in the first place and the second is making sure the script is never sent to a browser, even if it gets stored on the application server somehow. The threat that the script poses is not necessarily to the application server, but to the client who unknowingly executes it. Similar to code injection attacks, a service gateway can scan for  tags using the same regular expression mechanism, either on the forward or reverse leg. In other words, for incoming requests, documents or messages, content should be scanned executable scripts (variations of &lt;script&gt;, for instance) and should never be allowed in. However, since the service gateway may not be the only entry point to the application (there may be other data sources, such as internal databases or interfaces), content scanning on the reverse leg, back to the client is required. This protects the client even in cases where a database is hacked and a script is inserted into content to be rendered to a browser. <i>Even</i> in this case, the script will be trapped by the gateway before damaging the client.</p>
<h3>Threat: A3 - Broken Authentication and Session Management</h3>
<blockquote><p>Application functions related to authentication and session management are often not implemented correctly, allowing attackers to compromise passwords, keys, session tokens, or exploit other implementation flaws to assume other users’ identities.</p></blockquote>
<p><b>Service Gateway Mitigation:</b> The main threat here actually relates back to our initial premise, which is that average developers aren’t security architects and may end up with custom authentication and session management schemes that contain holes. A service gateway can mitigate this threat simply by supporting standards such as WS-Security, SAML and SSL/TLS, all of which provide a very well-understood way of handling authentication, message security, and session protection. Why re-invent the wheel? Standards like these exist to provide a secure foundation for applications. Further, service gateways can also sit in front of applications with weak security design, such as exposed session IDs in query parameters, and provide a secure endpoint that uses a stronger way of handling sessions (such as an embedded encrypted and signed session identifier in the message itself) to the external caller, but <i>maps to</i> the expected way of session management by the application. The best part of this model is that <i>no application changes</i> are required. The service gateway provides the secure façade to an otherwise insecure application. In addition, authentication can be handled at the gateway itself, delegating authentication decisions to existing user-stores and identity management systems and presenting only pre-authenticated requests to application servers. Service gateways can provide secure endpoints for applications <em>in spite of</em> broken application servers.</p>
<h3>Threat: A4 - Insecure Direct Object References</h3>
<blockquote><p>A direct object reference occurs when a developer exposes a reference to an internal implementation object, such as a file, directory, or database key. Without an access control check or other protection, attackers can manipulate these references to access unauthorized data.</p></blockquote>
<p><b>Service Gateway Mitigation: </b> This threat stems from the fact that authorization for a reduced privileged user is often difficult to implement correctly, especially for individual object handles and especially after a user is already authenticated. A service gateway can mitigate this threat by authorizing users for specific resources and actions at the policy enforcement point, rather than at the application.  Due to the fact that the service gateway is a full application level proxy, it can determine for a particular request, such as an HTTP GET, if the target resource (URI + query parameter) is accessible. Moreoever, it may be possible for the service gateway to expose indirect object identifiers that are mapped to direct identifiers at the application, such as an account number or account profile. This model would provide increased controls for authorization for these type of direct references without overly intrusive changes to the application.</p>
<h3>Threat: A5 - Cross-Site Request Forgery</h3>
<blockquote><p>A CSRF attack forces a logged-on victim’s browser to send a forged HTTP request, including the victim’s session cookie and any other automatically included authentication information, to a vulnerable web application. This allows the attacker to force the victim’s browser to generate requests the vulnerable application thinks are legitimate requests from the victim. </p></blockquote>
<p><b>Service Gateway Mitigation:</b> Cross-Site Request Forgery (CSRF) attacks are particularly malicious because they take advantage of an already authenticated session between a user and a service. You may be wondering, if the request is in fact authenticated, how can one defend against such a threat? The answer is to fundamentally improve the authentication mechanism to prevent this type of request hijacking. In CSRF hijacking occurs by convincing a user to click on or  otherwise execute an unanticipated function. A common delivery mechanism for a CSRF attack is an HTTP service call (REST call) represented by a link containing the function or functions that the attacker wants the victim to execute. CSRF works because the user already has a legitimate session with the service, and in many cases, a malicious service call can be deduced because REST service calls use unprotected, visible HTTP headers and query parameters. The good news is that service gateways contain all of the building blocks to mitigate CSRF attacks such as nonce checking, digital signatures, hash checking, and the ability to parse secondary session cookies present in hidden HTTP fields. These building blocks are used to authenticate individual requests based on some unpredictable value or second, per-request hidden authentication cookie. The flip-side of this is that applications must be re-designed to include this extra, protected authentication information for individual requests which means re-tooling applications with stronger authentication protocols from the outset.</p>
<h3>Threat: A6 - Security Misconfiguration</h3>
<blockquote><p>Good security requires having a secure configuration defined and deployed for the application, frameworks, application server, web server, database server, and platform. All these settings should be defined, implemented, and maintained as many are not shipped with secure defaults. This includes keeping all software up to date, including all code libraries used by the application.</p></blockquote>
<p><b>Service Gateway Mitigation:</b> As the number of applications and services continues to grow within the Enterprise, the chance that one of these components, such as an application server or middleware platform, will be misconfigured will continue to rise. Further, Enterprises that rely on custom operating systems or custom hardware make this problem that much harder on themselves.  It is easy to issue a general requirement to keep software up to date and properly configured, but the obvious problem here is that this is a never-ending cycle of continual patch management and re-evaluation. Moreover, as business requirements change, software must change to match. Service gateways can't solve this problem, but they can vastly reduce the scope of what must be configured. By pulling security policies and functions away from application servers and centralizing them, the chance of security misconfiguration can be reduced because the number of systems that contain security processing code is also reduced. In addition, centralizing security policy on the wire means that services that trust the gateway are all configured to share a consistent security policy among them.</p>
<h3>A7 - Insecure Cryptographic Storage</h3>
<blockquote><p>Many web applications do not properly protect sensitive data, such as credit cards, SSNs, and authentication credentials, with appropriate encryption or hashing. Attackers may steal or modify such weakly protected data to conduct identity theft, credit card fraud, or other crimes.</p></blockquote>
<p><b>Service Gateway Mitigation:</b> Protecting sensitive data with encryption or hashing techniques requires experienced application developers with security expertise. It also involves the proper use of cryptographic tool-kits and an understanding of key management techniques for symmetric and asymmetric encryption algorithms. As far as data protection goes, service gateways can decouple both transport layer and message level data protection away from applications as defined by <i>policy</i> and not code. This effectively moves the problem of defining the data protection policy away from the average developer and into a purpose-built gateway that can apply data confidentiality on any part of the message content, either based on OASIS/W3C standards or custom data protection schemes. In some cases, service gateways can also offer data-at-rest protection by storing encrypted data in a database, completely bypassing the application itself.  In this last example, the service gateway is really acting as a security service that can make sensitive data available to applications without actually having to include security processing in those applications.</p>
<h3>A8 - Failure to Restrict URL Access</h3>
<blockquote><p>Many web applications check URL access rights before rendering protected links and buttons. However, applications need to perform similar access control checks each time these pages are accessed, or attackers will be able to forge URLs to access these hidden pages anyway.</p></blockquote>
<p><b>Service Gateway Mitigation:</b> This threat stems from the use of a basic authentication model that relies on security by obscurity. In this case, the application assumes the protected page or resource cannot be easily found and that access to the page is gated by an authentication challenge. Once the challenge succeeds, the user is given the URL or location of the protected resource. The obvious problem here is that the user can simply save the resource location and skip authentication entirely. The real threat here lies in the case where the attacker steals the location of the protected resources or figures it out through a brute-force attack on likely resource locations. Service Gateways do an excellent job of protecting against these threats as they are based on an explicit white-list policy model and can easily enforce per-request authentication and resource-based authorization. If a specific service endpoint is not explicitly configured in the service gateway, the request will be rejected. This checking applies not only at the HTTP URI and query parameter level, but also to HTTP parameters, such as a SOAP Action or individual XPath expressions that must match the request headers or body. Aside from this white-list behavior, Service Gateways can enforce authentication based on credentials in carried in the message header, such as HTTP Basic Authentication or WS-Security and can also enforce fine-grained authorization based on a combination of a subject, resource and action.</p>
<h3>A9 - Insufficient Transport Layer Protection</h3>
<blockquote><p>Applications frequently fail to authenticate, encrypt, and protect the confidentiality and integrity of sensitive network traffic. When they do, they sometimes support weak algorithms, use expired or invalid certificates, or do not use them correctly.</p></blockquote>
<p><b>Service Gateway Mitigation: </b> While transport level security in the form of SSL/TLS has been around for awhile, challenges remain with ensuring correct configuration, especially with respect to cipher-suite selection and chain of trust. Service Gateways shine here again as they also act as SSL acceleration and termination points with support for multiple SSL server and client identities. This means that SSL/TLS can be configured in the gateway once <i> in front </i> of existing applications, effectively offloading both the handshake and bulk data processing of the SSL protocol to the gateway. The benefit of this approach is not just performance, but it allows SSL/TLS to be decoupled from back-end application servers and centralizes the cipher suite selection, CA authentication policies and private key storage in a single place where there is less of a chance of misconfiguration</p>
<h3>A10 - Unvalidated Redirects and Forwards</h3>
<blockquote><p>
Web applications frequently redirect and forward users to other pages and websites, and use untrusted data to determine the destination pages. Without proper validation, attackers can redirect victims to phishing or malware sites, or use forwards to access unauthorized pages.
</p></blockquote>
<p><b>Service Gateway Mitigation: </b>  This category of attack appears to be confined to web applications rather than services in general as the attack is based on a browser redirect. This type of phishing attack can fool a user into thinking a phishing site is a legitimate one and these types of redirects can be prevented by a systematic scan ('spidering') of the web application to look for pages that issue an HTTP redirect command (302-207). This process, however, can be time-consuming and such a scan must be done on all suspected web applications. Service Gateways can mitigate this type of attack in two ways. First, the redirect can be immediately trapped at the gateway itself, preventing it from ever reaching the user, and second, malicious content bearing URLs defined by a regular expression can be trapped when detected in certain parts of the content, such as an HTTP query parameter. In other words, if an application or service doesn't expect to have URLs in parts of it's content, the service gateway can actively scan for URLs and URL-like strings in query parameters and flag these as potential threats.</p>
<h2>Conclusion</h2>
<p>As we have seen, the OWASP top ten spans covers a large number of application vulnerabilities, and while we can do our best to protect against these at the application itself, this often becomes a practical limitation as the number and complexity of applications continues to grow within the Enterprise. Adding to this is the fact that security processing is tightly coupled to the application, making security policies difficult to audit, manage and change. Service Gateways can help protect against many of the OWASP threats by pulling security processing out of the application into a dedicated gateway where policies can be more easily managed by a security architect, not an application developer. </p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/en-us/blogs/2010/11/09/using-a-service-gateway-to-protect-against-the-owasp-top-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extreme editions: New releases for all Intel software tools</title>
		<link>http://software.intel.com/en-us/blogs/2010/11/09/extreme-editions-new-releases-for-all-intel-software-tools/</link>
		<comments>http://software.intel.com/en-us/blogs/2010/11/09/extreme-editions-new-releases-for-all-intel-software-tools/#comments</comments>
		<pubDate>Tue, 09 Nov 2010 15:07:17 +0000</pubDate>
		<dc:creator>James Reinders (Intel)</dc:creator>
				<category><![CDATA[Parallel Programming]]></category>
		<category><![CDATA[Performance and Optimization]]></category>
		<category><![CDATA[Software Tools]]></category>
		<category><![CDATA[Intel Parallel Building Blcoks]]></category>
		<category><![CDATA[Intel Parallel Studio]]></category>
		<category><![CDATA[Intel Parallel Studio XE]]></category>
		<category><![CDATA[parallel programming]]></category>
		<category><![CDATA[parallelism]]></category>
		<category><![CDATA[TBB]]></category>
		<category><![CDATA[Threading Building Blocks]]></category>
		<category><![CDATA[What If]]></category>

		<guid isPermaLink="false">http://software.intel.com/en-us/blogs/2010/11/09/extreme-editions-new-releases-for-all-intel-software-tools/</guid>
		<description><![CDATA[You can learn more about these exciting new products in the latest issue of Parallel Universe magazine.]]></description>
			<content:encoded><![CDATA[<p>I’m pleased to share that today, we released <a href="http://intel.com/software/products">Intel<sup>®</sup> Parallel Studio XE 2011</a> and <a href="http://intel.com/software/products">Intel<sup>®</sup> Cluster Studio 2011</a> for Linux and Windows.</p>
<p>These bring together, the latest versions of Intel’s industry-leading C/C++ and Fortran compilers, performance and parallelism libraries, correctness analyzers and performance profilers to help improve application performance, code quality, and reliability. Above and beyond the features of Intel Parallel Studio XE 2011, Intel Cluster Studio includes capabilities for distributed memory programming using <a href="http://www.intel.com/go/mpi">MPI</a>.</p>
<p>In terms of prior products, these products are:</p>
<ul>
<li>Significant upgrades still focused on top performance for your applications.</li>
<li>v12.0 – Intel’s latest C/C++ and Fortran compilers</li>
<li>Updated <a href="http://intel.com/go/mkl">MKL</a> and <a href="http://software.intel.com/en-us/articles/intel-ipp">IPP</a> libraries (Intel<sup>®</sup> Math Kernel Library and Intel<sup>®</sup> Integrated Performance Primitives respectively)</li>
<li>Update Intel<sup>®</sup> <a href="http://www.intel.com/go/mpi/">MPI</a> Library</li>
<li>Intel<sup>®</sup> <a href="http://software.intel.com/en-us/articles/intel-vtune/">VTune</a>™ Amplifier XE is the new product name for the best VTune we’ve ever made! The performance tuning tool of choice for many, sports new features and completely reworked user interface based on our very popular <a href="http://whatif.intel.com/">Whatif.intel.com</a> prototype known affectionately as “PTU.” The coolest new feature: “frame analysis”… we need a whole blog just on this feature – it is amazing!</li>
<li>Debut of Linux versions of key innovations from the <a href="http://intel.com/go/parallel">Intel Parallel Studio 2011</a>, including: memory checking, and parallel programming models.</li>
<li>Intel<sup>®</sup> Inspector XE 2011 is the new product name for combining the groundbreaking Intel<sup>® </sup>Thread Checker with memory checking capabilities.</li>
<li>Intel<sup>®</sup> Composer XE 2011, new product name for Intel<sup>®</sup> Compiler Suite Professional Edition with the latest compiler and libraries from Intel</li>
<li>Intel<sup>® </sup>Trace Analyzer and Collector with enhancements. The new Ideal Interconnect Simulator helps figure find imbalances by simulating application behavior in the "ideal communication environment."</li>
<li>Fortran includes the Microsoft Visual Studio shell (no need to buy Visual Studio again!), and the Intel<sup>®</sup> Composer XE and Intel<sup>®</sup> Amplifier XE work within that shell.</li>
</ul>
<p>Many new features, highlights include:</p>
<ul>
<li>Intel<sup>®</sup> <a href="http://software.intel.com/en-us/articles/intel-parallel-building-blocks/">Parallel Building Blocks</a> (PBB)
<ul>
<li>solutions for parallel programming in C and C++</li>
<li>composable, interoperable solutions for task and data parallelism</li>
<li>explicit support for vectorization to utilize SIMD instructions including SSE and AVX</li>
<li>elegant new array notation, including elemental functions, for C and C++ programmers</li>
<li> solutions for multicore today and ready for many core programming tomorrow</li>
<li> includes version 3 of Intel<sup>®</sup> <a href="http://threadingbuildingblocks.org">Threading Building Blocks</a></li>
<li>includes Intel <a href="http://cilk.com/">Cilk™ Plus</a> support</li>
</ul>
</li>
</ul>
<ul>
<li>Support for <a href="http://software.intel.com/en-us/avx">AVX</a>, tuned and ready for use. Being ready for AVX can be a big performance boost for applications!</li>
<li>Frame analysis in <a href="http://software.intel.com/en-us/articles/intel-vtune/">VTune</a></li>
<li>Threading error detection extended to cover .NET codes. So possible dead-locks and race conditions can now be detected even in .NET code.</li>
<li><a href="http://software.intel.com/en-us/forums/showthread.php?t=76590">Co-array Fortran support</a> – both node-level and distributed (via MPI).</li>
<li>Standards tracking for C++ (0x) and Fortran (nearly all of Fortran 2003, key features of Fortran 2008 including coa-array)</li>
<li>Static Security Analysis tool for tracking down more problems such as <em>uninitialized data</em> and <em>buffer overflows.</em></li>
<li>Support for the latest environments: Microsoft Visual Studio 2010 (while still supporting 2005 and 2008), Eclipse, Windows 7, and the latest Linux distributions.</li>
<li>And, of course, updates to support the latest processors and processor features.  As always, striving to give the best performance of any compiler library – one Intel and compatibles.</li>
</ul>
<p>We work to win business by striving to offer the best performance of any compiler or library, please let us know if you find we do not. Lawyers won’t allow me to <em>guarantee</em> we’ll fix it and always win, but the results speak for themselves. I’m confident you’ll find we can help the performance of your application. You can refer to <a href="http://software.intel.com/en-us/articles/optimization-notice">optimization notice</a> for more information regarding performance and optimization choices in Intel software products.</p>
<p>More information on these products, including how to get trial editions, can be found at <a href="http://intel.com/software/products">intel.com/software/products</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/en-us/blogs/2010/11/09/extreme-editions-new-releases-for-all-intel-software-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using Logs for Troubleshooting in Intel® SOA Expressway</title>
		<link>http://software.intel.com/en-us/blogs/2010/11/01/using-logs-for-troubleshooting-in-intel-soa-expressway/</link>
		<comments>http://software.intel.com/en-us/blogs/2010/11/01/using-logs-for-troubleshooting-in-intel-soa-expressway/#comments</comments>
		<pubDate>Mon, 01 Nov 2010 16:22:18 +0000</pubDate>
		<dc:creator>Pavel Dolgov (Intel)</dc:creator>
				<category><![CDATA[Software Tools]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[What If]]></category>

		<guid isPermaLink="false">http://software.intel.com/en-us/blogs/2010/11/01/using-logs-for-troubleshooting-in-intel-soa-expressway/</guid>
		<description><![CDATA[Intel® SOA Expressway is often used as XML Gateway or Service Gateway and therefore often a consolidation point for XML/SOAP/REST traffic going across a domain. Users often want to use SOA Expressway’s logs to trouble shoot where the problems may lie in services based distributed computing environment. Intel SOA Expressway provides sophisticated logging capabilities that [...]]]></description>
			<content:encoded><![CDATA[<p>Intel® SOA Expressway is often used as XML Gateway or Service Gateway and therefore often a consolidation point for XML/SOAP/REST traffic going across a domain. Users often want to use SOA Expressway’s logs to trouble shoot where the problems may lie in services based distributed computing environment.</p>
<p>Intel SOA Expressway provides sophisticated logging capabilities that allow the user to audit and trace any message sent or received through the system. This same facility is also used when debugging applications to see what went wrong. In this blog we will see how easy it is to investigate application failures using the transaction log and variable dumps. Expressway has seven levels of logging, and with transaction logs turned on, the full payload of data sent and received can be examined in detail. To get started, we will first create a simple workflow, run the application, and then inspect the debug output available for that application.</p>
<p><strong>Create the application.</strong><br />
Let’s create the test application that performs a simple operation on an XML document. In this example we’ll take the input string and wrap it with an XML tag &lt;Output&gt;, like this:<br />
<code style="padding-left: 2em">Input string</code> -&gt; <code>&lt;Output&gt;Input string&lt;/Output&gt;</code><br />
This simple application will make it easy for us to test the debugging capabilities of Expressway. In our example, we’ll create a simple application and deliberately send messages that will trigger errors to demonstrate debugging. To create the application, start Intel® Services Designer, select File -&gt; New-&gt;Intel SOA Expressway Project in the main menu and give that project a name and choose the “simple application” type.</p>
<p>Initially, the new application consists of a workflow file (with .bpel extension), the WSDL file (web service declaration), and an XSD file (data type definitions used in both workflow and WSDL). The simple application template creates a workflow that contains only Receive and Reply actions. We’re going to add some logic between them to process the input. The WSDL created by the template will work fine for our application, so we’re going to leave it as is. The schema, however, created by the template is too simplistic for our case so we’ll change it a bit. Also we’ll add a data file for use in the application.</p>
<p>First, let’s modify the schema of the output message. For this application, we allow any XML content in it (<code>&lt;xsd:any&gt;</code>).<br />
<a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/01-xsd.png"><img class="size-medium wp-image-20310" src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/01-xsd-300x122.png" alt="Schema of output mesage" width="300" height="122" /></a></p>
<p>Second, let’s create the XML document that will be a template for output message, and save it in our project, in the same folder with Workflow and WSDL files.<br />
<a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/02-xml.png"><img class="size-medium wp-image-20311" src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/02-xml-300x72.png" alt="Template of output message" width="300" height="72" /></a></p>
<p>Then, let’s add some logic to the workflow.</p>
<p>In this example we need to read the document contents to a variable. For the sake of simplicity, we’ll take a local document bundled with the application. To do this, pick Data-&gt;XML Builder from the palette, match the type to the output message’s type, and build an XPath expression with the extension function soae-xf:document() with the name of the XML document as a parameter. When we give the name “Template” to this action the new variable with the same name will be automatically created to store the result. You can see the XMLBuilder action between the Receive and Result in the following screen shot:<br />
<a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/03-template.png"><img class="size-medium wp-image-20312" src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/03-template-300x223.png" alt="Load ouput message template from a document using XML Builder" width="300" height="223" /></a></p>
<p>Next, we need to modify the document to produce the output message. To do this pick Data-&gt;Expression in the palette and place the action to the diagram. The expression action will hold the result. Type “Result” to the name box and then choose <code>$Receive.payload</code> expression in the expression pop-up.  This tells the expression set to access the payload from the previous step. Finally, override the expression’s destination to <code>$Template/Output</code>, as shown below. This will modify the <code>$Template</code> variable, instead of creating a new variable.<br />
<a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/04-assign.png"><img class="size-medium wp-image-20315" src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/04-assign-300x215.png" alt="Create output message" width="300" height="215" /></a></p>
<p>In the last step we can choose the <code>$Template</code> variable to hold the reply. In cases where Expressway is acting as a proxy, the reply might be from a back-end server or partner web service, but for this example the reply is back to the sender without an additional service call.<br />
<a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/05-response.png"><img class="size-medium wp-image-20316" src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/05-response-300x230.png" alt="Send the response" width="300" height="230" /></a></p>
<p>To deploy the application right-click the project name in the project tree, choose Deploy As-&gt; Intel SOAE Application in the pop-up menu, and then type the hostname name of the machine running SOAE Expressway.</p>
<p><strong>Running the application</strong><br />
Once the application has deployed with no errors, it should be ready to receive messages – let’s send some through.<br />
For sending messages I’m going to use the <a href="http://www.soapui.org/">soapUI</a> [1] tool which is a nice GPL tool for dealing with SOAP traffic  Create a new project using SOAP UI using File-&gt;New-&gt;SOAPUI Project and set the initial WSDL to the WSDL from the Expressway application. You’ll need to choose an operation to invoke (there’s only one operation in our application). Once the WSDL is selected, soapUI will automatically create a valid input message for that operation, based on the WSDL.</p>
<p>In the raw request view I’ve typed “Hello” as the request content and changed the destination address. You can see this in the following picture:<br />
<a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/06-request.png"><img class="size-medium wp-image-20318" src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/06-request-300x61.png" alt="Request message" width="300" height="61" /></a></p>
<p>You can press the green button on the toolbar to send the message and see the result.<br />
<a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/07-fault.png"><img class="size-medium wp-image-20320" src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/07-fault-300x66.png" alt="The fault message from application" width="300" height="66" /></a><br />
Here is where things get interesting – the response message doesn’t contain “Hello” and shows an error instead. Let’s find out what happened.</p>
<p><strong>Investigating the failure</strong><br />
First we’ll use the dashboard to get some basic information. The dashboard will allow is to instantly see if the request passed or failed. Next, we’re going to inspect the transaction logs and see what happened to the application.</p>
<p>Let’s open the management console and take a look at the dashboard: it shows that one request has recently failed.<br />
<a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/08-dashboard-1.png"><img class="size-medium wp-image-20321" src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/08-dashboard-1-300x146.png" alt="Management Console dashboard" width="300" height="146" /></a></p>
<p>To get more information we need to adjust the log levels and send one more message (by default, only high-level information is written to the logs). Under “Global Logs Levels” on the web interface we can set the “Workflow Engine” component level to TRACE, l which turns on the transaction logs.</p>
<p>Let’s send the message again and observe what happens. The transaction log will show a failed transaction:<br />
<a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/09-transaction-1.png"><img class="size-medium wp-image-20323" src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/09-transaction-1-300x84.png" alt="Transaction log in logs browser" width="300" height="84" /></a></p>
<p>You can drill-down into the failure by clicking the arrow to get more information.  Here we can see the error message that we’ve received (“Uncaught BPEL fault…”) as well as additional trace entries just before the failure.<br />
<a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/10-drill-down-1.png"><img class="size-medium wp-image-20324" src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/10-drill-down-1-300x175.png" alt="Transaction log drill down" width="300" height="175" /></a></p>
<p>Open the log exception entry by clicking the “+” next to it. The error message tells that something’s wrong with the expression $Template/Output – it unexpectedly returned an empty node set.<br />
<a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/11-exception-1.png"><img class="size-medium wp-image-20326" src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/11-exception-1-300x132.png" alt="Exception message" width="300" height="132" /></a></p>
<p>Now let’s look through the previous log entries by clicking “&lt;” button to find most recent variable values prior to the error.<br />
<a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/12-variables-1.png"><img class="size-medium wp-image-20327" src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/12-variables-1-300x139.png" alt="Variable contents" width="300" height="139" /></a></p>
<p>We can see now that the <code>Template</code> variable really doesn’t contain the <code>&lt;Output&gt;</code> element.  In order application we’ve tried to write some data to <code>$Template/Output</code> so its’ no surprise that the workflow engine ran into a problem.</p>
<p><strong>Fix the bug and try again</strong><br />
The problem with the sample application was caused by the template for the output message. It’s loaded by the function soae-xf:document(), which was called in the XML Builder action (the Template action in our original application). To fix the problem, we should add an artificial root element to the XML document, as shown below. Once this is done, the XML Builder would work normally, as it strips the root element of the loaded document. Alternatively, we may also use an Expression action, which doesn’t strip the root element of the loaded document.</p>
<p>After modifying the application by adding an artificial root element we can redeploy it and send one more message.<br />
<a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/13-xml-2.png"><img class="size-medium wp-image-20330" src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/13-xml-2-300x70.png" alt="Corrected template of output message" width="300" height="70" /></a></p>
<p>This time the message is processed smoothly. The output looks good: the text “Hello” is wrapped with the <code>&lt;Output&gt;</code> element with the appropriate namespace declaration.<br />
<a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/14-response-2.png"><img class="size-medium wp-image-20331" src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/14-response-2-300x65.png" alt="Successful reply from the application" width="300" height="65" /></a></p>
<p>The dashboard also shows that the last request was processed successfully. The original failed requests are summed on the dashboard.</p>
<p>If we look at the logs, we’ll see that the transaction has completed successfully. The previous (failed) transaction is shown here as well.<br />
<a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/15-transaction-2.png"><img class="size-medium wp-image-20333" src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/15-transaction-2-300x92.png" alt="Suggessful transaction in logs browser" width="300" height="92" /></a></p>
<p>The variable dump shows the output message. If you use the “” (next) buttons, you can see how the variables were modified during the workflow execution.<br />
<a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/16-variables-2.png"><img class="size-medium wp-image-20334" src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/16-variables-2-300x169.png" alt="Variable values" width="300" height="169" /></a></p>
<p><strong>Summary</strong><br />
SOA Expressway provides the capabilities for detecting and troubleshooting application problems and bugs through the use of the transaction logs. If an error was detected, you can inspect the data being processed and see how the variables were changed at every step of execution of the workflow. For more information check out <a href="http://www.dynamicperimeter.com">www.dynamicperimeter.com</a> or <a href="http://www.intel.com/software/soae">www.intel.com/software/soae</a></p>
<p>[1] soapUI – <a href="http://www.soapui.org">www.soapui.org</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/en-us/blogs/2010/11/01/using-logs-for-troubleshooting-in-intel-soa-expressway/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oh the worlds Tim will Open</title>
		<link>http://software.intel.com/en-us/blogs/2010/10/22/oh-the-worlds-tim-will-open/</link>
		<comments>http://software.intel.com/en-us/blogs/2010/10/22/oh-the-worlds-tim-will-open/#comments</comments>
		<pubDate>Fri, 22 Oct 2010 22:21:00 +0000</pubDate>
		<dc:creator>Zander Sprague (Intel)</dc:creator>
				<category><![CDATA[Academic]]></category>
		<category><![CDATA[Intel Academic Community]]></category>
		<category><![CDATA[openCL]]></category>
		<category><![CDATA[OpenMP]]></category>
		<category><![CDATA[SC10]]></category>
		<category><![CDATA[Tim Mattson]]></category>
		<category><![CDATA[What If]]></category>
		<category><![CDATA[Zander Sprague]]></category>

		<guid isPermaLink="false">http://software.intel.com/en-us/blogs/2010/10/22/oh-the-worlds-tim-will-open/</guid>
		<description><![CDATA[One of the presenters at SC10 this year is Dr. Tim Mattson.  He is going to be very busy while in New Orleans. Tim has long been an evangelist for Manycore and Parallel Programming. His contribution to the Intel Academic Community has been generous and very helpful for our many members. I know that you [...]]]></description>
			<content:encoded><![CDATA[<p>One of the presenters at SC10 this year is Dr. Tim Mattson.  He is going to be very busy while in New Orleans. Tim has long been an evangelist for Manycore and Parallel Programming. His contribution to the Intel Academic Community has been generous and very helpful for our many members.</p>
<p>I know that you will want to catch at least one of Tim’s talk at SC10. Tim is talking Open MP and Open CL this year.  Here is where and when you can attend Tim talks.</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="160" valign="top"><strong>Presentation Type</strong></td>
<td width="160" valign="top"><strong>Title</strong></td>
<td width="160" valign="top"><strong>Time and Location</strong></td>
</tr>
<tr>
<td width="160" valign="top">Tutorial</td>
<td width="160" valign="top">A Hands-On Introduction to OpenMP</td>
<td width="160" valign="top">Sunday8:30AM-5PM</p>
<p>Room 388</td>
</tr>
<tr>
<td width="160" valign="top">Tutorial</td>
<td width="160" valign="top">OpenCL: An Introduction to Heterogeneous Programming for HPC</td>
<td width="160" valign="top">Monday8:30AM-12PM</p>
<p>Room 391-932</td>
</tr>
<tr>
<td width="160" valign="top">Tutorial</td>
<td width="160" valign="top">Advanced Topics in Heterogeneous Programming with OpenCL</td>
<td width="160" valign="top">Monday1:30-5PM</p>
<p>Room 391-392</td>
</tr>
<tr>
<td width="160" valign="top">Paper</td>
<td width="160" valign="top">The 48-Core SCC Processor: The Programmer’s View<strong> </strong></td>
<td width="160" valign="top">Wednesday2-2:30PM</p>
<p>Room 391-392</td>
</tr>
<tr>
<td width="160" valign="top">BOF</td>
<td width="160" valign="top">OpenCL - Achievements and Next Steps</td>
<td width="160" valign="top">Wednesday5:30-7PM</p>
<p>Room 384-385</td>
</tr>
</tbody>
</table>
<p> </p>
<p><strong>About Tim Mattson</strong></p>
<p>Tim Mattson earned a PhD. for his work on quantum molecular scattering theory (UCSC, 1985).  This was followed by a Post-doc at Caltech where he worked on the Caltech/JPL hypercubes.  Since then, he has held a number of commercial and academic positions with high performance computers as the common thread. Application areas have included mathematics libraries, exploration geophysics, computational chemistry, molecular biology, and bioinformatics. </p>
<p>Dr. Mattson joined Intel in 1993. Among his many roles at Intel, he was applications manager for the ASCI Red Computer (the world’s first Tera-FLOP computer), helped create OpenMP, founded the Open Cluster Group, led the applications team for the first Tera-FLOP CPU (the 80 core terascale processor), launched Intel’s programs in computing for the Life Sciences, helped create OpenCL (a parallel programming framework for hybrid systems composed of CPUs, GPUs, and other processors), and was part of the team that created Intel’s 48 core SCC processor (the single chip cloud computer).</p>
<p>Currently, Dr. Mattson is a principal engineer in Intel’s Visual Applications Research Laboratory. He conducts research on performance modeling for future multi-core microprocessors and how different programming models map onto these systems.  This work builds on his two most recent books: <em>Design Patterns in Parallel Programming</em> (written with Professors Beverly Sanders and Berna Massingill) and <em>Introduction to concurrency in programming languages </em>(written with Matthew J. Sottile and Craig E Rasmussen).</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/en-us/blogs/2010/10/22/oh-the-worlds-tim-will-open/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to move data from JMS to a database with SOA Expressway</title>
		<link>http://software.intel.com/en-us/blogs/2010/10/20/how-to-move-data-from-jms-to-a-database-with-soa-expressway/</link>
		<comments>http://software.intel.com/en-us/blogs/2010/10/20/how-to-move-data-from-jms-to-a-database-with-soa-expressway/#comments</comments>
		<pubDate>Wed, 20 Oct 2010 11:49:16 +0000</pubDate>
		<dc:creator>Anton Luht (Intel)</dc:creator>
				<category><![CDATA[Software Tools]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[What If]]></category>

		<guid isPermaLink="false">http://software.intel.com/en-us/blogs/2010/10/20/how-to-move-data-from-jms-to-a-database-with-soa-expressway/</guid>
		<description><![CDATA[Work of an information systems' developer is not only creation of challenging, innovative, advanced in algorithms new applications. It also includes creation and maintenance of support routines like reliable copy of data from one source to another, handling different exceptions, timeouts, hanging transactions, shifting timezones, etc. You're lucky if all software in your system is [...]]]></description>
			<content:encoded><![CDATA[<p>Work of an information systems' developer is not only creation of challenging, innovative, advanced in algorithms new applications. It also includes creation and maintenance of support routines like reliable copy of data from one source to another, handling different exceptions, timeouts, hanging transactions, shifting timezones, etc. You're lucky if all software in your system is from single vendor and is still supported. In this case it's likely that there are tools that can move data from one source to another, for example, from a database to a message queue. But if your task is to move data between IBM Websphere MQ with SSL-encrypted channels, MS SQL or Oracle databases and Tumbleweed FTP server, you're likely to come across some vendor-specific implementation issues. Even if working prototype is finished in several days, it'll take some more time to test it before it can be used in production.</p>
<p>One of possible use cases of SOA Expressway (<a href="http://www.dynamicperimeter.com">www.dynamicperimeter.com</a>) is rapid creation of such small support workflows. They are created in Services Designer using drag and drop. SOA Expressway can execute tens of such workflows at once - just add one more application to the active configuration and save it.</p>
<p>I'll show how to easily create a workflow that copies data from IBM Websphere MQ to MS SQL database.</p>
<ol>
<li>	Launch Services designer</li>
<li>Create an empty project</li>
<li>Create an empty workflow in this project</li>
<li>Add 'Receive' and 'SQL Statement' activities</li>
<li>Configure 'Receive'</li>
<ol type="a">
<li>Choose 'JMS' as transport protocol
<li>Choose ‘No output (one-way)’ in Response data – we’re not doing to reply to JMS in this example
<li>Configure other fields in JMS receive activity. For IBM Websphere MQ Initial context factory class should be 'com.ibm.mq.jms.context.WMQInitialContextFactory' . Other fields like queue name, connection factory name, JNDI URL are installation specific. You can choose an existing queue or create a new one using Websphere MQ Explorer.
<li>If your Websphere MQ server requires additional connection parameters like MQCONTEXTMODE - put them to 'Optional custom parameters field'.
</ol>
</li>
<li>Configure SQL action
<ol type="a">
<li>Enter JDBC datasource name. You’ll have to configure datasource with this name in web interface of SOA Expressway. I’ll use ‘jdbc/mssql’.
<li>Write SQL statement to be executed, for example<br />
‘insert into test(message) values (?)’ . Make sure that the target table exists and the query is valid.</p>
<li>Add one parameter to the statement, choose ‘Xpath’ type and choose Xpath expression to be used as parameter value. To insert whole message received from JMS use ‘$Receive.body’
</ol>
</ol>
<p>The resulted workflow will look like:</p>
<p><a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/blog1.png"><img src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/blog1.png" alt="JMS to database simple workflow" width="189" height="228" class="alignnone size-full wp-image-20106" /></a></p>
<p>You’ll have to add vendor-specific .jar files to SOA Expressway before your workflow can communicate with third-party software like databases, JMS servers, etc. We have IBM message queue and Microsoft database so we should create 2 providers – one provider with client .jar files for Websphere, type = JMS and another – with client .jar files for MS SQL, type = JDBC. This should be done only once after SOA Expressway installation – you don’t have to upload those files again when you create a new or modify an existing workflow. This upload is done in ‘Configuration’ -&gt; ‘System configuration’ menu in the Web interface. Choose ‘Providers’ -&gt; ‘Add’, create provider named ‘websphere’ with type ‘JMS’ and upload all client .jar files corresponding to your Websphere MQ installation. After this create ‘mssql’ provider with type ‘JDBC’ and upload MS SQL client .jar file to it (for example, sqljdbc4.jar).<br />
Now SOA Expressway is ready to work with IBM Websphere MQ and Microsoft SQL server. You can deploy your application directly from the Services Designer or export workflow from the Designer and upload it using web interface. In any case you’ll have to set up configuration in WI before the application actually starts working:</p>
<ul>
<li>Enter your JMS server’s host, port and user credentials in ‘JNDI properties section’ of Input Server
<li>Create JDBC recource with name ‘jdbc/mssql’ and put host, port, database name, database user name and password to it
</ul>
<p>That’s all. Now close and activate this configuration and data you put to the JMS queue will be transferred the to the database.<br />
This example is intentionally made as simple as possible to make step-by-step instructions clear and not too boring. It can be extended in several ways:</p>
<ul>
<li>Make JMS input server not one-way, but two-way. In this case you can put result of database operation - success marker or newly created record ID to JMS reply queue
<li>Make interaction of JMS and database transactional. SOA Expressway supports XA transactions ( <a href="http://en.wikipedia.org/wiki/X/Open_XA">http://en.wikipedia.org/wiki/X/Open_XA</a> ). In current workflow if a database error happens, JMS message is lost – it’s taken from the queue and is not put to the database. You can set ‘Enable XA’ flag in ‘Receive’ properties in the Services Designer and add ‘XA Commit’ activity to the end of workflow. In this case if database query fails, message will be returned to JMS queue and workflow will pick it up for processing later.
</ul>
<p><b>Let’s get real</b></p>
<p>Sceptical readers may think ‘OK, this all sounds good as usual in ads, but it doesn’t have anything common with setup I have at work’. Let’s add some complexity and security. Low level technical details are omitted – feel free to ask in comments.<br />
I'll add modify this workflow:</p>
<ul>
<li>Put message from incoming queue to one of 2 queues based on its content
<li>Add SSL to JDBC connection
</ul>
<p>The modified workflow will be:</p>
<p><a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/blog2.png"><img src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/blog2.png" alt="Advanced JMS to JDBC workflow" width="416" height="332" class="alignnone size-full wp-image-20107" /></a></p>
<p>I've added:</p>
<ul>
<li>‘if’ switch with expression ‘string($Receive.body) = 'BLACK'
<li>Insertion in one queue (BLACK_QUEUE) if this is true
<li>Insertion in another queue (WHITE_QUEUE) otherwise
</ul>
<p>Insertion into queue is ‘Invoke’ activity, request data is ‘$Request.body’, response data is ‘No output (one-way)’, all JMS connection parameters are same as in ‘Receive’ activity.<br />
Save application and deploy it. If you think I’m cheating because I promised to add SSL – you’re really reading this, thank you. SSL connection is just configuration issue – we’ll configure it in the Web interface.<br />
After you deployed application, edit JDBC datasource settings to enable SSL. Connection properties vary from vendor to vendor, for MS SQL use ‘encrypt=true;trustServerCertificate=true’ . If you set up this application using another database, find similar properties in manual. Save and activate application. Now if you put message ‘BLACK’ in incoming queue, it’ll be put to database and moved to ‘BLACK_QUEUE’, all other messages will be put to ‘WHITE_QUEUE’. How can you make sure that JDBC connection is really encrypted? You can just trust documentation – if it says that encryption is turned on with those parameters, it’ll work. If you don’t trust it like me – you can watch the traffic between the SOA Expressway host and the database host. If encryption is not enabled, you can see queries in plain text. If it is enabled, you don’t see any SQL expressions.</p>
<p>Happy escape from routine :)</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/en-us/blogs/2010/10/20/how-to-move-data-from-jms-to-a-database-with-soa-expressway/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Applying a Service Gateway architecture to integrating your e-Invoicing</title>
		<link>http://software.intel.com/en-us/blogs/2010/10/18/applying-a-service-gateway-architecture-to-integrating-your-e-invoicing/</link>
		<comments>http://software.intel.com/en-us/blogs/2010/10/18/applying-a-service-gateway-architecture-to-integrating-your-e-invoicing/#comments</comments>
		<pubDate>Mon, 18 Oct 2010 10:42:06 +0000</pubDate>
		<dc:creator>Pete Logan (Intel)</dc:creator>
				<category><![CDATA[Software Tools]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[integration]]></category>
		<category><![CDATA[invoicing]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[What If]]></category>
		<category><![CDATA[XML Software]]></category>

		<guid isPermaLink="false">http://software.intel.com/en-us/blogs/2010/10/18/applying-a-service-gateway-architecture-to-integrating-your-e-invoicing/</guid>
		<description><![CDATA[I was recently asked to talk at the European eInvoicing and eBilling conference about better ways to integrate the transfer of e Invoicing and e billing into existing applications and security solutions. By the way, it was held in Munich and, if you go, definitely check out the surfing at the south end of the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/surfing.jpg"><img class="alignright size-full wp-image-19942" src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/surfing.jpg" alt="Surfing the Eisbach river" width="449" height="232" /></a>I was recently asked to talk at the European eInvoicing and eBilling conference about better ways to integrate the transfer of e Invoicing and e billing into existing applications and security solutions. By the way, it was held in Munich and, if you go, definitely check out the surfing at the south end of the Englischer Garten. There's more information on the conference and proceedings here: <a href="http://www.expp-summit.com/" target="_blank">www.expp-summit.com</a></p>
<p>Anyhow I did actually manage to get some work done and one of the things that struck me was how similar e invoicing integration issues are with banking and healthcare which the SOA Products group already has extensive experience of. the acronyms and standards change but the general method of solving the security and flexibility problems remains the same.</p>
<p>So here's some of the barriers to adoption or difficulties we’re facing:</p>
<ul>
<li>The big picture, each country has its own security, audit and legal  requirements and during research I could not find 2 countries that  approached e-invoicing exactly the same way.</li>
</ul>
<ul>
<li>Heterogeneous environment doesn’t have the advantages or disadvantages of enforced transfer networks like banks with SWIFT.</li>
</ul>
<blockquote>
<ul>
<li>Advantages – a clear direction, good docs, security, reliability, assurance.</li>
</ul>
</blockquote>
<blockquote>
<ul>
<li>Disadvantages – high cost, little flexibility, slow adaptation.</li>
</ul>
</blockquote>
<ul>
<li>Some companies find comfort in paper and others don’t feel they’re  technically up-to-speed for e-invoicing especially small and medium  enterprises.</li>
</ul>
<p><a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/eInvoicingsecurity2.png"><img class="alignleft size-full wp-image-19948" src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/eInvoicingsecurity2.png" alt="" width="640" height="402" /></a></p>
<p>And on top of these there’s security; always the necessary evil. Mainly a concern for large enterprises and service providers servicing SMEs. From the slide, generally the hard and fast requirements are  “Assurance/Compliance” &amp; “Trust &amp; Control” boxes.</p>
<p>“Perimeter Defence” and “External Threats” are best practices to protect confidential enterprise data that’s being exchanged. In effect they’re pretty much requirements as well.</p>
<p>Starting from the top we have the generation of signature. Should it be an Advanced signature or a Qualified digital signature? Does the the signing certificate need to be bound to the individual or the organisation because there are differing regulations for that in different countries.</p>
<p>Does your set of signing certificates fit in with your existing Certification Authority and public key infrastructure? Is the trust relationship there with other business systems &amp; issuers? Can you deal with multiple types of authorisation including tying your e-Invoicing application into your organisations existing Single Sign On? The SSO and Certificate trust structure becomes important when you realise the need to maintain personal responsibility for the invoice with the individual who generated it.</p>
<p>Can you deal with multiple encryption types, especially when you start trading in another country and your existing e-Invoicing application does not provide support for the new cryptographic requirements?</p>
<p>With your external B2B and B2C trading partners you may have to have an internet facing service. Do you really want your e-invoicing or billing application to have to face issues like content attack and denial of service? All these add up to a headache that’s necessary for business continuity.</p>
<p>The advantage is that once this hurdle is passed there is little change required. Only additions to existing services.</p>
<p><a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/einvoicing_B2B.png"><img class="alignright size-full wp-image-19950" src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/10/einvoicing_B2B.png" alt="" width="640" height="328" /></a>Clearly there’s a requirement for flexible, generalised software tools like Service Gateways to apply some mediation and governance.</p>
<p>A Service Gateway is an obvious solution to tackling the difficulties above without recourse to excessive customisation of your existing e-Invoicing app which then leaves you with a point to point integration problem i.e. you have to start coding a lot of interfaces between formats, security token types, certificates, encryption routines etc. Always assuming your e-Invoicing application supports all of those that you wish to communicate with.</p>
<p>Because most or all of your security, certification and signing requirements are built into a Service Gateway like Intel® SOA Expressway you don't have to worry about different sets of capabilities for the multiple e-Invoicing apps you have in your own organisation and there's only one place you need to update when integrating externally, especially when billing between countries. As the Service Gateway seamlessly deals with routing and mediation for both format and protocol there are fewer integration worries. Indeed if you're part of a larger enterprise you may already have a Service Gateway that you can make use of.</p>
<p>For more in depth information, including seminars visit <a href="http://www.dynamicperimeter.com/solutions/latest-webinar?partnerref=blog_Pete" target="_blank">Dynamic Perimeter.com</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/en-us/blogs/2010/10/18/applying-a-service-gateway-architecture-to-integrating-your-e-invoicing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interoperabilty of SOA Expressway with JMS Message Queues</title>
		<link>http://software.intel.com/en-us/blogs/2010/09/29/interoperabilty-of-soa-expressway-with-jms-message-queues/</link>
		<comments>http://software.intel.com/en-us/blogs/2010/09/29/interoperabilty-of-soa-expressway-with-jms-message-queues/#comments</comments>
		<pubDate>Wed, 29 Sep 2010 19:29:47 +0000</pubDate>
		<dc:creator>Joe Welsh (Intel)</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[What If]]></category>

		<guid isPermaLink="false">http://software.intel.com/en-us/blogs/2010/09/29/interoperabilty-of-soa-expressway-with-jms-message-queues/</guid>
		<description><![CDATA[Its been a busy summer for me, especially around creating proof-of-concepts utilizing SOA Expressway. Interaction with JMS Message Queues (MQ) within SOA Expressway applications has been a frequent theme. As you have seen in prior posts, SOA Expressway's protocol mediation is remarkable - interoperability with JMS Message Queues is no exception. For example, a couple [...]]]></description>
			<content:encoded><![CDATA[<p>Its been a busy summer for me, especially around creating proof-of-concepts utilizing <a href="http://www.dynamicperimeter.com/solutions/soa-esb-integration-appliance?partnerref=blog_Joe_Welsh">SOA Expressway</a>.  Interaction with <a href="http://en.wikipedia.org/wiki/Java_Message_Service">JMS</a> Message Queues (MQ) within <a href="http://www.dynamicperimeter.com/solutions/soa-esb-integration-appliance?partnerref=blog_Joe_Welsh">SOA Expressway</a> applications has been a frequent theme.  As you have seen in prior posts, <a href="http://www.dynamicperimeter.com/solutions/soa-esb-integration-appliance?partnerref=blog_Joe_Welsh">SOA Expressway's</a> protocol mediation is remarkable - interoperability with <a href="http://en.wikipedia.org/wiki/Java_Message_Service">JMS </a>Message Queues is no exception.</p>
<p>For example, a couple of weeks ago I held a conference call with a potential customer that wanted a demonstration of creating and deploying a <a href="http://www.dynamicperimeter.com/solutions/soa-esb-integration-appliance?partnerref=blog_Joe_Welsh">SOA Expressway</a> applications that, among other things, would interoperate with a <a href="http://en.wikipedia.org/wiki/Java_Message_Service">JMS</a> Message Queue.  Utilizing an existing Message Queue in my lab, the entire time to build, deploy, and successfully test an application took just under 15 minutes!</p>
<p><b>Overview of the Process</b></p>
<p>Assuming you have a running <a href="http://en.wikipedia.org/wiki/Java_Message_Service">JMS</a> Message Queue and the client drivers needed to interact with it, here are the steps.</p>
<ol>
<li>
<p>Using the web interface, the <a href="http://en.wikipedia.org/wiki/Java_Message_Service">JMS</a> client drivers are uploaded into a Java Provider which can be utilized by any application running in <a href="http://www.dynamicperimeter.com/solutions/soa-esb-integration-appliance?partnerref=blog_Joe_Welsh">SOA Expressway</a>.</p>
<p><a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/jms_provider.jpg"><img src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/jms_provider.jpg" alt="" width="650" height="461.166" class="alignnone size-full wp-image-18725" /></a></p>
</li>
<li><a name="s2"></a>
<p>In Services Designer, create a new workflow that utilizes an invoke step to a <a href="http://en.wikipedia.org/wiki/Java_Message_Service">JMS</a> Message Queue.</p>
<p><a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/JMS_workflow.jpg"><img src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/JMS_workflow.jpg" alt="" width="335" height="320" class="alignnone size-full wp-image-19196" /></a></p>
</li>
<li>
<p>Supply the input to and <a href="http://en.wikipedia.org/wiki/Java_Message_Service">JMS</a> parameters the invocation step.</p>
<p><a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/JMS_Properties.jpg"><img src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/JMS_Properties.jpg" alt="" width="650" height="632.293" class="alignnone size-full wp-image-19197" /></a></p>
</li>
<li>
<p>Export the application bundle an upload to <a href="http://www.dynamicperimeter.com/solutions/soa-esb-integration-appliance?partnerref=blog_Joe_Welsh">SOA Expressway</a>.</p>
<p><a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/JMS_app_upload.jpg"><img src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/JMS_app_upload.jpg" alt="" width="550" height="217.785" class="alignnone size-full wp-image-19198" /></a></p>
</li>
<li>
<p>Supply the <a href="http://en.wikipedia.org/wiki/Java_Message_Service">JMS</a> credentials required for JNDI Lookup of the MQ Service.</p>
<p><a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/JMS_JNDI_Properties_2.jpg"><img src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/JMS_JNDI_Properties_2.jpg" alt="" width="650" height="419.613" class="alignnone size-full wp-image-19199" /></a></p>
</li>
<li>
<p>Save or Activate the configuration the application was loaded to.</p>
</li>
</ol>
<p><b>Additional Thoughts</b></p>
<p><a href="http://www.dynamicperimeter.com/solutions/soa-esb-integration-appliance?partnerref=blog_Joe_Welsh">SOA Expressway</a> works with any standard <a href="http://en.wikipedia.org/wiki/Java_Message_Service">JMS</a> MQ provider.  To date, I have personally configured <a href="http://www.dynamicperimeter.com/solutions/soa-esb-integration-appliance?partnerref=blog_Joe_Welsh">SOA Expressway</a> to work with <a href="http://en.wikipedia.org/wiki/ActiveMQ">Apache Active MQ</a>, <a href="http://en.wikipedia.org/wiki/WebSphere_MQ">Websphere MQ</a>, <a href="http://www.oracle.com/goto/glassfish">Sun Java System Message Queue</a>, and <a href="http://en.wikipedia.org/wiki/SonicMQ#SonicMQ">Progress' Sonic MQ</a>, all without a hitch.  Customers have been really impressed on how easy it is to do, as well how powerful their applications become when integrated with other built-in services like JDBC, FTP, File, HTTPS, data transformation, etc. [<a href="#s2">The workflow illustration in step 2 above actually illustrates this.</a>]  My future posts will delve into these more, however, you can check out additional use cases right now!  These use cases not only showcase <a href="http://www.dynamicperimeter.com/solutions/soa-esb-integration-appliance?partnerref=blog_Joe_Welsh">SOA Expressway</a> as an <a href="http://www.dynamicperimeter.com/solutions/soa-esb-integration-appliance?partnerref=blog_Joe_Welsh">integration appliance</a>, but as a <a href="http://www.dynamicperimeter.com/solutions/rest-api-security-web-services?partnerref=blog_Joe_Welsh">Service Gateway</a>, for <a href="http://www.dynamicperimeter.com/solutions/web-services-security?partnerref=blog_Joe_Welsh">SOA Edge Security</a>, for <a href="http://www.dynamicperimeter.com/solutions/policy-integrated-soa-governance?partnerref=blog_Joe_Welsh">Runtime Governance</a>, a BPMS id Broker, <a href="http://www.dynamicperimeter.com/solutions/cross-domain-security?partnerref=blog_Joe_Welsh">Cross Domain Sharing</a>, as a <a href="http://www.dynamicperimeter.com/solutions/cloud-computing-security?partnerref=blog_Joe_Welsh">Cloud Gateway</a> and much more!  For additional information please see:  </p>
<ul>
<li><a href="http://www.dynamicperimeter.com?partnerref=blog_Joe_Welsh">www.dynamicperimeter.com</a></li>
<li><a href="http://soaexpressway.wordpress.com/">SOA Expressway's Blog Site</a></li>
<li><a href="http://software.intel.com/en-us/blogs/author/ritu-kama?partnerref=blog_Joe_Welsh">Ritu Kama's Blog Site</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/en-us/blogs/2010/09/29/interoperabilty-of-soa-expressway-with-jms-message-queues/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Intel® SOA Expressway as Secure Token Service for Lightweight Clients</title>
		<link>http://software.intel.com/en-us/blogs/2010/09/21/intel-soa-expressway-as-secure-token-service-for-lightweight-clients/</link>
		<comments>http://software.intel.com/en-us/blogs/2010/09/21/intel-soa-expressway-as-secure-token-service-for-lightweight-clients/#comments</comments>
		<pubDate>Tue, 21 Sep 2010 21:35:28 +0000</pubDate>
		<dc:creator>Ritu Kama (Intel)</dc:creator>
				<category><![CDATA[Manageability & Security]]></category>
		<category><![CDATA[Software Tools]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[What If]]></category>

		<guid isPermaLink="false">http://software.intel.com/en-us/blogs/2010/09/21/intel-soa-expressway-as-secure-token-service-for-lightweight-clients/</guid>
		<description><![CDATA[Most of you are familiar with deploying Intel® SOA Expressway as a xml gateway for protecting your SOAP and REST services. I wanted to blog about another very interesting use case where SOA Expressway acts as a Secure Token Service (STS) for a lightweight client requestor. While a formal STS generally assumes WS-Trust aware clients [...]]]></description>
			<content:encoded><![CDATA[<p>Most of you are familiar with deploying Intel® SOA Expressway as a xml gateway for protecting your SOAP and REST services. I wanted to blog about another very interesting use case where SOA Expressway acts as a Secure Token Service (STS) for a lightweight client requestor.</p>
<p>While a formal STS generally assumes WS-Trust aware clients and SOAE can support that, this need not be the case and imposes additional requirements on a lightweight client. Instead of a formal WS-Trust request, the client can pass a simple credential in the form of a username/password token and retrieve the proper token for the web service they are trying to access. As long as we are sticking with common standards such as HTTP, HTTP Basic Authentication and SSL, WS-Trust isn’t necessary for simple cases.  In the model proposed here, Expressway is acting as a STS used to broker the authentication between a lightweight client and web service requiring a SAML assertion.   </p>
<p>The STS is trusted by both the client and the service and it negotiates the authentication between the two.  The client trusts the STS and doesn’t need to apply additional processing on the returned SAML assertion. Instead, it invokes the target service and treats the assertion as opaque.</p>
<p>The following diagram shows how Expressway can be deployed as an STS:</p>
<p><a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/Diagram.png"><img class="aligncenter size-full wp-image-19001" src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/Diagram.png" alt="" width="600" height="272" /></a><a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/Diagram.png"></a></p>
<p><a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/Diagram.png"></a></p>
<p>In this scenario, the client initiates a token request to the STS (Expressway) along with their identity in an acceptable form, such as username and password. In this example, we are assuming client is sending a username/password token and trusts the STS over a one-way SSL connection. These requirements provide the minimum level of security required yet don’t impose onerous WS-Security or WS-Trust requirements on a lightweight client. The STS authenticates and validates the client’s credentials and issues a security token such as a SAML token back to the client. Generally as a good practice, the STS will sign the token to prevent token tampering after it was issued. The STS then sends the token back to the client. With the SAML assertion in hand, the lightweight client now forwards the web service request along with the trusted security token issued by the STS. The target Web Service validates the security token and confirms that the token was issued by trusted STS and sends the web service response if everything looks good.</p>
<p>As many of you are familiar with, SOA Expressway exposes an AAA action in Services Designer that can be used in your workflow to implement the functionality for SOAE to be a STS for your environment. AAA action provides a lot of flexibility in terms of different token types that are supported, e.g. HTTP Basic Authentication, UsernameToken, SSL certificate etc. We can configure SOAE to authenticate clients against a variety of Identity Management solutions supported such as Microsoft’s Active Directory, CA’s Site Minder or Oracle’s Identity Management products such as OIM and OAM. SOAE can then issue a token such as a SAML assertion, sign it and send it to the client. Client can then make the web service call with the token.</p>
<p>Following screenshot demonstrates our AAA policy with an example. In this example, SOAE, our STS is expecting a username and password in HTTP Basic Authentication header from the client. It will then authenticate the user with the LDAP server configured in the AAA policy. After client has been validated, SOAE will generate a SAML token and sign it before it is returned to the client.</p>
<p><a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/AAA1.png"><img class="aligncenter size-full wp-image-18999" src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/AAA1.png" alt="" width="625" height="731" /></a></p>
<p>The STS workflow is shown in the screenshot below.</p>
<ul>
<li>The Receive action is for SOAE to receive a HTTP request from the client with username and password in Basic Authentication header.</li>
<li>The AAA Action invokes the AAA policy shown in Figure b using the client’s credentials and if the client is authenticated, creates a signed SAML assertion. The catch block is included in the workflow for Error Handling. It catches any authentication failures in the policy such as invalid credentials, missing credentials etc. In case of an authentication exception, SOAE returns 401 Unauthorized error back to the client.</li>
<li>The Reply action returns the SAML assertion back to the client.</li>
</ul>
<p> <a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/workflow.png"><img class="aligncenter size-full wp-image-19000" src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/workflow.png" alt="" width="485" height="457" /></a></p>
<p>Hope you find this blog helpful. You can get more information on SOAE at <a href="http://www.dynamicperimeter.com/">www.dynamicperimeter.com</a> and a great primer on STS is at <cite>msdn.microsoft.com/en-us/library/ff650503.aspx. </cite>Please feel free to send me your comments and suggestions.</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/en-us/blogs/2010/09/21/intel-soa-expressway-as-secure-token-service-for-lightweight-clients/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to extend XSLT using built in extension functions.</title>
		<link>http://software.intel.com/en-us/blogs/2010/09/07/how-to-extend-xslt-using-built-in-extension-functions/</link>
		<comments>http://software.intel.com/en-us/blogs/2010/09/07/how-to-extend-xslt-using-built-in-extension-functions/#comments</comments>
		<pubDate>Tue, 07 Sep 2010 09:56:26 +0000</pubDate>
		<dc:creator>Pete Logan (Intel)</dc:creator>
				<category><![CDATA[Software Tools]]></category>
		<category><![CDATA[functions]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[What If]]></category>
		<category><![CDATA[XML Software]]></category>
		<category><![CDATA[XSLT]]></category>

		<guid isPermaLink="false">http://software.intel.com/en-us/blogs/2010/09/07/how-to-extend-xslt-using-built-in-extension-functions/</guid>
		<description><![CDATA[XSLT 2.0 and to some extent 1.0 are powerful languages when it comes to transforming documents and even for performing some tasks. But, as is often the case, to do something odd or unusual can often be impenetrable or just plain difficult.  One of the advantages or using Intel® SOA Expressway is that most of the extension functions we have written to make coding easier for BPEL workflow are also available for the XSLT developer. ]]></description>
			<content:encoded><![CDATA[<p>XSLT 2.0 and to some extent 1.0 are powerful languages when it comes to transforming documents and even for performing some tasks. But, as is often the case, to do something odd or unusual can often be impenetrable or just plain difficult.  One of the advantages of using Intel® SOA Expressway is that most of the extension functions we have written to make configuration easier for BPEL based workflow are also available to the XSLT developer.</p>
<p>For those not familiar with SOA Expressway extension functions, they are granular operations that can be performed on the contents of messages or XML / JSON documents which SOA Expressway can embed into XPath or XSLT. What they add up to is a Swiss Army Knife for doing all sorts of useful things, especially when SOA Expressway is used in some message mediation or security mediation capacity.</p>
<p>The range of functions encompasses:</p>
<ul>
<li>digest generation (MD5, SHA, etc.)</li>
<li><a href="http://exslt.org/" target="_blank">exslt functions </a>for dates and regular expressions.</li>
<li>crypto and canonicalization.</li>
<li>full digital signature generation and verification.</li>
<li>encoding and decoding to binary, base64 etc.</li>
<li>timestamping, UUID generation, random numbers.</li>
<li>cookie and authentication token handling.</li>
<li>MIME attachment get and set.</li>
</ul>
<p>Okay I could go on; there were more than two hundred functions the last time I counted. Go to our site at <a href="http://www.dynamicperimeter.com/?partnerref=blog_Pete" target="_blank">www.dynamicperimeter.com</a> and request the full documentation set to find out more.</p>
<p>So how does an extension function get used in everyday life?</p>
<p>Here's how to write a message to the transaction log from within your  XSLT. I'm assuming you have constructed a basic workflow and already  have an XSL Transform action within it.</p>
<p>The basic form would look like this:</p>
<pre>&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;</pre>
<pre>&lt;xsl:stylesheet xmlns:xsl="<a href="http://www.w3.org/1999/XSL/Transform" target="_BLANK">http://www.w3.org/1999/XSL/Transform</a>" version="1.0" <span style="color: #3366ff">xmlns:soae-xf="<a href="http://www.intel.com/soae/xpath/" target="_BLANK">http://www.intel.com/soae/xpath/</a>"</span>&gt;</pre>
<pre>    &lt;xsl:variable name="log" select="<span style="color: #339966">soae-xf:write-transaction-log('info',concat('Transaction ID:  ',soae-xf:get-transaction-id(),'; Comment: ','test',';'))</span>"/&gt;</pre>
<pre>    &lt;xsl:template match="/"&gt;</pre>
<pre>    &lt;!-- The variable is parsed lazily and is only evaluated when it is used in the test below. --&gt;</pre>
<pre>        &lt;xsl:if test="$log"&gt;&lt;/xsl:if&gt;</pre>
<pre>        &lt;xsl:apply-templates /&gt;</pre>
<pre>    &lt;/xsl:template&gt;</pre>
<pre>&lt;/xsl:stylesheet&gt;</pre>
<p><a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/DB_ETL_Process.png"><img class="alignleft size-full wp-image-18380" src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/DB_ETL_Process.png" alt="" width="237" height="340" /></a>There are three parts to remember:<br />
1, Make sure your transform has the soae-xf, exslt or soae-cache namespace declared as appropriate (shown <span style="color: #3366ff">in blue</span>).<br />
2, Declare your Extension Function with a variable. In this case $log (shown <span style="color: #339966">in green</span>).<br />
3, Do something with the variable to force the evaluation of the  variable. In this case we test $log for some contents. This is a  necessary step since one of the performance features of the XSLT engine  is lazy parsing which eliminates the evaluation of variables which may  turn out to be unnecessary.</p>
<p>Interoperation between the workflow variables and execution steps and the nitty gritty of XSLT is necessary because it gives the developer added flexibility when it comes to mediating messaging in a product that's used as a gateway or ESB.</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/en-us/blogs/2010/09/07/how-to-extend-xslt-using-built-in-extension-functions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Securing Oracle* Fusion Middleware with Microsoft* Active Directory</title>
		<link>http://software.intel.com/en-us/blogs/2010/09/02/securing-oracle-fusion-middleware-with-microsoft-active-directory/</link>
		<comments>http://software.intel.com/en-us/blogs/2010/09/02/securing-oracle-fusion-middleware-with-microsoft-active-directory/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 12:49:55 +0000</pubDate>
		<dc:creator>Allen Shortnacy (Intel)</dc:creator>
				<category><![CDATA[Software Tools]]></category>
		<category><![CDATA[AAA]]></category>
		<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[Authentication Authorization Accounting Audit]]></category>
		<category><![CDATA[BPEL]]></category>
		<category><![CDATA[Fusion Middleware]]></category>
		<category><![CDATA[governance]]></category>
		<category><![CDATA[Identity Management]]></category>
		<category><![CDATA[LDAP]]></category>
		<category><![CDATA[SAML]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[SOA Governance]]></category>
		<category><![CDATA[What If]]></category>

		<guid isPermaLink="false">http://software.intel.com/en-us/blogs/2010/09/02/securing-oracle-fusion-middleware-with-microsoft-active-directory/</guid>
		<description><![CDATA[Many enterprises have invested in Oracle* Fusion Middleware for their SOA implementations, sometimes along with other SOA enabled applications such as Web 2.0, Content Management, Business Process Management, etc. As applications are born from this stack of software you start to realize (or further realize) the importance of the total management lifecycle for this new [...]]]></description>
			<content:encoded><![CDATA[<p>Many enterprises have invested in Oracle* Fusion Middleware for their SOA implementations, sometimes along with other SOA enabled applications such as Web 2.0, Content Management, Business Process Management, etc. As applications are born from this stack of software you start to realize (or further realize) the importance of the total management lifecycle for this new type of application suite. These demands can grow significantly, especially if you've attemped to deliver many at once, often called 'Big Bang SOA'. Certain facets may have been made more clear by initial steps in the delivery of applications early in the maturity level. Often there is some realization around Identity Management in particular as part of the overall development pattern for giving context to Web 2.0 and BPM activities. Further rationalizing how the Identity Management ecosystem may need to be enhanced and provided as a more integral part of enterprise SOA can be disruptive. In addition, how the initial SOA may have been delivered (systems integrator, professional services, etc) can also be misleading for this next iteration of SOA with more Identity Management integration, capabilities and perhaps products. This is to say that generally the Identity Management ecosystem will more than likely be owned and operated by the customer as a mission critical asset. Undertaking coordination amogst these parties of what to deliver for Identity Management in this new paradigm to the point of exhibiting competence in such a critical, risk oriented area, can take time.</p>
<p>This blog posting is about how to leverage an existing Identity Management asset such as Microsoft* Active Directory along with Intel® SOA Expressway in order to bring authentication and authorization to your Oracle* Fusion Middleware SOA implementation. This isn't to say that there isn't tremendous value in the Oracle* Identity Management suite of products or that what we're presenting here will obviate the need for a more robust Identity Management capability. That takes time to digest to the point of being able to implement, operate and manage in the scope of a larger enterprise SOA. Since there is standards based integration to all of Oracle* Fusion Middleware we will blog about many facets of leveraging Intel's SOA Expressway, a web services security gateway, in order to expose business services along with identity platform services for secure delivery. In this case we will show a few simple Microsoft* Active Directory Organizations and Groups that allow you to protect a BPEL Process with not only authentication but role and attribute based authorization. In the future we will also look at the third 'A' after Authentication and Authorization which is that of Accounting (or Audit) which is a critical part of enabling integrated governance.</p>
<p>Let's first have a look at our simple synchronous BPEL Process in Oracle* JDeveloper:</p>
<p><img src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/SOAE_BPEL12.gif" alt="" width="759" height="525" class="alignnone size-full wp-image-18340" /></p>
<p>This BPEL process will make a call to the HR sample schema in an Oracle* Database. It will do so with the name of a Region from the Employee Details View in that schema:</p>
<p><img src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/HRDB1.gif" alt="" width="765" height="533" class="alignnone size-full wp-image-18342" /></p>
<p>Here are the input and output XSD types of the BPEL process itself which reflect the SQL query parameter as well as the return type from the database query:</p>
<p><img src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/Variables.gif" alt="" width="403" height="566" class="alignnone size-full wp-image-18235" /></p>
<p>Make sure you have deployed a JDBC configuration to Oracle* WebLogic that supports your JNDI name for the HR database lookup in your BPEL process. Here is a good <a href="http://biemond.blogspot.com/2009/06/osb-1031-with-database-adapter.html">blog</a> on how to set up this item (using the first ~6 screen shots in the WebLogic Administration Console as a reference). </p>
<p>Now let's expose this Oracle* Fusion Middleware BPEL Process in our service gateway. Save the WSDL from the location shown in Oracle* Fusion Middleware Enterprise Manager (on the 'Test' tab of the deployed BPEL Process):</p>
<p><img src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/WSDLLocation-1024x463.gif" alt="" width="1024" height="463" class="alignnone size-large wp-image-18248" /></p>
<p>You will also need to update the reference to HR_Table.xsd in the WSDL (delete the highlighted text) and make sure that file is available along with the WSDL from your BPEL process:</p>
<p><img src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/WSDLXSDUpdate-1024x590.gif" alt="" width="1024" height="590" class="alignnone size-large wp-image-18251" /></p>
<p>In Intel SOAE Expressway Services Designer we will begin a project of type 'Service Proxy':</p>
<p><img src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/ServiceProxy.gif" alt="" width="515" height="601" class="alignnone size-full wp-image-18237" /></p>
<p>Now we can use the WSDL from our BPEL process to define what is to be proxied:</p>
<p><img src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/WSDL1.gif" alt="" width="516" height="599" class="alignnone size-full wp-image-18253" /></p>
<p>Then we'll use HTTP Basic Authentication with LDAP:</p>
<p><img src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/Template1.gif" alt="" width="514" height="602" class="alignnone size-full wp-image-18254" /></p>
<p>Before we get into our use case to tie these items together here is a screen shot of my Microsoft* Active Directory configuration with another tool next to it called <a href="http://www.jxplorer.org/">JExplorer</a> which can be handy for exploring the <a href="http://www.sun.com/blueprints/0401/DIT.pdf">LDAP Directory Information Tree</a>. It is very important to understand these basic LDAP types as Microsoft* Active Directory is based on LDAP (and referred to as LDAP from hereon since this could be any LDAP server as far as Intel SOA Expressway is concerned). The groups here are from data in the HR schema from the Oracle* Database:</p>
<p><img src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/ActiveDirectory.gif" alt="" width="997" height="572" class="alignnone size-full wp-image-18256" /></p>
<p>Let's now update the ldap_auth.aaa (Authenticate, Authorize, Audit) object with the details needed to Authenticate to LDAP. We'll do that on the Identity Management tab of the ldap_auth.aaa object. I've created a user named 'Peter Hall' in LDAP and made him a member of Region-&gt;Europe and the Department-&gt;Human Resources group:</p>
<p><img src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/AuthN1.gif" alt="" width="944" height="755" class="alignnone size-full wp-image-18324" /></p>
<p>then Authorize access to the SOAE_HR service which we'll do on the Resource Authorization tab of the ldap_auth.aaa object:</p>
<p><img src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/AuthZ2.gif" alt="" width="976" height="759" class="alignnone size-full wp-image-18326" /></p>
<p>We will use the variable <em>%extracted-identity</em> here to determine membership in the Human Resources group in<br />
LDAP. You can use the same query in JExplorer to test that your LDAP will provide a return value. Once we're done with that we'll save the ldap_auth.aaa object and compile our project in Intel SOA Expressway Services Designer by exporting a bundle we can load onto the SOA Expressway runtime. We do this by navigating to Intel SOA Expressway-&gt;Export Application Bundle after right clicking on our project in Eclipse. At this time a dialogue box is presented:</p>
<p><img src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/Compile.gif" alt="" width="441" height="470" class="alignnone size-full wp-image-18289" /></p>
<p>This is telling us that we haven't yet generated our BPEL workflow for Intel SOA Expressway and clicking OK will do so automatically. Once done we now have our BPEL model that performs the service proxy functionality described in the ldap_auth.aaa object along with WSDL that we imported from our BPEL HR service:</p>
<p><img src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/SOAE_BPEL21-1024x824.gif" alt="" width="1024" height="824" class="alignnone size-large wp-image-18296" /></p>
<p>We also have an export bundle that we can load into the Intel SOA Expressway runtime to test: </p>
<p><img src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/UploadBundle.gif" alt="" width="868" height="786" class="alignnone size-full wp-image-18313" /></p>
<p>The important thing to do before making this Application active is to store the LDAP hostname and credential that will be used to bind to LDAP when executing the AAA step in our service proxy workflow. We start by editing the 'Invocation Agent' that will make the AAA calls to LDAP:</p>
<p><img src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/LDAPIA.gif" alt="" width="727" height="612" class="alignnone size-full wp-image-18314" /></p>
<p>And entering our credential for the LDAP bind:</p>
<p><img src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/LDAPIAEdit.gif" alt="" width="689" height="786" class="alignnone size-full wp-image-18316" /></p>
<p>Now we will use the WSDL generated in our Intel SOA Expressway Services Designer to create a request in a SOAP testing tool like <a href="http://www.soapui.org/">SOAPUI</a>. We will need to provide our username and password, in my case it's peterhall and Password1, as a Base64 encoded variable in an HTTP Header called Authorization. Take your <em>username:password</em> and convert it with a tool such as <a href="http://www.cafewebmaster.com/online_tools/base64_encode">this</a> and put the string 'Basic ' in front of the result as seen here. You will also need to change the endpoint hostname in SOAPUI from the Oracle* BPEL Server referenced in the WSDL to the hostname for Intel SOA Expressway:</p>
<p><img src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/SOAPUI1-1024x598.gif" alt="" width="1024" height="598" class="alignnone size-large wp-image-18332" /></p>
<p>While this proxied request should succeed if everything is done correctly we haven't confirmed that Peter Hall, who says he is an authorized requestor of Human Resources data for Europe, should actually receive that data. In order to do that we'll create another AAA object in our project and utilize it for querying another branch in our LDAP for membership in the Region that was passed to the request. First we need to delete the template object that was generated from the original project so it doesn't try to regenerate existing workflows. You could continue to add security steps to the template to make the project creation of security workflow assets more automated but it is easier to watch the development process initially to gain understanding of what's being generated:</p>
<p><img src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/DeleteTemplate.gif" alt="" width="839" height="759" class="alignnone size-full wp-image-18335" /></p>
<p>Now we'll open the BPEL process created for us in the previous steps and drag another AAA action from the Security palette to the right onto the BPEL workflow after our first AAA step. Finally select the new AAA object in the workflow by a single left click and in the bottom 'Properties' tab is a link to 'Create New Policy'. Accept the defaults and change the names to be more descriptive: </p>
<p><img src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/NewAuthZ-1024x661.gif" alt="" width="1024" height="661" class="alignnone size-large wp-image-18344" /></p>
<p>Now let's finish this up by Authorizing access to this particular set of HR data from the BPEL HR service by validating the Region attribute value passed in from the client request. We will continue to use <em>%extracted-identity</em> from the HTTP Basic Authentication for the LDAP query intersection with the Region OU:</p>
<p><img src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/AuthZRegion-1024x640.gif" alt="" width="1024" height="640" class="alignnone size-large wp-image-18452" /></p>
<p>We'll also add an 'If' control loop that compares the value returned from our LDAP query with that provided by the user:</p>
<p><img src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/09/IfControl-1024x777.gif" alt="" width="1024" height="777" class="alignnone size-large wp-image-18453" /></p>
<p>In this simple case a user belongs to one and only one Region but there are logic constructs in BPEL to handle XML repeating groups converted to and from comma seperated lists. Here is our XSLT/XPath comparison for the 'If' control that will simply exit if the user has submitted a Region other than the one they belong to. In a production system we would generate a more meaningful message for error handling:</p>
<p><em>substring(substring-before(string($AAA3_InternalSecurityMetadata/soae-ab:aaaLDAPAuthorizationResponse/ldap:ExternLookupResponse/ldap:batchResponse/ldap:searchResponse/ldap:searchResultEntry/@dn),','),4,20)=string($Receive/soapenv:Body/hr:HRSelect_regionInputParameters/hr:region)</em></p>
<p>Once we've saved and re-deployed our application bundle we are now not only providing a means for the client to provide data about their Region to the service but also using LDAP search to Authorize that the authenticated user can see that data.</p>
<p>In this blog we've exposed the Identity Management functions necessary to Authenticate and Authorize our Oracle* Fusion Middleware BPEL HR service with LDAP and we've done so in a programmitic way that mimics the kinds of tasks developers perform for the creation of business logic. This enables a simpler, business oriented middleware stack while also enabling SOA developers to control the way their applications are secured at the edge of the network and providing enterprise architects ability to enforce how these policies are applied.</p>
<p>This is only a rudimentary use case here in terms of simple business rules and Oracle* Fusion Middleware itself, in fact one that could be performed with the ESB/Service Mediation capabilities of Intel SOA Expressway. However, this was to lay a foundation for the next blog posting on this subject where we will look at enabling the Oracle* BPEL Process Manager Human Workflow web services with SAML assertions on the Intel SOA Expressway service gateway in order to present stateful data persisted in the scope of business transactions with asynchronous services. Also between the template creation of the Intel SOA Expressway Services Designer project as well as the creation of the export bundle that serves as an archive of designtime and runtime we've uncovered some interesting possibilties that we will address in a future blog on service development lifecycle including configuration management. </p>
<p>To wrap up there are a number of challenges that await, impact somewhat unknown, in the scope of an SOA as it goes beyond the intial maturity spiral or recovers from a 'Big Bang' SOA that experienced varying degrees of success for adoption across the enterprise. One of those challenges that will indeed permeate the entire SOA lifecycle is that of Identity Management. The major enterprise application vendors (and smaller ones as well) have a wealth of tools for implementing a robust Identity Management strategy. However, factoring these products into an SOA that is attempting to move to the next level of maturity for offering services across an organization and potentially to the outside world as well, can be an arduous, potentially lengthy undertaking for a myriad of reasons. One of the most conspicuous of these reasons is how a set of common operation procedures will be reached that satisfies the risk inherent with managing identities that will have access to critical information systems such as those based on Oracle* Fusion Middleware. Since middleware suites like Oracle's are based largely on SOA there is a safe and easy way to expose these services to a larger audience as you realize the appetite for a broader Identity Management infrastructure over time. That way is Intel SOA Expressway which can not only leverage your existing enterprise Identity Management infrasructure like LDAP for authentication and authorization of Oracle* Fusion Middleware services but also offer a service oriented development patterned environment for these Identity Management operations that will become such a critical part of your enterprise SOA as you reach new levels of maturity.</p>
<p>If you'd like to sign up for an evaluation of SOA Expressway as a download or online you can do so <a href="http://dynamicperimeter.com/solutions/policy-integrated-soa-governance/?partnerref=blog_shortnacy">here</a>.</p>
<p>*Other names and brands may be claimed as the property of others.</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/en-us/blogs/2010/09/02/securing-oracle-fusion-middleware-with-microsoft-active-directory/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Have a Cisco ACE XML Gateway? Intel(R) SOA Expressway to the Rescue</title>
		<link>http://software.intel.com/en-us/blogs/2010/08/27/have-a-cisco-ace-xml-gateway-intelr-soa-expressway-to-the-rescue/</link>
		<comments>http://software.intel.com/en-us/blogs/2010/08/27/have-a-cisco-ace-xml-gateway-intelr-soa-expressway-to-the-rescue/#comments</comments>
		<pubDate>Fri, 27 Aug 2010 20:34:43 +0000</pubDate>
		<dc:creator>Blake Dournaee (Intel)</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[What If]]></category>

		<guid isPermaLink="false">http://software.intel.com/en-us/blogs/2010/08/27/have-a-cisco-ace-xml-gateway-intelr-soa-expressway-to-the-rescue/</guid>
		<description><![CDATA[It looks like Cisco has issued both an end-of-sale and end-of-life announcement for their Cisco ACE XML Gateway. In response, the SOA Expressway team has teed-up a special offer for Cisco customers looking to move to replacement XML Gateway. This is an interesting development to be sure, and it probably signals that Cisco is seeing [...]]]></description>
			<content:encoded><![CDATA[<p>It looks like Cisco has issued both an end-of-sale and end-of-life <a href="http://https://www.cisco.com/en/US/prod/collateral/contnetw/ps5719/ps7314/end_of_life_c51_609816.html">announcement</a> for their Cisco ACE XML Gateway.</p>
<p>In response, the SOA Expressway team has teed-up a <a href="http://www3.intel.com/cd/software/products/asmo-na/eng/406215.htm">special offer</a> for Cisco customers looking to move to replacement XML Gateway.</p>
<p>This is an interesting development to be sure, and it probably signals that Cisco is seeing less demand for XML traffic than anticipated. Voice and video probably have taken over a larger share.</p>
<p>All this being said, I remember talking to a CTO at a major networking company (not Cisco) about 5 years ago about the proportion of XML traffic as a fraction of total Internet traffic, and while I forgot his name, I can't forget his comment which was something along the lines of: "90% percent of Internet traffic is spam and porn." </p>
<p>I wonder how much the proportion has changed in the last 5 years? Hopefully it is an upward trend :)</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/en-us/blogs/2010/08/27/have-a-cisco-ace-xml-gateway-intelr-soa-expressway-to-the-rescue/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Integration of Altova&#039;s MapForce Data Mappings Into SOA Expressway</title>
		<link>http://software.intel.com/en-us/blogs/2010/08/22/integration-of-altovas-mapforce-data-mappings-into-soa-expressway/</link>
		<comments>http://software.intel.com/en-us/blogs/2010/08/22/integration-of-altovas-mapforce-data-mappings-into-soa-expressway/#comments</comments>
		<pubDate>Mon, 23 Aug 2010 02:06:19 +0000</pubDate>
		<dc:creator>Joe Welsh (Intel)</dc:creator>
				<category><![CDATA[Software Tools]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Altova Map Force]]></category>
		<category><![CDATA[Altova MapForce]]></category>
		<category><![CDATA[cross domain solutions]]></category>
		<category><![CDATA[data conversion]]></category>
		<category><![CDATA[data mapping]]></category>
		<category><![CDATA[esb integration]]></category>
		<category><![CDATA[esb soa]]></category>
		<category><![CDATA[extensibility]]></category>
		<category><![CDATA[Integration Appliance]]></category>
		<category><![CDATA[Intel]]></category>
		<category><![CDATA[Intel SOA Expressway]]></category>
		<category><![CDATA[Intel SOAE]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[legacy csv]]></category>
		<category><![CDATA[legacy SOA]]></category>
		<category><![CDATA[legacy to xml]]></category>
		<category><![CDATA[MapForce]]></category>
		<category><![CDATA[MapForce data mapping]]></category>
		<category><![CDATA[soa and esb]]></category>
		<category><![CDATA[soa development]]></category>
		<category><![CDATA[web service gateway]]></category>
		<category><![CDATA[web services xml]]></category>
		<category><![CDATA[What If]]></category>
		<category><![CDATA[XML appliance]]></category>
		<category><![CDATA[XML conversion]]></category>
		<category><![CDATA[xml gateway]]></category>
		<category><![CDATA[XML Software]]></category>
		<category><![CDATA[xsl performance]]></category>
		<category><![CDATA[xslt processor]]></category>
		<category><![CDATA[XSLT Visual Mapping]]></category>

		<guid isPermaLink="false">http://software.intel.com/en-us/blogs/2010/08/22/integration-of-altovas-mapforce-data-mappings-into-soa-expressway/</guid>
		<description><![CDATA[Altova is well known for it's flagship product XMLSpy - as anyone who has worked extensively with XML data can tell you. However, they have an entire suite of product offerings, one of which is MapForce. As described on it's website: "Altova MapForce® 2010 is an award-winning any-to-any graphical data mapping, conversion, and integration tool [...]]]></description>
			<content:encoded><![CDATA[<p style="padding-top:10px">Altova is well known for it's flagship product XMLSpy - as anyone who has worked extensively with XML data can tell you.  However, they have an entire suite of product offerings, one of which is MapForce.  As described on it's <a href="http://www.altova.com/mapforce.html">website</a>:</p>
<p><i>"Altova MapForce® 2010 is an award-winning any-to-any graphical data mapping, conversion, and integration tool that maps data between any combination of XML, database, flat file, EDI, Excel 2007+, XBRL, and/or Web service, then transforms data instantly or autogenerates royalty-free data integration code for the execution of recurrent conversions."</i></p>
<p style="padding-top:10px">In case you weren't aware, <a href="http://www.dynamicperimeter.com/solutions/soa-esb-integration-appliance/?partnerref=blog_joewelsh">SOA Expressway</a> is remarkably extensible.  In this post I will share with you my experience integrating MapForce's data mapping projects into <a href="http://www.dynamicperimeter.com/solutions/soa-esb-integration-appliance/?partnerref=blog_joewelsh">SOA Expressway</a>.</p>
<p><b>Use Case</b></p>
<p style="padding-top:6px">Suppose there is a need to integrate legacy flat file delimited data into a web services orchestration within <a href="http://www.dynamicperimeter.com/solutions/soa-esb-integration-appliance/?partnerref=blog_joewelsh">SOA Expressway</a>.   Since web services utilize XML for its payload, the legacy data needs to be converted to XML.  Although <a href="http://www.dynamicperimeter.com/solutions/soa-esb-integration-appliance/?partnerref=blog_joewelsh">SOA Expressway's</a> Data Transformation services could easily transform the legacy data into XML required by web services, a MapForce data mapping project already exists that easily handles this XML conversion.</p>
<p><a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/08/transaction_mfd_combo.jpg"><img src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/08/transaction_mfd_combo.jpg" alt="" width="699" height="455" class="alignnone size-full wp-image-17954" /></a></p>
<p>Because MapForce allows it's projects to be exported to external executable code, these data mapping projects don't necessarily have to be redeveloped by another integration appliance to be utilized by that appliance.</p>
<div style="text-align:center"><a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/08/transaction_mfd_code.jpg"><img src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/08/transaction_mfd_code.jpg" alt="" width="550" height="402" class="alignnone size-full wp-image-17954" /></a></div>
<p style="padding-top:10px">Using this feature to export Java code, MapForce data conversions can be directly integrated into SOA Expressway.  SOA Expressway's Java Extensibility Guide (included in the product) outlines how to incorporate this code to build a customized "data-mapper".</p>
<p><a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/08/java_code.jpg"><img src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/08/java_code.jpg" alt="" width="700" height="215" class="alignnone size-full wp-image-17995" /></a></p>
<p style="padding-top:6px">Exporting the "data-mapper" to a Java plugin allows any application with SOA Expressway to utilize it.</p>
<div style="text-align:center"><a href="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/08/MapForce_Custom_IA_Process_2.jpg"><img src="http://software.intel.com/en-us/blogs/wordpress/wp-content/uploads/2010/08/MapForce_Custom_IA_Process_2.jpg" alt="" width="475" height="470" class="alignnone size-full wp-image-17954" /></a></div>
<p><b>Comments</b></p>
<p style="padding-top:6px">
This use case provides another demonstration of SOA Expressway working along side with other integration appliances.  Even though SOA Expressway has the tools to directly work with legacy data and protocols, it is nice to know how easy extensible it is.  MapForce is a solid product with a rich feature set.  I found the Java code generated by MapForce very thorough, flexible (allowing for a variety of input and output formats), well commented, and with plenty of error and logging capability.</p>
<p>Interested in trying this out?  You can download a 30-day evaluation of SOA Expressway from <a href="http://www.dynamicperimeter.com/download/SOAExpressway">www.dynamicperimeter.com/download/SOAExpressway</a> and if necessary an evaluation copy of MapForce from <a href="http://www.altova.com/mapforce.html">Altova's website</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/en-us/blogs/2010/08/22/integration-of-altovas-mapforce-data-mappings-into-soa-expressway/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

