<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia at 30 Jul 2017 
 | Rendered using Apache Maven Fluido Skin 1.4
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="Date-Revision-yyyymmdd" content="20170730" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Apache Rampart &#x2013; Apache Rampart Samples</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.4.min.css" />
    <link rel="stylesheet" href="./css/site.css" />
    <link rel="stylesheet" href="./css/print.css" media="print" />

      
    <script type="text/javascript" src="./js/apache-maven-fluido-1.4.min.js"></script>

    
                  </head>
        <body class="topBarDisabled">
          
        
    
        <div class="container-fluid">
          <div id="banner">
        <div class="pull-left">
                                <div id="bannerLeft">
                                                                                                <img src="images/apache-rampart-logo.jpg" />
                </div>
                      </div>
        <div class="pull-right">                  <a href="http://www.apache.org" id="bannerRight">
                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png" />
                </a>
      </div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
                
                    
                  <li id="publishDate">Last Published: 30 Jul 2017
                      <span class="divider">|</span>
                   </li>
                  <li id="projectVersion">Version: 1.7.1
                      </li>
                      
                
                    
      
                                    
    <li class="pull-right">
                      <a href="../core/" title="Apache Axis2/Java">
        Apache Axis2/Java</a>
      </li>

                    </ul>
      </div>

            
      <div class="row-fluid">
        <div id="leftColumn" class="span2">
          <div class="well sidebar-nav">
                
                    
                <ul class="nav nav-list">
                    <li class="nav-header">Apache Rampart</li>
                              
      <li>
  
                          <a href="index.html" title="Home">
          <span class="none"></span>
        Home</a>
            </li>
                                                                              
      <li>
  
                          <a href="javascript:void(0)" title="Downloads">
          <span class="icon-chevron-down"></span>
        Downloads</a>
                    <ul class="nav nav-list">
                    
      <li>
  
                          <a href="download.html" title="Releases">
          <span class="none"></span>
        Releases</a>
            </li>
                    
      <li>
  
                          <a href="svn.html" title="Source Code">
          <span class="none"></span>
        Source Code</a>
            </li>
              </ul>
        </li>
                                                                                                                                                      
      <li>
  
                          <a href="javascript:void(0)" title="Release Notes">
          <span class="icon-chevron-down"></span>
        Release Notes</a>
                    <ul class="nav nav-list">
                    
      <li>
  
                          <a href="release-notes/1.6.1.html" title="1.6.1">
          <span class="none"></span>
        1.6.1</a>
            </li>
                    
      <li>
  
                          <a href="release-notes/1.6.2.html" title="1.6.2">
          <span class="none"></span>
        1.6.2</a>
            </li>
                    
      <li>
  
                          <a href="release-notes/1.6.3.html" title="1.6.3">
          <span class="none"></span>
        1.6.3</a>
            </li>
                    
      <li>
  
                          <a href="release-notes/1.6.4.html" title="1.6.4">
          <span class="none"></span>
        1.6.4</a>
            </li>
                    
      <li>
  
                          <a href="release-notes/1.7.0.html" title="1.7.0">
          <span class="none"></span>
        1.7.0</a>
            </li>
                    
      <li>
  
                          <a href="release-notes/1.7.1.html" title="1.7.1">
          <span class="none"></span>
        1.7.1</a>
            </li>
              </ul>
        </li>
                              <li class="nav-header">Documentation</li>
                              
      <li>
  
                          <a href="quick-start.html" title="Getting Started">
          <span class="none"></span>
        Getting Started</a>
            </li>
                
      <li class="active">
  
            <a href="#"><span class="none"></span>Samples</a>
          </li>
                
      <li>
  
                          <a href="http://wiki.apache.org/ws/FrontPage/Rampart/FAQ" class="externalLink" title="FAQ">
          <span class="none"></span>
        FAQ</a>
            </li>
                
      <li>
  
                          <a href="rampartconfig-guide.html" title="Rampart Configuration">
          <span class="none"></span>
        Rampart Configuration</a>
            </li>
                
      <li>
  
                          <a href="setting-up-sts.html" title="STS Configuration">
          <span class="none"></span>
        STS Configuration</a>
            </li>
                
      <li>
  
                          <a href="developer-guide.html" title="Developer Guide">
          <span class="none"></span>
        Developer Guide</a>
            </li>
                
      <li>
  
                          <a href="siteHowTo.html" title="Build the Site">
          <span class="none"></span>
        Build the Site</a>
            </li>
                              <li class="nav-header">Resources</li>
                              
      <li>
  
                          <a href="articles.html" title="Articles">
          <span class="none"></span>
        Articles</a>
            </li>
                
      <li>
  
                          <a href="specifications.html" title="Specifications">
          <span class="none"></span>
        Specifications</a>
            </li>
                
      <li>
  
                          <a href="apidocs/index.html" title="Online Javadocs">
          <span class="none"></span>
        Online Javadocs</a>
            </li>
                              <li class="nav-header">Project Information</li>
                              
      <li>
  
                          <a href="team-list.html" title="Project Team">
          <span class="none"></span>
        Project Team</a>
            </li>
                
      <li>
  
                          <a href="http://issues.apache.org/jira/browse/Rampart" class="externalLink" title="Issue Tracking">
          <span class="none"></span>
        Issue Tracking</a>
            </li>
                
      <li>
  
                          <a href="mail-lists.html" title="Mailing Lists">
          <span class="none"></span>
        Mailing Lists</a>
            </li>
                
      <li>
  
                          <a href="http://svn.apache.org/viewvc/axis/axis2/java/rampart/" class="externalLink" title="Source Code">
          <span class="none"></span>
        Source Code</a>
            </li>
                
      <li>
  
                          <a href="http://www.apache.org/licenses/" class="externalLink" title="License">
          <span class="none"></span>
        License</a>
            </li>
                
      <li>
  
                          <a href="http://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsorship">
          <span class="none"></span>
        Sponsorship</a>
            </li>
                
      <li>
  
                          <a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks">
          <span class="none"></span>
        Thanks</a>
            </li>
                
      <li>
  
                          <a href="http://www.apache.org/security/" class="externalLink" title="Security">
          <span class="none"></span>
        Security</a>
            </li>
            </ul>
                
                    
                
          <hr />

           <div id="poweredBy">
                            <div class="clear"></div>
                            <div class="clear"></div>
                            <div class="clear"></div>
                            <div class="clear"></div>
                             <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
      </a>
                  </div>
          </div>
        </div>
        
                
        <div id="bodyColumn"  class="span10" >
                                  
            <!-- ~  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>Before beginning, please install Rampart as described <a href="quick-start.html">here</a>.</p>
        
<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="table table-striped">
            <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="table table-striped">
            <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="table table-striped">
            <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="table table-striped">
            <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="table table-striped">
            <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="table table-striped">
            <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>

    <hr/>

    <footer>
            <div class="container-fluid">
                      <div class="row-fluid">
                                      <p >Copyright &copy;                    2005&#x2013;2017
                        <a href="http://www.apache.org">Apache Software Foundation</a>.
            All rights reserved.      
                    
      </p>
                </div>

        
                </div>
    </footer>
        </body>
</html>