<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 10 Dec 2015 -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Apache Rampart &#x2013; Apache Rampart Samples</title>
    <style type="text/css" media="all">
      @import url("./css/maven-base.css");
      @import url("./css/maven-theme.css");
      @import url("./css/site.css");
    </style>
    <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
    <meta name="Date-Revision-yyyymmdd" content="20151210" />
    <meta http-equiv="Content-Language" content="en" />
        
        </head>
  <body class="composite">
    <div id="banner">
                                      <a href="images/apache-rampart-logo.jpg" id="bannerLeft">
                Apache Rampart
                </a>
                              <a href="http://www.apache.org" id="bannerRight">
                                        <img src="http://www.apache.org/images/asf_logo_wide.png" alt="$alt" />
                </a>
            <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="breadcrumbs">
            
                    
                <div class="xleft">
        <span id="publishDate">Last Published: 10 Dec 2015</span>
                  &nbsp;| <span id="projectVersion">Version: 1.6.3</span>
                      </div>
            <div class="xright">                    <a href="../core/" title="Apache Axis2/Java">Apache Axis2/Java</a>
              
                    
      </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="leftColumn">
      <div id="navcolumn">
             
                    
                                <h5>Apache Rampart</h5>
                  <ul>
                  <li class="none">
                          <a href="index.html" title="Home">Home</a>
            </li>
                                                                                <li class="expanded">
                          <a href="javascript:void(0)" title="Downloads">Downloads</a>
                    <ul>
                      <li class="none">
                          <a href="download.html" title="Releases">Releases</a>
            </li>
                      <li class="none">
                          <a href="svn.html" title="Source Code">Source Code</a>
            </li>
              </ul>
        </li>
                                                                                                  <li class="expanded">
                          <a href="javascript:void(0)" title="Release Notes">Release Notes</a>
                    <ul>
                      <li class="none">
                          <a href="release-notes/1.6.1.html" title="1.6.1">1.6.1</a>
            </li>
                      <li class="none">
                          <a href="release-notes/1.6.2.html" title="1.6.2">1.6.2</a>
            </li>
                      <li class="none">
                          <a href="release-notes/1.6.3.html" title="1.6.3">1.6.3</a>
            </li>
              </ul>
        </li>
          </ul>
                       <h5>Documentation</h5>
                  <ul>
                  <li class="none">
                          <a href="quick-start.html" title="Getting Started">Getting Started</a>
            </li>
                  <li class="none">
            <strong>Samples</strong>
          </li>
                  <li class="none">
                          <a href="http://wiki.apache.org/ws/FrontPage/Rampart/FAQ" class="externalLink" title="FAQ">FAQ</a>
            </li>
                  <li class="none">
                          <a href="rampartconfig-guide.html" title="Rampart Configuration">Rampart Configuration</a>
            </li>
                  <li class="none">
                          <a href="setting-up-sts.html" title="STS Configuration">STS Configuration</a>
            </li>
                  <li class="none">
                          <a href="developer-guide.html" title="Developer Guide">Developer Guide</a>
            </li>
                  <li class="none">
                          <a href="siteHowTo.html" title="Build the Site">Build the Site</a>
            </li>
          </ul>
                       <h5>Resources</h5>
                  <ul>
                  <li class="none">
                          <a href="articles.html" title="Articles">Articles</a>
            </li>
                  <li class="none">
                          <a href="specifications.html" title="Specifications">Specifications</a>
            </li>
                  <li class="none">
                          <a href="apidocs/index.html" title="Online Javadocs">Online Javadocs</a>
            </li>
          </ul>
                       <h5>Project Information</h5>
                  <ul>
                  <li class="none">
                          <a href="team-list.html" title="Project Team">Project Team</a>
            </li>
                  <li class="none">
                          <a href="http://issues.apache.org/jira/browse/Rampart" class="externalLink" title="Issue Tracking">Issue Tracking</a>
            </li>
                  <li class="none">
                          <a href="mail-lists.html" title="Mailing Lists">Mailing Lists</a>
            </li>
                  <li class="none">
                          <a href="http://svn.apache.org/viewvc/axis/axis2/java/rampart/" class="externalLink" title="Source Code">Source Code</a>
            </li>
                  <li class="none">
                          <a href="http://www.apache.org/licenses/" class="externalLink" title="License">License</a>
            </li>
                  <li class="none">
                          <a href="http://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsorship">Sponsorship</a>
            </li>
                  <li class="none">
                          <a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks">Thanks</a>
            </li>
                  <li class="none">
                          <a href="http://www.apache.org/security/" class="externalLink" title="Security">Security</a>
            </li>
          </ul>
                             <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
        <img class="poweredBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
      </a>
                   
                    
            </div>
    </div>
    <div id="bodyColumn">
      <div id="contentBox">
        <!-- ~  Licensed to the Apache Software Foundation (ASF) under one
  ~  or more contributor license agreements.  See the NOTICE file
  ~  distributed with this work for additional information
  ~  regarding copyright ownership.  The ASF licenses this file
  ~  to you under the Apache License, Version 2.0 (the
  ~  "License"); you may not use this file except in compliance
  ~  with the License.  You may obtain a copy of the License at
  ~
  ~   http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~  Unless required by applicable law or agreed to in writing,
  ~  software distributed under the License is distributed on an
  ~   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~  KIND, either express or implied.  See the License for the
  ~  specific language governing permissions and limitations
  ~  under the License. -->
    
        <h1>Rampart Samples</h1>
        
