blob: 2fc85a5f70d2f0e212184772a3987270457bd183 [file] [log] [blame]
<!--
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>Overview of the org.apache.directory.fortress.rest component</title>
</head>
<body>
Fortress Rest is a web application that implements <A
HREF="http://en.wikipedia.org/wiki/Representational_state_transfer">RESTful</A> Web services to interface with
<A HREF="http://symas.com/javadocs/fortress/index.html?overview-summary.html">Fortress Core</A> and a directory server
like <A HREF="http://www.openldap.org/">OpenLDAP</A>
or <A HREF="http://directory.apache.org/apacheds//">ApacheDS</A>.
<h2>What technologies are in use?</h2>
Fortress Rest was built using established <A HREF="http://www.opensource.org/">Open Source</A> technologies including
<A HREF="http://cxf.apache.org/">Apache CXF</A> (web services stack), <A HREF="http://www.springsource.org/">Spring
Framework</A> (glue), <A HREF="http://maven.apache.org/">Maven</A> (dependencies)
and <A HREF="http://java.sun.com/xml/downloads/jaxb.html">JAXB</A> (data binding layer) and runs inside any reasonably
compliant Java Servlets container.
<a href="org/apache/directory/fortress/rest/FortressService.html">Fortress Rest service</a> access control decisions are
enforced using <A HREF="https://symas.com/javadocs/sentry/">Fortress Realm</A> which itself
uses declarative <A HREF="http://docs.oracle.com/javaee/5/tutorial/doc/bnbwk.html">Java EE Security</A> and <A
HREF="http://static.springsource.org/spring-security/site/">Spring Security</A> policy hooks that are wired to
connect back to the <A HREF="org.apache.directory.fortress.core.model/package-summary.html">Fortress</A> <A
HREF="http://en.wikipedia.org/wiki/Role-based_access_control">RBAC</A> component.
Fortress Rest is a <a href="http://java.sun.com/developer/technicalArticles/tools/webapps_1/">Java Web program</a>
artifact and is wholly dependent on <A HREF="org.apache.directory.fortress.core/package-summary.html">Fortress</A>
but also needs a <A HREF="http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol">V3 compliant LDAP</A>
server like OpenLDAP or ApacheDS.
For more information on installing and setting up a directory server check out the Fortress README's in the
directory-fortress-core source package.
<h2>What can Fortress Rest do?</h2>
Contained within this application are Web APIs to perform authentication, authorization, administration, audit and
password policies.
The most important package in this system, <A HREF="org/apache/directory/fortress/rest/package-summary.html">org.apache.directory.fortress.rest</A>,
contains the public Web APIs that are called by external systems.
There is a one-to-one correspondence between a Fortress Core API and a Fortress Rest service. The Fortress Core
APIs are organized into 'Managers' each implementing a specific area of functionality within the
Identity and Access Management lifecycle.
For a list of Fortress Rest services, see <a href="org/apache/directory/fortress/rest/FortressService.html">FortressService</a>.
<h3>Fortress Manager Overview</h3>
<ol>
<li><a href="http://symas.com/javadocs/fortress/org/openldap/fortress/AccessMgr.html">AccessMgr</a> - This object
performs runtime access control operations on objects that are provisioned <a
href="http://csrc.nist.gov/groups/SNS/rbac/documents/draft-rbac-implementation-std-v01.pdf">RBAC</a>
entities that reside in LDAP directory.
</li>
<li><a href="http://symas.com/javadocs/fortress/org/openldap/fortress/AdminMgr.html">AdminMgr</a> - This object
performs administrative functions to provision Fortress <a
href="http://csrc.nist.gov/groups/SNS/rbac/documents/draft-rbac-implementation-std-v01.pdf">RBAC</a>
entities into the LDAP directory.
</li>
<li><a href="http://symas.com/javadocs/fortress/org/openldap/fortress/AuditMgr.html">AuditMgr</a> - This interface
prescribes methods used to search OpenLDAP's slapd access log.
</li>
<li><a href="http://symas.com/javadocs/fortress/org/openldap/fortress/DelAccessMgr.html">DelegatedAccessMgr</a> -
This interface prescribes the API for performing runtime delegated access control operations on objects that are
provisioned Fortress <a href="http://profsandhu.com/journals/tissec/p113-oh.pdf">ARBAC02</a> entities that
reside in LDAP directory.
</li>
<li><a href="http://symas.com/javadocs/fortress/org/openldap/fortress/DelAdminMgr.html">DelegatedAdminMgr</a> - This
class prescribes the <a href="http://profsandhu.com/journals/tissec/p113-oh.pdf">ARBAC02</a> DelegatedAdminMgr
interface for performing policy administration of Fortress ARBAC entities that reside in LDAP directory.
</li>
<li><a href="http://symas.com/javadocs/fortress/org/openldap/fortress/DelReviewMgr.html">DelegatedReviewMgr</a> -
This class prescribes the <a href="http://profsandhu.com/journals/tissec/p113-oh.pdf">ARBAC02</a>
DelegatedReviewMgr interface for performing policy interrogation of provisioned Fortress ARBAC02 entities that
reside in LDAP directory.
</li>
<li><a href="http://symas.com/javadocs/fortress/org/openldap/fortress/PwPolicyMgr.html">PswdPolicyMgr</a> - This
object adheres to <a href="http://tools.ietf.org/html/draft-behera-ldap-password-policy-10">IETF PW policy
draft</a> and is used to perform administrative and review functions on the <a
href="http://symas.com/javadocs/fortress/org/openldap/fortress/rbac/PwPolicy.html">PWPOLICIES</a> and <a
href="http://symas.com/javadocs/fortress/org/openldap/fortress/rbac/User.html">USERS</a> data sets
within Fortress.
</li>
<li><a href="http://symas.com/javadocs/fortress/org/openldap/fortress/ReviewMgr.html">ReviewMgr</a> - This interface
prescribes the administrative review functions on already provisioned Fortress <a
href="http://csrc.nist.gov/groups/SNS/rbac/documents/draft-rbac-implementation-std-v01.pdf">RBAC</a>
entities that reside in LDAP directory.
</li>
</ol>
<h2>How can I connect with Fortress Rest?</h2>
Clients have a choice in how to connect with the Fortress Rest services. Integration can occur using a
preferred Web service toolkit like <a href="http://axis.apache.org/axis/">AXIS 1</a>, <a
href="http://axis.apache.org/axis2/java/core/">AXIS 2</a>,
<a href="http://metro.java.net/">Metro</a>, <a href="http://cxf.apache.org/">CXF</a>, <a
href="http://static.springsource.org/spring-ws/sites/1.5/">Spring Web Services</a>,
<a href="http://wso2.com/products/web-services-framework/php">WSO2</a>, <a href="http://jquery.com/">JQuery</a>, etc, or
by using the Fortress Core APIs
themselves which have built in support for calling Fortress Rest.
The Fortress Core APIs plugs into its backend data repository (LDAP) using a simple facade pattern that
shields its clients from downstream details. The behavior of the Fortress APIs does not change based
on the route it takes.
<h3>Options for Fortress Rest service Integration</h3>
<ol>
<li>Client uses Fortress Core to connect to LDAP via Fortress Rest:<br>
Client-->Fortress Core-->HTTP/S-->Fortress Rest
</li>
<li>Client uses other Web frameworks to connect to Fortress Rest:<br>
Client[Axis, Metro, CXF, SpringWS,...]-->HTTP/S-->Fortress Rest
</li>
</ol>
</p>
<h2>What are the conditions of use?</h2>
<p>
This software development kit is open source, thus free to use and distribute via the <a
href="http://www.apache.org/licenses/">Apache License, Version 2.0</a>.
It was developed and tested on open systems like <a href="http://www.ubuntu.com/">Ubuntu</a> and <a
href="http://www.centos.org/">Centos</a> and was helped along
by the following open source products:
<ol>
<li><a href="http://www.openldap.org/project/">The OpenLDAP Project</a></li>
<li><a href="http://www.apache.org/">The Apache Software Foundation</a></li>
<li><a href="http://www.eigenbase.org/">The Eigenbase Project</a></li>
<li><a href="http://ehcache.org/">Ehcache</a></li>
</ol>
</p>
</body>
</html>