You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by hi...@apache.org on 2010/12/01 02:15:33 UTC
svn commit: r1040845 - in
/synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide: samples.xml
samples/sample100.xml samples/sample101.xml
Author: hiranya
Date: Wed Dec 1 01:15:32 2010
New Revision: 1040845
URL: http://svn.apache.org/viewvc?rev=1040845&view=rev
Log:
sample 100, 101
Modified:
synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples.xml
synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample100.xml
synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample101.xml
Modified: synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples.xml
URL: http://svn.apache.org/viewvc/synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples.xml?rev=1040845&r1=1040844&r2=1040845&view=diff
==============================================================================
--- synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples.xml (original)
+++ synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples.xml Wed Dec 1 01:15:32 2010
@@ -72,8 +72,8 @@
<subsection name="QoS Addition/Removal with Message Mediation">
<p>
<ul>
- <li><a href="">Sample 100: Using WS-Security for outgoing messages</a></li>
- <li><a href="">Sample 101: Reliable message exchange between Synapse and the back-end server using WS-Reliable Messaging</a></li>
+ <li><a href="samples/sample100.html">Sample 100: Using WS-Security for outgoing messages</a></li>
+ <li><a href="samples/sample101.html">Sample 101: Using WS-ReliableMessaging for outgoing messages</a></li>
</ul>
</p>
</subsection>
Modified: synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample100.xml
URL: http://svn.apache.org/viewvc/synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample100.xml?rev=1040845&r1=1040844&r2=1040845&view=diff
==============================================================================
--- synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample100.xml (original)
+++ synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample100.xml Wed Dec 1 01:15:32 2010
@@ -23,16 +23,14 @@
<title>Apache Synapse - Sample 100</title>
</properties>
<body>
- <section name="Sample 100: ">
+ <section name="Sample 100: Using WS-Security for Outgoing Messages">
<div class="xmlConf"><definitions xmlns="http://ws.apache.org/ns/synapse">
<localEntry key="sec_policy" src="file:repository/conf/sample/resources/policy/policy_3.xml"/>
- <!-- Test -->
<sequence name="main">
<in>
<send>
- <!--Test 2-->
<endpoint name="secure">
<address uri="http://localhost:9000/services/SecureStockQuoteService">
<enableSec policy="sec_policy"/>
@@ -48,14 +46,19 @@
</definitions></div>
<subsection name="Objective">
<p>
-
+ Showcase the ability of Synapse to connect to secured endpoints using WS-Security
+ standards
</p>
</subsection>
<subsection name="Pre-requisites">
<p>
<ul>
<li>
- Deploy the SimpleStockQuoteService in the sample Axis2 server and start Axis2
+ Download and install the Java Cryptography Extension (JCE) unlimited
+ strength policy files for your JDK
+ </li>
+ <li>
+ Deploy the SecureStockQuoteService in the sample Axis2 server and start Axis2
</li>
<li>
Start Synapse using the configuration numbered 100 (repository/conf/sample/synapse_sample_100.xml)
@@ -68,11 +71,67 @@
</p>
</subsection>
<subsection name="Executing the Client">
- <div class="command">ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/</div>
-
- <div class="consoleOutput">Sat Nov 18 21:01:23 IST 2006 SimpleStockQuoteService :: Generating quote for : IBM</div>
-
- <div class="consoleOutput">Standard :: Stock price = $95.26454380258552</div>
+ <p>
+ Use the stock quote client to send a request without WS-Security. Synapse is
+ configured to enable WS-Security as per the policy specified by 'policy_3.xml'
+ for the outgoing messages to the SecureStockQuoteService endpoint.
+ The debug log messages on Synapse shows the encrypted message flowing to the
+ service and the encrypted response being received by Synapse. The wsse:Security
+ header is then removed from the decrypted message and the response is delivered
+ back to the client, as expected. You may execute the client as follows:
+ </p>
+ <div class="command">ant stockquote -Dtrpurl=http://localhost:8280/</div>
+ <p>
+ The message sent by Synapse to the secure service can be seen as follows, when
+ TCPMon is used.
+ </p>
+ <div class="consoleOutput">POST http://localhost:9001/services/SecureStockQuoteService HTTP/1.1
+Host: 127.0.0.1
+SOAPAction: urn:getQuote
+Content-Type: text/xml; charset=UTF-8
+Transfer-Encoding: chunked
+Connection: Keep-Alive
+User-Agent: Synapse-HttpComponents-NIO
+
+800
+<?xml version='1.0' encoding='UTF-8'?>
+<soapenv:Envelope xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:wsa="http://www.w3.org/2005/08/addressing" ..>
+ <soapenv:Header>
+ <wsse:Security ..>
+ <wsu:Timestamp ..>
+ ...
+ </wsu:Timestamp>
+ <xenc:EncryptedKey..>
+ ...
+ </xenc:EncryptedKey>
+ <wsse:BinarySecurityToken ...>
+ <ds:SignedInfo>
+ ...
+ </ds:SignedInfo>
+ <ds:SignatureValue>
+ ...
+ </ds:SignatureValue>
+ <ds:KeyInfo Id="KeyId-29551621">
+ ...
+ </ds:KeyInfo>
+ </ds:Signature>
+ </wsse:Security>
+ <wsa:To>http://localhost:9001/services/SecureStockQuoteService</wsa:To>
+ <wsa:MessageID>urn:uuid:1C4CE88B8A1A9C09D91177500753443</wsa:MessageID>
+ <wsa:Action>urn:getQuote</wsa:Action>
+ </soapenv:Header>
+ <soapenv:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Id-3789605">
+ <xenc:EncryptedData Id="EncDataId-3789605" Type="http://www.w3.org/2001/04/xmlenc#Content">
+ <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc" />
+ <xenc:CipherData>
+ <xenc:CipherValue>Layg0xQcnH....6UKm5nKU6Qqr</xenc:CipherValue>
+ </xenc:CipherData>
+ </xenc:EncryptedData>
+ </soapenv:Body>
+</soapenv:Envelope>0</div>
+ <p>
+ Note the WS-Security headers and the encrypted payload added by Synapse.
+ </p>
</subsection>
</section>
<p><a href="../samples.html">Back to Catalog</a></p>
Modified: synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample101.xml
URL: http://svn.apache.org/viewvc/synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample101.xml?rev=1040845&r1=1040844&r2=1040845&view=diff
==============================================================================
--- synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample101.xml (original)
+++ synapse/trunk/scratch/hiranya/website/src/site/xdoc/userguide/samples/sample101.xml Wed Dec 1 01:15:32 2010
@@ -23,37 +23,38 @@
<title>Apache Synapse - Sample 101</title>
</properties>
<body>
- <section name="Sample 101: ">
- <div class="xmlConf"><definitions xmlns="http://ws.apache.org/ns/synapse">
-
- <sequence name="main">
- <in>
- <RMSequence single="true" version="1.0"/>
- <send>
- <endpoint name="reliable">
- <address uri="http://localhost:9000/services/ReliableStockQuoteService">
- <enableRM/>
- <enableAddressing/>
- </address>
- </endpoint>
- </send>
- </in>
- <out>
- <send/>
- </out>
- </sequence>
-
+ <section name="Sample 101: Using WS-ReliableMessaging for Outgoing Messages">
+ <div class="xmlConf"><definitions xmlns="http://ws.apache.org/ns/synapse">
+
+ <sequence name="main">
+ <in>
+ <RMSequence single="true" version="1.0"/>
+ <send>
+ <endpoint name="reliable">
+ <address uri="http://localhost:9000/services/ReliableStockQuoteService">
+ <enableRM/>
+ <enableAddressing/>
+ </address>
+ </endpoint>
+ </send>
+ </in>
+ <out>
+ <send/>
+ </out>
+ </sequence>
+
</definitions></div>
<subsection name="Objective">
<p>
-
+ Demonstrate the ability of Synapse to exchange messages with an endpoint
+ reliably, using WS-ReliableMessaging
</p>
</subsection>
<subsection name="Pre-requisites">
<p>
<ul>
<li>
- Deploy the SimpleStockQuoteService in the sample Axis2 server and start Axis2
+ Deploy the ReliableStockQuoteService in the sample Axis2 server and start Axis2
</li>
<li>
Start Synapse using the configuration numbered 101 (repository/conf/sample/synapse_sample_101.xml)
@@ -66,11 +67,160 @@
</p>
</subsection>
<subsection name="Executing the Client">
- <div class="command">ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/</div>
-
- <div class="consoleOutput">Sat Nov 18 21:01:23 IST 2006 SimpleStockQuoteService :: Generating quote for : IBM</div>
-
+ <p>
+ In the above configuration, WS-RM is engaged on the endpoint using the
+ <enableRM/> tag. It is possible to engage WS-RM to both Address and WSDL
+ endpoints using this tag. In addition to the RM enabled endpoint, RMSequence
+ mediator is specified before the send mediator. This mediator is used to specify
+ the set of messages to be sent using a single RM sequence. In this sample it is
+ specified as single message per sequence. It also specifies the version of the
+ WS-RM to be used. Refer to the Synapse configuration language documentation for
+ more information about the RMSequence mediator. RM related SOAP headers are
+ removed form the message in the out mediator as WS-RM message exchange takes
+ place only between the Synapse and the server. Now run the sample client using
+ the following command.
+ </p>
+ <div class="command">ant stockquote -Dsymbol=IBM -Dmode=quote -Daddurl=http://localhost:8280</div>
+ <p>
+ You can observe the client output displaying the quote price for IBM as follows:
+ </p>
<div class="consoleOutput">Standard :: Stock price = $95.26454380258552</div>
+ <p>
+ There is no difference to be observed between the normal message exchange and
+ WS-RM enabled message exchange as far as client and server outputs are considered.
+ But if you look at the wire level messages, you would observe additional WS-RM
+ messages and WS-RM headers. Synapse, the initiator of the RM sequence, first try
+ to create a sequence by sending a message with CreateSequence element.
+ </p>
+ <div class="consoleOutput">...
+<soapenv:Body>
+ <wsrm:CreateSequence xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm">
+ <wsrm:AcksTo>
+ <wsa:Address>http://www.w3.org/2005/08/addressing/anonymous</wsa:Address>
+ </wsrm:AcksTo>
+ <wsrm:Offer>
+ <wsrm:Identifier>urn:uuid:546F6F33FB7D8BBE351179807372769</wsrm:Identifier>
+ </wsrm:Offer>
+ </wsrm:CreateSequence>
+</soapenv:Body>
+...</div>
+ <p>
+ Sample Axis2 server responds to CreateSequence request with the following
+ message:
+ </p>
+ <div class="consoleOutput">...
+<soapenv:Body>
+ <wsrm:CreateSequenceResponse xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm">
+ <wsrm:Identifier>urn:uuid:879853A6871A66641C1179807373270</wsrm:Identifier>
+ <wsrm:Accept>
+ <wsrm:AcksTo>
+ <wsa:Address>http://localhost:9000/services/ReliableStockQuoteService</wsa:Address>
+ </wsrm:AcksTo>
+ </wsrm:Accept>
+ </wsrm:CreateSequenceResponse>
+</soapenv:Body>
+...</div>
+ <p>
+ Once the sequence is established, Synapse sends the request to the server with
+ the pre-negotiated sequence ID.
+ </p>
+ <div class="consoleOutput"><soapenv:Envelope xmlns:wsa="http://www.w3.org/2005/08/addressing"
+ xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+ <soapenv:Header>
+ <wsa:To>http://localhost:9000/services/ReliableStockQuoteService</wsa:To>
+ <wsa:MessageID>urn:uuid:DB9A5257B637DDA38B1179807372560712002-1515891720</wsa:MessageID>
+ <wsa:Action>urn:getQuote</wsa:Action>
+ <wsrm:Sequence xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm"
+ soapenv:mustUnderstand="1">
+ <wsrm:Identifier>urn:uuid:879853A6871A66641C1179807373270</wsrm:Identifier>
+ <wsrm:MessageNumber>1</wsrm:MessageNumber>
+ <wsrm:LastMessage/>
+ </wsrm:Sequence>
+ </soapenv:Header>
+ <soapenv:Body>
+ <m0:getQuote xmlns:m0="http://services.samples">
+ <m0:request>
+ <m0:symbol>IBM</m0:symbol>
+ </m0:request>
+ </m0:getQuote>
+ </soapenv:Body>
+</soapenv:Envelope></div>
+ <p>
+ Synapse keeps on sending the above message till the server responds with a valid
+ response message with 200 OK HTTP header. If the server is not ready with a
+ response, it will respond with 202 Accepted HTTP header for all requests. Once
+ the server is ready with a response it will send the response message with
+ sequence ID as follows.
+ </p>
+ <div class="consoleOutput"><soapenv:Envelope xmlns:wsa="http://www.w3.org/2005/08/addressing"
+ xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+ <soapenv:Header>
+ <wsa:MessageID>urn:uuid:879853A6871A66641C1179807373804</wsa:MessageID>
+ <wsa:Action>http://services.samples/ReliableStockQuoteServicePortType/getQuoteResponse
+ </wsa:Action>
+ <wsa:RelatesTo>urn:uuid:DB9A5257B637DDA38B1179807372560712002-1515891720</wsa:RelatesTo>
+ <wsrm:Sequence xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm"
+ soapenv:mustUnderstand="1">
+ <wsrm:Identifier>urn:uuid:546F6F33FB7D8BBE351179807372769</wsrm:Identifier>
+ <wsrm:MessageNumber>1</wsrm:MessageNumber>
+ <wsrm:LastMessage/>
+ </wsrm:Sequence>
+ <wsrm:SequenceAcknowledgement xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm"
+ soapenv:mustUnderstand="1">
+ <wsrm:Identifier>urn:uuid:879853A6871A66641C1179807373270</wsrm:Identifier>
+ <wsrm:AcknowledgementRange Lower="1" Upper="1"/>
+ </wsrm:SequenceAcknowledgement>
+ </soapenv:Header>
+ <soapenv:Body>
+ <ns:getQuoteResponse xmlns:ns="http://services.samples/xsd">
+...</div>
+ <p>
+ Now both Synapse and the server are done with the actual message exchange. Then
+ Synapse sends a request to terminate the sequence as follows:
+ </p>
+ <div class="consoleOutput"><soapenv:Envelope xmlns:wsa="http://www.w3.org/2005/08/addressing"
+ xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+ <soapenv:Header>
+ <wsa:To>http://localhost:9000/services/ReliableStockQuoteService</wsa:To>
+ <wsa:MessageID>urn:uuid:546F6F33FB7D8BBE351179807379591</wsa:MessageID>
+ <wsa:Action>http://schemas.xmlsoap.org/ws/2005/02/rm/TerminateSequence</wsa:Action>
+ <wsrm:SequenceAcknowledgement xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm"
+ soapenv:mustUnderstand="1">
+ <wsrm:Identifier>urn:uuid:546F6F33FB7D8BBE351179807372769</wsrm:Identifier>
+ <wsrm:AcknowledgementRange Lower="1" Upper="1"/>
+ </wsrm:SequenceAcknowledgement>
+ </soapenv:Header>
+ <soapenv:Body>
+ <wsrm:TerminateSequence xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm">
+ <wsrm:Identifier>urn:uuid:879853A6871A66641C1179807373270</wsrm:Identifier>
+ </wsrm:TerminateSequence>
+ </soapenv:Body>
+</soapenv:Envelope></div>
+ <p>
+ Server responds to the sequence termination message, accepting to terminate the
+ sequence as follows.
+ </p>
+ <div class="consoleOutput"><soapenv:Envelope xmlns:wsa="http://www.w3.org/2005/08/addressing"
+ xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+ <soapenv:Header>
+ <wsa:ReplyTo>
+ <wsa:Address>http://localhost:9000/services/ReliableStockQuoteService</wsa:Address>
+ </wsa:ReplyTo>
+ <wsa:MessageID>urn:uuid:879853A6871A66641C1179807380190</wsa:MessageID>
+ <wsa:Action>http://schemas.xmlsoap.org/ws/2005/02/rm/TerminateSequence</wsa:Action>
+ </soapenv:Header>
+ <soapenv:Body>
+ <wsrm:TerminateSequence xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm">
+ <wsrm:Identifier>urn:uuid:546F6F33FB7D8BBE351179807372769</wsrm:Identifier>
+ </wsrm:TerminateSequence>
+ </soapenv:Body>
+</soapenv:Envelope></div>
+ <p>
+ Note that although each of above messages are separate SOAP messages, in most
+ cases they will be exchanged in a single socket connection as HTTP Keep-Alive
+ header is being used.
+ </p>
+
</subsection>
</section>
<p><a href="../samples.html">Back to Catalog</a></p>