<div class="section">
<h2><a name="Basic_samples"></a> Basic samples </h2>
        
<p>These samples use parameter based configuration model. This will be a great starting point to get a basic understanding of how WS Security really works.  </p>
        
<div class="section">
<h2><a name="Policy_samples"></a> Policy samples </h2>
        
<p>These samples use WS Security Policy Language for configuration. It is recommended to use policy based configuration model for all production scenarios </p>
        
<div class="section">
<h3><a name="Running_Samples"></a>Running Samples</h3>
        
<p>Now we'll look at how to run the first sample inside samples/policy folder.</p>
        
<ol style="list-style-type: decimal">
            
<li>Open a console and change the directory to sample/policy and give the following command. This will start the server at port 8080</li>
            
<div>
<pre>
<tt>$ant service.01</tt>
            </pre></div>
            
<li>Open a new console and change the directory to sample/policy and type the following command.</li>
            
<div>
<pre>
<tt>$ant client.01</tt>
            </pre></div>
        </ol>
        
<p>Congratulations! Now you have executed the first sample. Rest of the samples can be run by changing the sample number.</p>
        <br /></br>
        <br /></br>
        </div>
<div class="section">
<h3><a name="Samples"></a>Samples</h3>
        <br /></br>
        
<table border="0" class="bodyTable">
            <tbody>
                
<tr class="a">
<td>Sample 01</td></tr>
                
<tr class="b"></tr>           
           </tbody>
        </table>
        
<div style="margin-left:2px;margin-right:-2px;">UsernameToken Authentication, The policy uses a TransportBinding and requires a SignedSupportingToken which 
is a UsernameToken and the inclusion of a TimeStamp. </div>
        
<ul>
            
<li><a href="samples/policy/sample01.xml">Policy</a></li>
            
<li><a href="samples/msgs/req01.xml">Request Message</a></li>
            
<li><a href="samples/msgs/res01.xml">Response Message</a></li>
        </ul>

        <br /></br>
        
<table border="0" class="bodyTable">
            <tbody>
                
<tr class="a">
<td>Sample 02</td></tr>
                
<tr class="b"></tr>
           </tbody>
        </table>
        
