<!--
  Copyright (C) 2009-2013, JoshuaTree. All Rights Reserved.
  Licensed to Joshua Tree Software, LLC under New BSD license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  JTS licenses this file to You under the New BSD License
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

       https://joshuatreesoftware.us/

   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>Overview of the Fortress Java Sentry Component</title>
   </head>
   <body>
       Authentication, Authorization and Audit facility for Java EE application servers.

       <h3>How can I start using the Fortress Java Sentry to secure my runtime application server environment?</h3>

       The following links provide installation instructions that describe how to setup these application sever plug-ins.
       <ol>
       <li><a href="us/jts/sentry/tomcat/package-summary.html">Tomcat Java Sentry</a></li>
       <li><a href="us/jts/sentry/websphere/package-summary.html">Websphere Java Sentry</a></li>
       </ol>

       <h3>How does the Fortress Java Sentry work?</h3>

        The Fortress Java Sentry implements the following SPIs:
        <ol>
        <li><a href="http://tomcat.apache.org/tomcat-5.5-doc/catalina/docs/api/org/apache/catalina/realm/RealmBase.html">Tomcat 4,5,6</a></li>
        <li><a href="http://tomcat.apache.org/tomcat-7.0-doc/api/org/apache/catalina/realm/RealmBase.html">Tomcat 7</a></li>
        <li><a href="http://publib.boulder.ibm.com/infocenter/wasinfo/fep/index.jsp?topic=/com.ibm.websphere.javadoc.doc/web/spidocs/com/ibm/websphere/security/UserRegistry.html">Websphere UserRegistry</a></li>
        </ol>
   </body>
</html>



