<?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.5.2 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.5.2 is a maintenance release that updates WSS4J to version 1.5.12
and that provides compatibility with the latest Axis2 1.5.x releases.</p>

<p>There are two main Apache Axis2 modules provided with this release.</p> 
<ul>
<li>rampart-1.5.x.mar</li>
This provides support for WS-Security and WS-SecureConversation features.
<li>rahas-1.5.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>
