<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
       "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  <title>Apache Rampart - Release Notes</title>
  <meta name="generator" content="amaya 9.2.2, see http://www.w3.org/Amaya/"
  />
</head>

<body>
<h1>Apache Rampart Release Notes</h1>

<p>This is the 1.6.1 release of Apache Rampart.</p>

<p>Apache Rampart is a toolkit that provides implementations of the WS-Sec*
specifications for Apache Axis2, based on Apache WSS4J and 
the Apache Axiom DOOM implementation.</p>

<p>Apache Rampart 1.6.1 is a maintenance release that updates WSS4J to version 1.5.12
and that provides compatibility with Axis2 1.6.1. Please note that Rampart 1.6.1 will not
work with Axis2 1.6.0 and that users of Axis2 1.6.1 are required to update to Rampart 1.6.1,
i.e. Rampart 1.6.0 doesn't work with Axis2 1.6.1.</p>

<p>There are two main Apache Axis2 modules provided with this release.</p> 
<ul>
<li>rampart-1.6.x.mar</li>
This provides support for WS-Security and WS-SecureConversation features.
<li>rahas-1.6.x.mar</li>
This module provides the necessary components to enable SecurityTokenService 
functionality on a service.
</ul>

<p>Apache Rampart uses a configuration model based on WS-Policy 
and WS-Security Policy and it is important to note that Apache Rampart 1.0 style 
configuration is also available even though being marked as deprecated.
</p>

<p>Apache Rampart can be successfully used with Apache Sandesha2 to configure
WS-SecureConversation + WS-ReliableMessaging scenarios.</p>
<p>
The rampart module was successfully tested for interoperability with other
WS-Security implementations.</p>

<p>WS - Sec* specifications supported by Apache Rampart are as follows:</p>

<ul>
<li>WS - Security 1.0</li>
<li>WS - Secure Conversation - February 2005</li>
<li>WS - Security Policy - 1.1 - July 2005</li>
<li>WS - Trust - February 2005</li>
<li>WS - Trust - WS-SX specification</li>
<li>SAML Specification - 1.1 </li>
<li>SAML Specification - 2.0 </li>
</ul>




<p>Thank you for using Apache Rampart.</p>

<p></p>

<p>Apache Rampart Team</p>

<p></p>
</body>
</html>
