<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--
  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.
-->
<html>
<head>
    <title>Package Documentation for Apache Fortress REALM</title>
</head>
<body>
<p>
    This package is the Fortress Realm component. The Fortress Realm provides APIs that are used by
    Java EE applications to perform authentication, authorization and audit within runtime
    application server environments. The APIs are called by the application server during runtime policy enforcement
    but may also be invoked directly by any Java client program for security access control.
</p>
</body>
</html>