<div class="b" style="margin-left:2px;margin-right:-2px;">Sign only, An AsymmetricBinding is used. Entire headers and body to be signed.
Algorithm suite is TripleDesRsa15.</div>
        
<ul>
            
<li><a href="samples/policy/sample02.xml">Policy</a></li>
            
<li><a href="samples/msgs/req02.xml">Request Message</a></li>
            
<li><a href="samples/msgs/res02.xml">Response Message</a></li>
        </ul>
        <br /></br>
        
<table border="0" class="bodyTable">
            <tbody>
                
<tr class="a">
<td>Sample 03</td></tr>
                
<tr class="b"></tr>           
           </tbody>
        </table>
        
<div class="b" style="margin-left:2px;margin-right:-2px;">Sign and Encrypt messages, An AsymmetricBinding is used. Entire headers and body to be signed. 
EncryptionParts specifies the Body to be encrypted. </div>
        
<ul>
            
<li><a href="samples/policy/sample03.xml">Policy</a></li>
            
<li><a href="samples/msgs/req03.xml">Request Message</a></li>
            
<li><a href="samples/msgs/res03.xml">Response Message</a></li>
        </ul>
        <br /></br>
        
<table border="0" class="bodyTable">
            <tbody>
                
<tr class="a">
<td>Sample 04</td></tr>
                
<tr class="b"></tr>
           </tbody>
        </table>
        
<div class="b" style="margin-left:2px;margin-right:-2px;">SecureConversation , The secure session is bootstrapped using a SymetricBinding which uses derived keys based on an ephemeral key. 
Messages in the secure conversation includes a timestamp, all headers are signed along with the timestamp, signature encrypted and body encrypted.</div>
        
<ul>
            
<li><a href="samples/policy/sample04.xml">Policy</a></li>
            
<li><a href="samples/msgs/rst04.xml">Bootstrap request (RST)</a></li>
            
<li><a href="samples/msgs/rstr04.xml">Bootstrap response (RSTR)</a></li>
            
<li><a href="samples/msgs/req04.xml">Request Message</a></li>
            
<li><a href="samples/msgs/res04.xml">Response Message</a></li>
            
<li><a href="samples/msgs/creq04.xml">Cancel request </a></li>
            
<li><a href="samples/msgs/cres04.xml">Cancel response</a></li>
        </ul>
        <br /></br>
        
<table border="0" class="bodyTable">
            <tbody>
                
<tr class="a">
<td>Sample 05</td></tr>                
                
<tr class="b"></tr>            
           </tbody>
        </table>
        
<div class="b" style="margin-left:2px;margin-right:-2px;">WS-Trust - RST - Resquest Security Token Service - Issuing a SAML token - issuing a token </div>
        
<ul>
            
<li><a href="samples/policy/sample05.xml">Policy</a></li>
            
<li><a href="samples/msgs/req05.xml">Request Message</a></li>
            
<li><a href="samples/msgs/res05.xml">Response Message</a></li>
        </ul>
        <br /></br>
        
<table border="0" class="bodyTable">
            <tbody>
                
<tr class="a">
<td>Sample 06</td></tr>              
                
<tr class="b"></tr>
           </tbody>
        </table>
        
<div class="b" style="margin-left:2px;margin-right:-2px;">WS-Trust ( With WS Metada Exchange) - RST - Resquest Security Token Service - Issuing a SAML token  </div>
        
<ul>
            
<li><a href="samples/policy/sample01.xml">Policy</a></li>
            
<li><a href="samples/msgs/req06.xml">Request Message</a></li>
            
<li><a href="samples/msgs/res06.xml">Response Message</a></li>
        </ul>
  </div>
 
      </div>
    </div>
    <div class="clear">
      <hr/>
    </div>
    <div id="footer">
      <div class="xright">
              Copyright &#169;                    2005&#x2013;2015
                        <a href="http://www.apache.org">Apache Software Foundation</a>.
            All rights reserved.      
                    
                  </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
  </body>
</html>