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.
README for Apache Fortress Rest
Version 3.0.1
Apache Fortress Rest System Architecture Diagram
Table of Contents
Document Overview
About Apache Fortress Rest
Tips for first-time users.
SECTION 1. Prerequisites.
SECTION 2. Download & Install.
SECTION 3. Prepare Tomcat for Java EE Security
SECTION 4. Prepare directory-fortress-rest package to use LDAP server
SECTION 5. Build and deploy directory-fortress-rest
SECTION 6. Unit Test.
SECTION 7. Fortress rest properties
Document Overview
This document contains instructions to download, build, and test operations using Apache Fortress Rest component.
About Apache Fortress Rest
An http service interface to drive Apache Fortress APIs.
Uses Apache CXF as the rest framework.
Layered security using …
declarative controls:
HTTP Basic Authentication and coarse-grained role check (Tomcat Realm)
Service security using Apache CXF’s SimpleAuthorizingInterceptor
programmatic controls:
fine-grained authorization
Tips for first-time users
For a tutorial on how to use Apache Fortress with LDAP, check out the Fortress Core quickstart guides.
For a description of the various security mechanisms that are performed during Apache Fortress REST runtime operations: README-SECURITY-MODEL
# This param tells fortress what type of ldap server in use:
ldap.server.type=apacheds
# Use value from [Set Hostname Entry]:
host=localhost
# ApacheDS defaults to this:
port=10389
# These credentials are used for read/write access to all nodes under suffix:
admin.user=uid=admin,ou=system
admin.pw=secret
– Or –
b. Prepare fortress for OpenLDAP usage:
# This param tells fortress what type of ldap server in use:
ldap.server.type=openldap
# Use value from [Set Hostname Entry]:
host=localhost
# OpenLDAP defaults to this:
port=389
# These credentials are used for read/write access to all nodes under suffix:
admin.user=cn=Manager,dc=example,dc=com
admin.pw=secret
SECTION 5. Build and deploy directory-fortress-rest
1. Verify the java and maven home env variables are set.
mvn -version
This sample requires Java >= 17 and Maven >= 3 to be setup within the execution env.
2. Load the default security policy for Fortress REST.
The Fortress Rest application must be deployed and running within your servlet container before the unit tests will complete successfully. If your app server
is running on a separate machine, or using port other than 8080, adjust the settings accordingly in src/main/test/java/org/apache/directory/fortress/rest/EmTest.java
For learning and troubleshooting, it is recommended that you use an HTTP proxy program, like Axis’ tpMon to intercept the HTTP/XML request/responses between Fortress rest client and server.
The tests depend on sample security policy being loaded.
This section describes the properties needed to control fortress rest.
1. LDAP Hostname coordinates.
The host name can be specified as a fully qualified domain name or IP address:
# Host name and port of LDAP DIT:
host=localhost
port=10389
2. LDAP Server type. Each LDAP server impl
# If ApacheDS server:
ldap.server.type=apacheds
# Else if OpenLDAP server:
ldap.server.type=openldap
# Else leave blank:
#ldap.server.type=other
note: has different behavior on operations like password policies and audit. If using a 3rd type of server that isn’t formally supported, leave blank or type is other.
3. Set the credentials of service account.
This service account must have read/write privileges over the entire Fortress LDAP Directory Information Tree (DIT):
# If ApacheDS it will look something like this:
admin.user=uid=admin,ou=system
admin.pw=secret
# Else If OpenLDAP it will look something like this:
admin.user=cn=Manager,dc=example,dc=com
4. Define the number of LDAP connections to use in the pool
# This is min/max settings for LDAP connections. For testing and low-volume instances this will work:
min.admin.conn=1
max.admin.conn=10
Notes on connection pools:
This setting will be proportional to the number of concurrent users but won’t be one-to-one.
The number of required ldap connections will be much lower than concurrent users.
5. Give coordinates to the Config node that contains all of the other Fortress properties.
This will match your LDAP’s server’s config node per Fortress Core setup:
# This node contains fortress properties stored on behalf of connecting LDAP clients:
config.realm=DEFAULT
config.root=ou=Config,dc=example,dc=com
6. If using LDAPS.
# Used for SSL Connection to LDAP Server:
enable.ldap.ssl=true
enable.ldap.ssl.debug=true
trust.store=/fully/qualified/path/and/file/name/to/java/truststore
trust.store.password=changeit
7. If using ApacheDS and setting password policies, point to the correction location.
# ApacheDS stores its password policies objects here by default:
apacheds.pwpolicy.root=ou=passwordPolicies,ads-interceptorId=authenticationInterceptor,ou=interceptors,ads-directoryServiceId=default,ou=config
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
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.
README for Apache Fortress Rest
Table of Contents
Document Overview
This document contains instructions to download, build, and test operations using Apache Fortress Rest component.
About Apache Fortress Rest
An http service interface to drive Apache Fortress APIs.
Uses Apache CXF as the rest framework.
Layered security using …
Tips for first-time users
SECTION 1. Prerequisites
Minimum software requirements:
Everything else covered in steps that follow. Tested on Debian and Redhat systems.
SECTION 2. Download & Install
1. Download the source.
a. from git:
b. or apache fortress downloads
2. Build the source.
3. Now build the javadoc:
4. View the generated document here: ./target/site/apidocs/overview-summary.html.
SECTION 3. Prepare Tomcat for Java EE Security
This web app uses Java EE security.
1. Download the fortress realm proxy jar into tomcat/lib folder:
$TOMCAT_HOMEpoints to the execution env.[version]points to the particular release, e.g. 3.0.1.Note: The realm proxy enables Tomcat container-managed security functions to call back to fortress.
2. Optional - Prepare tomcat to allow autodeploy of rbac-abac-sample web app:
3. Optional - Add tomcat user to deploy rbac-abac-sample:
4. Restart tomcat for new settings to take effect.
SECTION 4. Prepare directory-fortress-rest package to use LDAP server
1. Copy the fortress.properties example:
2. Edit the file:
Pick either Apache Directory or OpenLDAP server:
a. Prepare fortress for ApacheDS usage:
– Or –
b. Prepare fortress for OpenLDAP usage:
SECTION 5. Build and deploy directory-fortress-rest
1. Verify the java and maven home env variables are set.
This sample requires Java >= 17 and Maven >= 3 to be setup within the execution env.
2. Load the default security policy for Fortress REST.
3. Optional, load a sample security policy for ARBAC.
mvncommands.4. Deploy to Tomcat:
a. If using autodeploy feature, verify the Tomcat auto-deploy options are set correctly in the pom.xml file:
b. Now, automatically deploy to tomcat server:
c. To automatically redeploy sample app:
d. To manually deploy app to Tomcat:
$TOMCAT_HOMEpoints to the execution env.SECTION 6. Unit Test
Run unit test:
Test Notes:
SECTION 7. Fortress Rest properties
This section describes the properties needed to control fortress rest.
1. LDAP Hostname coordinates.
The host name can be specified as a fully qualified domain name or IP address:
2. LDAP Server type. Each LDAP server impl
3. Set the credentials of service account.
This service account must have read/write privileges over the entire Fortress LDAP Directory Information Tree (DIT):
4. Define the number of LDAP connections to use in the pool
Notes on connection pools:
5. Give coordinates to the Config node that contains all of the other Fortress properties.
This will match your LDAP’s server’s config node per Fortress Core setup:
6. If using LDAPS.
7. If using ApacheDS and setting password policies, point to the correction location.
END OF README