You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by sm...@apache.org on 2018/09/08 10:47:06 UTC

directory-fortress-core git commit: readd files that were inadvertently removed on Sep 6

Repository: directory-fortress-core
Updated Branches:
  refs/heads/master a0a5ab8dd -> a25fd8260


readd files that were inadvertently removed on Sep 6


Project: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/commit/a25fd826
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/a25fd826
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/a25fd826

Branch: refs/heads/master
Commit: a25fd82604721d409f06a4866b5ea68e8c01350a
Parents: a0a5ab8
Author: Shawn McKinney <sm...@apache.org>
Authored: Sat Sep 8 05:47:00 2018 -0500
Committer: Shawn McKinney <sm...@apache.org>
Committed: Sat Sep 8 05:47:00 2018 -0500

----------------------------------------------------------------------
 config/bootstrap/ehcache.xml                    | 153 ++++++++++++++++
 config/bootstrap/fortress.properties.src        | 173 +++++++++++++++++++
 config/bootstrap/log4j.xml                      |  40 +++++
 config/ehcache.xml                              | 153 ++++++++++++++++
 config/fortress.properties.src                  | 114 ++++++++++++
 config/log4j.xml                                |  57 ++++++
 .../Dockerfile                                  |  50 ++++++
 .../README.md                                   |  36 ++++
 .../run-tests.sh                                |  58 +++++++
 .../Dockerfile                                  |  45 +++++
 .../README.md                                   |  36 ++++
 .../run-tests.sh                                |  53 ++++++
 12 files changed, 968 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/a25fd826/config/bootstrap/ehcache.xml
----------------------------------------------------------------------
diff --git a/config/bootstrap/ehcache.xml b/config/bootstrap/ehcache.xml
new file mode 100644
index 0000000..2ebc0af
--- /dev/null
+++ b/config/bootstrap/ehcache.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ *   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.
+ *
+-->
+
+<!--
+Fortress CacheManager Configuration
+==========================
+This ehcache.xml corresponds to a single CacheManager.
+-->
+<ehcache name="fortress" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:noNamespaceSchemaLocation="ehcache.xsd"
+         updateCheck="true" monitoring="autodetect"
+         dynamicConfig="true"
+        >
+
+    <cacheManagerEventListenerFactory class="" properties=""/>
+
+    <!--
+        Thic cache contains password policy entries.  It is used to save a read on User password policy edits. There should be one element for every tenant.
+    -->
+    <cache name="fortress.policies"
+           maxElementsInMemory="10"
+           maxElementsOnDisk="10"
+           eternal="false"
+           overflowToDisk="false"
+           diskSpoolBufferSizeMB="2"
+           timeToIdleSeconds="600"
+           timeToLiveSeconds="600"
+           memoryStoreEvictionPolicy="LFU"
+           />
+
+    <!--
+        Contains the value OrgUnits for User and Permissions. There should be two elements for every tenant.
+    -->
+    <cache name="fortress.ous"
+           maxElementsInMemory="2"
+           maxElementsOnDisk="2"
+           eternal="false"
+           overflowToDisk="false"
+           diskSpoolBufferSizeMB="2"
+           timeToIdleSeconds="600"
+           timeToLiveSeconds="600"
+           memoryStoreEvictionPolicy="LFU"
+           />
+
+    <!--
+        Contains the JGraphT hierarchies for RBAC roles.  There should be one element for every tenant.
+    -->
+    <cache name="fortress.roles"
+           maxElementsInMemory="10"
+           maxElementsOnDisk="10"
+           eternal="false"
+           overflowToDisk="false"
+           diskSpoolBufferSizeMB="2"
+           timeToIdleSeconds="600"
+           timeToLiveSeconds="600"
+           memoryStoreEvictionPolicy="LFU"
+           />
+
+    <!--
+        Contains the JGraphT hierarchies for ARBAC roles. There should be one element for every tenant.
+    -->
+    <cache name="fortress.admin.roles"
+           maxElementsInMemory="10"
+           maxElementsOnDisk="10"
+           eternal="false"
+           overflowToDisk="false"
+           diskSpoolBufferSizeMB="2"
+           timeToIdleSeconds="600"
+           timeToLiveSeconds="600"
+           memoryStoreEvictionPolicy="LFU"
+           />
+
+    <!--
+        Contains the JGraphT hierarchies for Perm OUs. There should be one element for every tenant.
+    -->
+    <cache name="fortress.pso"
+           maxElementsInMemory="10"
+           maxElementsOnDisk="10"
+           eternal="false"
+           overflowToDisk="false"
+           diskSpoolBufferSizeMB="2"
+           timeToIdleSeconds="600"
+           timeToLiveSeconds="600"
+           memoryStoreEvictionPolicy="LFU"
+           />
+
+    <!--
+        Contains the JGraphT hierarchies for User OUs.  There should be one element for every tenant.
+    -->
+    <cache name="fortress.uso"
+           maxElementsInMemory="10"
+           maxElementsOnDisk="10"
+           eternal="false"
+           overflowToDisk="false"
+           diskSpoolBufferSizeMB="2"
+           timeToIdleSeconds="600"
+           timeToLiveSeconds="600"
+           memoryStoreEvictionPolicy="LFU"
+           />
+
+    <!--
+        Searchable cache contains Role<->DSD mapping.  This configuration sets a fairly long TTL of 1 hour.
+    -->
+    <cache name="fortress.dsd"
+           maxElementsInMemory="1000"
+           maxElementsOnDisk="10"
+           eternal="false"
+           overflowToDisk="false"
+           diskSpoolBufferSizeMB="20"
+           timeToIdleSeconds="3600"
+           timeToLiveSeconds="3600"
+           memoryStoreEvictionPolicy="LFU">
+           <searchable>
+               <searchAttribute name="member" expression="value.getMember()"/>
+               <searchAttribute name="name" expression="value.getName()"/>
+               <searchAttribute name="contextId" expression="value.getContextId()"/>
+           </searchable>
+        </cache>
+
+    <!--
+        Cache contains Role<->SSD mapping.
+    -->
+    <cache name="fortress.ssd"
+           maxElementsInMemory="1000"
+           maxElementsOnDisk="10"
+           eternal="false"
+           overflowToDisk="false"
+           diskSpoolBufferSizeMB="20"
+           timeToIdleSeconds="600"
+           timeToLiveSeconds="600"
+           memoryStoreEvictionPolicy="LFU"
+           />
+
+</ehcache>

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/a25fd826/config/bootstrap/fortress.properties.src
----------------------------------------------------------------------
diff --git a/config/bootstrap/fortress.properties.src b/config/bootstrap/fortress.properties.src
new file mode 100755
index 0000000..1e28650
--- /dev/null
+++ b/config/bootstrap/fortress.properties.src
@@ -0,0 +1,173 @@
+#
+#   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.
+#
+# Note: Directives that begin with '@' are substitution parms that get automatically replaced.
+
+# Host name and port of LDAP DIT:
+host=@LDAP_HOST@
+port=@LDAP_PORT@
+
+# Used for SSL Connection to LDAP Server:
+enable.ldap.ssl=@ENABLE_LDAP_SSL@
+enable.ldap.ssl.debug=@ENABLE_LDAP_SSL_DEBUG@
+trust.store=@TRUST_STORE@
+trust.store.password=@TRUST_STORE_PW@
+trust.store.onclasspath=@TRUST_STORE_ONCLASSPATHW@
+
+# These credentials are used for read/write access to all nodes under suffix:
+admin.user=@ROOT_DN@
+# LDAP admin root pass is encrypted using 'encrypt' target in build.xml:
+admin.pw=@CFG_ROOT_PW@
+
+# This is min/max connection pool settings for User's who access their accounts in ou=People:
+# This is setting for ldap user's pool:
+min.user.conn=@USR_MIN_CONN@
+max.user.conn=@USR_MAX_CONN@
+
+# This is min/max settings for LDAP administrator pool which has read/write access to all nodes under suffix:
+min.admin.conn=@ADM_MIN_CONN@
+max.admin.conn=@ADM_MAX_CONN@
+
+# These credentials are used for read/write access to all nodes under slapd access log suffix:
+log.admin.user=@LOG_ROOT_DN@
+# For corresponding log user:
+log.admin.pw=@CFG_LOG_ROOT_PW@
+
+# This is min/max settings for LDAP administrator pool connections that have read/write access to all nodes under suffix:
+min.log.conn=@LOG_MIN_CONN@
+max.log.conn=@LOG_MAX_CONN@
+
+# Disable storing user membership on role object, default is true:
+role.occupants=@ROLE_OCCUPANTS@
+
+# enable this to see trace statements when connection pool allocates new connections:
+debug.ldap.pool=true
+# Default for pool reconnect flag is false:
+enable.pool.reconnect=true
+authn.type=default
+#authNType=realm
+ldap.server.type=@SERVER_TYPE@
+
+# Define the high-level structure of LDAP DIT:
+suffix=@SUFFIX@
+config.root=ou=Config,@SUFFIX@
+user.root=@USERS_DN@
+pwpolicy.root=@POLICIES_DN@
+role.root=@ROLES_DN@
+perm.root=@PERMS_DN@
+sdconstraint.root=@CONSTRAINTS_DN@
+userou.root=@USEROUS_DN@
+permou.root=@PERMOUS_DN@
+adminrole.root=@ADMINROLES_DN@
+adminperm.root=@ADMINPERMS_DN@
+group.root=@GROUPS_DN@
+example.root=ou=Examples,@SUFFIX@
+
+
+# these properties will enable temporal constraint checks on role activations:
+temporal.validator.0=org.apache.directory.fortress.core.util.time.Date
+temporal.validator.1=org.apache.directory.fortress.core.util.time.LockDate
+temporal.validator.2=org.apache.directory.fortress.core.util.time.Timeout
+temporal.validator.3=org.apache.directory.fortress.core.util.time.ClockTime
+temporal.validator.4=org.apache.directory.fortress.core.util.time.Day
+
+# enabling this property will enable Dynamic Separation of Duty constraint checks on role activations:
+temporal.validator.dsd=org.apache.directory.fortress.core.impl.DSDChecker
+
+# Users in the following list cannot be deleted using OAM admin functions (AdminMgr.deleteUser, AdminMgr.forceDeleteUser)
+sys.user.1=oamTU6User1
+sys.user.2=oamTU6User2
+sys.user.3=oamTU6User3
+sys.user.4=oamTU6User4
+sys.user.5=oamTU6User5
+
+# Fortress Class Definitions:  NOT NEEDED UNLESS OVERIDING DEFAULT IMPLEMENTATIONS
+accessmgr.implementation=org.apache.directory.fortress.core.impl.AccessMgrImpl
+auditmgr.implementation=org.apache.directory.fortress.core.impl.AuditMgrImpl
+
+ehcache.config.file=ehcache.xml
+
+## Fortress Data Validation settings
+field.length=130
+
+#########  This section is for filtering out LDAP meta characters from search field input:
+#########  Ensure the chars are placed in ASCII value ascending order.
+
+# This must match the total number of items that need to be filtered in our list:
+ldap.filter.size=15
+
+#! 33 0041 0x21
+ldap.filter.1=!
+ldap.sub.1=21
+#% 37 0045 0x25
+ldap.filter.2=%
+ldap.sub.2=25
+#& 38 0046 0x26
+ldap.filter.3=&
+ldap.sub.3=26
+#( 40 0050 0x28
+ldap.filter.4=(
+ldap.sub.4=28
+#) 41 0051 0x29
+ldap.filter.5=)
+ldap.sub.5=29
+#* 42 0052 0x2a
+ldap.filter.6=*
+ldap.sub.6=2a
+#+ 43 0053 0x2b
+ldap.filter.7=+
+ldap.sub.7=2b
+#- 45 0055 0x2d
+ldap.filter.8=-
+ldap.sub.8=2d
+#/ 47 0057 0x2f
+ldap.filter.9=/
+ldap.sub.9=2f
+#< 60 0074 0x3c
+ldap.filter.10=<
+ldap.sub.10=3c
+#= 61 0075 0x3d
+ldap.filter.11==
+ldap.sub.11=3d
+#> 62 0076 0x3e
+ldap.filter.12=>
+ldap.sub.12=3e
+#\ 92 0134 0x5c
+ldap.filter.13=\\
+ldap.sub.13=5c
+#| 124 0174 0x7c
+ldap.filter.14=|
+ldap.sub.14=7c
+#~ 126 0176 0x7e
+ldap.filter.15=~
+ldap.sub.15=7e
+
+#keep alphanumerics and dashes
+#regXSafetext=^A-Za-z0-9- .
+
+user.objectclass=inetOrgPerson
+group.objectclass=@GROUP_OBJECT_CLASS@
+group.protocol=@GROUP_PROTOCOL@
+group.properties=@GROUP_PROPERTIES@
+crypto.prop=@CFG_CRYPTO_PROP@
+disable.audit=@IS_AUDIT@
+clientside.sorting=true
+attr.delimiter=$
+
+# These are used to enable RFC2307bis support on User and Role entities:
+rfc2307=@IS_RFC2307@
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/a25fd826/config/bootstrap/log4j.xml
----------------------------------------------------------------------
diff --git a/config/bootstrap/log4j.xml b/config/bootstrap/log4j.xml
new file mode 100755
index 0000000..f6000d8
--- /dev/null
+++ b/config/bootstrap/log4j.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+ *   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.
+-->
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+<log4j:configuration debug="false" xmlns:log4j="http://jakarta.apache.org/log4j/">
+
+    <appender name="console" class="org.apache.log4j.ConsoleAppender">
+        <layout class="org.apache.log4j.PatternLayout">
+            <param name="ConversionPattern" value="%d (%-5p) %m%n"/>
+        </layout>
+    </appender>
+
+    <category name="org.apache.directory.fortress.core" class="org.apache.log4j.Logger" additivity="false">
+        <priority value="INFO" class="org.apache.log4j.Level"/>
+        <appender-ref ref="console"/>
+    </category>
+
+
+    <root>
+        <priority value="INFO" class="org.apache.log4j.Level"/>
+        <appender-ref ref="console"/>
+    </root>
+
+</log4j:configuration>

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/a25fd826/config/ehcache.xml
----------------------------------------------------------------------
diff --git a/config/ehcache.xml b/config/ehcache.xml
new file mode 100755
index 0000000..2ebc0af
--- /dev/null
+++ b/config/ehcache.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ *   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.
+ *
+-->
+
+<!--
+Fortress CacheManager Configuration
+==========================
+This ehcache.xml corresponds to a single CacheManager.
+-->
+<ehcache name="fortress" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:noNamespaceSchemaLocation="ehcache.xsd"
+         updateCheck="true" monitoring="autodetect"
+         dynamicConfig="true"
+        >
+
+    <cacheManagerEventListenerFactory class="" properties=""/>
+
+    <!--
+        Thic cache contains password policy entries.  It is used to save a read on User password policy edits. There should be one element for every tenant.
+    -->
+    <cache name="fortress.policies"
+           maxElementsInMemory="10"
+           maxElementsOnDisk="10"
+           eternal="false"
+           overflowToDisk="false"
+           diskSpoolBufferSizeMB="2"
+           timeToIdleSeconds="600"
+           timeToLiveSeconds="600"
+           memoryStoreEvictionPolicy="LFU"
+           />
+
+    <!--
+        Contains the value OrgUnits for User and Permissions. There should be two elements for every tenant.
+    -->
+    <cache name="fortress.ous"
+           maxElementsInMemory="2"
+           maxElementsOnDisk="2"
+           eternal="false"
+           overflowToDisk="false"
+           diskSpoolBufferSizeMB="2"
+           timeToIdleSeconds="600"
+           timeToLiveSeconds="600"
+           memoryStoreEvictionPolicy="LFU"
+           />
+
+    <!--
+        Contains the JGraphT hierarchies for RBAC roles.  There should be one element for every tenant.
+    -->
+    <cache name="fortress.roles"
+           maxElementsInMemory="10"
+           maxElementsOnDisk="10"
+           eternal="false"
+           overflowToDisk="false"
+           diskSpoolBufferSizeMB="2"
+           timeToIdleSeconds="600"
+           timeToLiveSeconds="600"
+           memoryStoreEvictionPolicy="LFU"
+           />
+
+    <!--
+        Contains the JGraphT hierarchies for ARBAC roles. There should be one element for every tenant.
+    -->
+    <cache name="fortress.admin.roles"
+           maxElementsInMemory="10"
+           maxElementsOnDisk="10"
+           eternal="false"
+           overflowToDisk="false"
+           diskSpoolBufferSizeMB="2"
+           timeToIdleSeconds="600"
+           timeToLiveSeconds="600"
+           memoryStoreEvictionPolicy="LFU"
+           />
+
+    <!--
+        Contains the JGraphT hierarchies for Perm OUs. There should be one element for every tenant.
+    -->
+    <cache name="fortress.pso"
+           maxElementsInMemory="10"
+           maxElementsOnDisk="10"
+           eternal="false"
+           overflowToDisk="false"
+           diskSpoolBufferSizeMB="2"
+           timeToIdleSeconds="600"
+           timeToLiveSeconds="600"
+           memoryStoreEvictionPolicy="LFU"
+           />
+
+    <!--
+        Contains the JGraphT hierarchies for User OUs.  There should be one element for every tenant.
+    -->
+    <cache name="fortress.uso"
+           maxElementsInMemory="10"
+           maxElementsOnDisk="10"
+           eternal="false"
+           overflowToDisk="false"
+           diskSpoolBufferSizeMB="2"
+           timeToIdleSeconds="600"
+           timeToLiveSeconds="600"
+           memoryStoreEvictionPolicy="LFU"
+           />
+
+    <!--
+        Searchable cache contains Role<->DSD mapping.  This configuration sets a fairly long TTL of 1 hour.
+    -->
+    <cache name="fortress.dsd"
+           maxElementsInMemory="1000"
+           maxElementsOnDisk="10"
+           eternal="false"
+           overflowToDisk="false"
+           diskSpoolBufferSizeMB="20"
+           timeToIdleSeconds="3600"
+           timeToLiveSeconds="3600"
+           memoryStoreEvictionPolicy="LFU">
+           <searchable>
+               <searchAttribute name="member" expression="value.getMember()"/>
+               <searchAttribute name="name" expression="value.getName()"/>
+               <searchAttribute name="contextId" expression="value.getContextId()"/>
+           </searchable>
+        </cache>
+
+    <!--
+        Cache contains Role<->SSD mapping.
+    -->
+    <cache name="fortress.ssd"
+           maxElementsInMemory="1000"
+           maxElementsOnDisk="10"
+           eternal="false"
+           overflowToDisk="false"
+           diskSpoolBufferSizeMB="20"
+           timeToIdleSeconds="600"
+           timeToLiveSeconds="600"
+           memoryStoreEvictionPolicy="LFU"
+           />
+
+</ehcache>

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/a25fd826/config/fortress.properties.src
----------------------------------------------------------------------
diff --git a/config/fortress.properties.src b/config/fortress.properties.src
new file mode 100755
index 0000000..a78e6aa
--- /dev/null
+++ b/config/fortress.properties.src
@@ -0,0 +1,114 @@
+#
+#   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.
+#
+# Fortress slapd.conf default settings.
+# Note: Directives that begin with '@' are substitution parms that get automatically replaced.
+
+# Host name and port of LDAP DIT:
+host=@LDAP_HOST@
+port=@LDAP_PORT@
+
+# Options are openldap or apacheds (default):
+ldap.server.type=@SERVER_TYPE@
+
+apacheds.pwpolicy.root=ou=passwordPolicies,ads-interceptorId=authenticationInterceptor,ou=interceptors,ads-directoryServiceId=default,ou=config
+
+# Audit only works if ldap.server.type == openldap:
+disable.audit=@IS_AUDIT@
+
+# Used for SSL Connection to LDAP Server:
+enable.ldap.ssl=@ENABLE_LDAP_SSL@
+enable.ldap.ssl.debug=@ENABLE_LDAP_SSL_DEBUG@
+trust.store=@TRUST_STORE@
+trust.store.password=@TRUST_STORE_PW@
+trust.store.onclasspath=@TRUST_STORE_ONCLASSPATHW@
+
+# Used to enable STARTTLS on Connection to LDAP Server
+enable.ldap.starttls=false
+
+# Used for SSL Demo with Tomcat:
+key.store=@KEY_STORE@
+key.store.password=@KEY_STORE_PW@
+
+# These credentials are used for read/write access to all nodes under suffix:
+admin.user=@ROOT_DN@
+# LDAP admin root pass is encrypted using 'encrypt' target in build.xml:
+admin.pw=@CFG_ROOT_PW@
+
+# This is min/max settings for LDAP administrator pool connections that have read/write access to all nodes under suffix:
+min.admin.conn=@ADM_MIN_CONN@
+max.admin.conn=@ADM_MAX_CONN@
+
+# This is min/max connection pool settings for LDAP User authentication connection pool:
+min.user.conn=@USR_MIN_CONN@
+max.user.conn=@USR_MAX_CONN@
+
+# These credentials are used for read/write access to all nodes under slapd access log suffix:
+log.admin.user=@LOG_ROOT_DN@
+# For corresponding log user:
+log.admin.pw=@CFG_LOG_ROOT_PW@
+
+# This is min/max settings for LDAP connections to read slapo access log:
+min.log.conn=@LOG_MIN_CONN@
+max.log.conn=@LOG_MAX_CONN@
+
+# This node contains fortress properties stored on behalf of connecting LDAP clients:
+config.realm=DEFAULT
+config.root=ou=Config,@SUFFIX@
+
+# enable this to see trace statements when connection pool allocates new connections:
+debug.ldap.pool=true
+
+# Default for pool reconnect flag is false:
+enable.pool.reconnect=true
+
+crypto.prop=@CFG_CRYPTO_PROP@
+
+ehcache.config.file=ehcache.xml
+
+# If for any reason echcache must be DISABLED for DSD, make sure this parameter is set to 'true' which is the default.  Otherwise performance penalty will be incurred during multi-role activations.
+disable.dsd.cache=false
+
+# This will override default LDAP manager implementations for the RESTful ones:
+enable.mgr.impl.rest=@ENABLE_REST@
+# Optional parameters needed when Fortress client is connecting with the Fortress Rest (rather than LDAP) server:
+http.user=@REST_HTTP_USER@
+http.pw=@REST_HTTP_PW@
+http.host=@REST_HTTP_HOST@
+http.port=@REST_HTTP_PORT@
+http.protocol=@REST_HTTP_PROTOCOL@
+
+GroupTest=org.apache.directory.fortress.core.group.GroupAntTest
+
+# These may be used to override default LDAP or REST with OTHER implementations:
+#reviewmgr.implementation=org.apache.directory.fortress.core.rest.ReviewMgrOtherImpl
+#adminmgr.implementation=org.apache.directory.fortress.core.rest.AdminMgrOtherImpl
+#accessmgr.implementation=org.apache.directory.fortress.core.rest.AccessMgrOtherImpl
+#delegated.adminmgr.implementation=org.apache.directory.fortress.core.rest.DelAdminMgrOtherImpl
+#delegated.reviewmgr.implementation=org.apache.directory.fortress.core.rest.DelReviewMgrOtherImpl
+#policymgr.implementation=org.apache.directory.fortress.core.rest.PwPolicyMgrOtherImpl
+#delegated.accessmgr.implementation=org.apache.directory.fortress.core.rest.DelAccessMgrOtherImpl
+#auditmgr.implementation=org.apache.directory.fortress.core.rest.AuditMgrOtherImpl
+#configmgr.implementation=org.apache.directory.fortress.core.rest.ConfigMgrOtherImpl
+
+# Default behaviour when creating a user with no password is to set userPassword set to an empty string. 
+#The Fortress API will not allow auth binding if password is empty string or null, but enabling this property will cause the userPassword field to not be created. 
+#user.creation.field.password.disable=false
+
+#attribute to use for group properties
+group.properties=ftProps
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/a25fd826/config/log4j.xml
----------------------------------------------------------------------
diff --git a/config/log4j.xml b/config/log4j.xml
new file mode 100755
index 0000000..4cc1b1b
--- /dev/null
+++ b/config/log4j.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ *   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.
+ *
+ -->
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+<log4j:configuration debug="true" xmlns:log4j="http://jakarta.apache.org/log4j/">
+
+    <appender name="console" class="org.apache.log4j.ConsoleAppender">
+        <layout class="org.apache.log4j.PatternLayout">
+            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:sss} %-5p %c{1}:%L - %m%n"/>
+        </layout>
+    </appender>
+
+    <appender name="file" class="org.apache.log4j.RollingFileAppender">
+        <param name="append" value="true"/>
+        <param name="maxFileSize" value="10MB"/>
+        <param name="maxBackupIndex" value="10"/>
+        <param name="file" value="fortress.log"/>
+        <layout class="org.apache.log4j.PatternLayout">
+            <param name="ConversionPattern"
+                   value="%d{yyyy-MM-dd HH:mm:sss} %-5p %c{1}:%L - %m%n"/>
+        </layout>
+    </appender>
+
+    <category name="org.apache.directory.fortress.core" class="org.apache.log4j.Logger" additivity="false">
+        <priority value="INFO" class="org.apache.log4j.Level"/>
+        <appender-ref ref="console"/>
+    </category>
+
+    <!--category name="org.apache.directory.api" class="org.apache.log4j.Logger" additivity="false">
+        <priority value="DEBUG" class="org.apache.log4j.Level"/>
+        <appender-ref ref="console"/>
+    </category-->
+
+    <root>
+        <priority value="INFO" class="org.apache.log4j.Level"/>
+        <appender-ref ref="console"/>
+        <!--<appender-ref ref="file"/>-->
+    </root>
+
+</log4j:configuration>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/a25fd826/src/docker/apacheds-for-apache-fortress-tests/Dockerfile
----------------------------------------------------------------------
diff --git a/src/docker/apacheds-for-apache-fortress-tests/Dockerfile b/src/docker/apacheds-for-apache-fortress-tests/Dockerfile
new file mode 100644
index 0000000..253b7b7
--- /dev/null
+++ b/src/docker/apacheds-for-apache-fortress-tests/Dockerfile
@@ -0,0 +1,50 @@
+#
+#   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.
+#
+
+FROM openjdk:8
+
+# Install LDAP tools
+ENV DEBIAN_FRONTEND=noninteractive
+RUN \
+    apt-get update && \
+    apt-get install -y -qq ldap-utils netcat && \
+    rm -rf /var/lib/apt/lists/*
+
+# Define ApacheDS version
+ENV APACHEDS_VERSION=2.0.0-M24
+ENV APACHEDS_SERVICE_NAME=apacheds-${APACHEDS_VERSION}-default
+
+# Install ApacheDS
+RUN \
+    wget http://www.apache.org/dist//directory/apacheds/dist/${APACHEDS_VERSION}/apacheds-${APACHEDS_VERSION}-amd64.deb -q -O /tmp/apacheds.deb && \
+    dpkg -i /tmp/apacheds.deb && \
+    rm /tmp/apacheds.deb
+
+# Add fortress schema
+ADD ldap/schema/apacheds-fortress.ldif /tmp/
+RUN \
+    service ${APACHEDS_SERVICE_NAME} start && \
+    timeout 30 sh -c "while ! nc -z localhost 10389; do sleep 1; done" && \
+    service ${APACHEDS_SERVICE_NAME} status && \
+    ldapmodify -v -x -h localhost -p 10389 -D uid=admin,ou=system -w secret -a -f /tmp/apacheds-fortress.ldif && \
+    service ${APACHEDS_SERVICE_NAME} stop
+
+EXPOSE 10389
+CMD ["sh", "-c", "service ${APACHEDS_SERVICE_NAME} console"]
+

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/a25fd826/src/docker/apacheds-for-apache-fortress-tests/README.md
----------------------------------------------------------------------
diff --git a/src/docker/apacheds-for-apache-fortress-tests/README.md b/src/docker/apacheds-for-apache-fortress-tests/README.md
new file mode 100644
index 0000000..d419452
--- /dev/null
+++ b/src/docker/apacheds-for-apache-fortress-tests/README.md
@@ -0,0 +1,36 @@
+
+   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.
+   
+ApacheDS for Apache Fortress tests
+==================================
+
+This directory contains
+
+* a `Dockerfile` for building a Docker image with preconfigured ApacheDS for Apache Fortress
+* a `run-tests.sh` script that start such a Docker container and executes the Fortress tests against it
+
+
+Build image (run from fortress-core root folder)
+
+    docker build -t apachedirectory/apacheds-for-apache-fortress-tests -f src/docker/apacheds-for-apache-fortress-tests/Dockerfile .
+
+
+Push image to docker hub:
+
+    docker push apachedirectory/apacheds-for-apache-fortress-tests 
+

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/a25fd826/src/docker/apacheds-for-apache-fortress-tests/run-tests.sh
----------------------------------------------------------------------
diff --git a/src/docker/apacheds-for-apache-fortress-tests/run-tests.sh b/src/docker/apacheds-for-apache-fortress-tests/run-tests.sh
new file mode 100755
index 0000000..0fae7ab
--- /dev/null
+++ b/src/docker/apacheds-for-apache-fortress-tests/run-tests.sh
@@ -0,0 +1,58 @@
+#!/bin/sh
+#
+#   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.
+#
+
+# stop execution if any command fails (i.e. exits with status code > 0)
+set -e
+
+# trace commands
+set -x
+
+# startup docker container
+docker pull apachedirectory/apacheds-for-apache-fortress-tests
+CONTAINER_ID=$(docker run -d -P apachedirectory/apacheds-for-apache-fortress-tests)
+CONTAINER_PORT=$(docker inspect --format='{{(index (index .NetworkSettings.Ports "10389/tcp") 0).HostPort}}' $CONTAINER_ID)
+echo $CONTAINER_PORT
+
+# configure build.properties
+cp build.properties.example build.properties
+sed -i 's/^ldap\.server\.type=.*/ldap.server.type=apacheds/' build.properties
+sed -i 's/^ldap\.host=.*/ldap.host=localhost/' build.properties
+sed -i 's/^ldap\.port=.*/ldap.port='${CONTAINER_PORT}'/' build.properties
+sed -i 's/^suffix\.name=.*/suffix.name=example/' build.properties
+sed -i 's/^suffix\.dc=.*/suffix.dc=com/' build.properties
+sed -i 's/^root\.dn=.*/root.dn=uid=admin,ou=system/' build.properties
+sed -i 's/^root\.pw=.*/root.pw={SSHA}pSOV2TpCxj2NMACijkcMko4fGrFopctU/' build.properties
+sed -i 's/^cfg\.root\.pw=.*/cfg.root.pw=secret/' build.properties
+
+# prepare
+mvn clean install
+mvn install -Dload.file=./ldap/setup/refreshLDAPData.xml
+mvn install -Dload.file=./ldap/setup/DelegatedAdminManagerLoad.xml
+
+# run tests
+mvn test -Dtest=FortressJUnitTest
+
+# rerun tests to verify teardown APIs work
+mvn test -Dtest=FortressJUnitTest
+
+# stop and delete docker container
+docker stop $CONTAINER_ID
+docker rm $CONTAINER_ID
+

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/a25fd826/src/docker/openldap-for-apache-fortress-tests/Dockerfile
----------------------------------------------------------------------
diff --git a/src/docker/openldap-for-apache-fortress-tests/Dockerfile b/src/docker/openldap-for-apache-fortress-tests/Dockerfile
new file mode 100644
index 0000000..f43d4de
--- /dev/null
+++ b/src/docker/openldap-for-apache-fortress-tests/Dockerfile
@@ -0,0 +1,45 @@
+#
+#   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.
+#
+
+FROM debian:8
+
+# Install openldap
+ENV DEBIAN_FRONTEND=noninteractive
+RUN apt-get update
+RUN apt-get install -y -qq slapd ldap-utils
+
+# Add fortress schema and slapd config
+ADD ldap/schema/fortress.schema /etc/ldap/schema/
+ADD ldap/schema/rbac.schema /etc/ldap/schema/
+ADD src/docker/openldap-for-apache-fortress-tests/slapd.conf /etc/ldap/
+
+# Create database directories
+RUN mkdir -p /var/lib/ldap/dflt
+RUN mkdir -p /var/lib/ldap/hist
+RUN chown -R openldap:openldap /var/lib/ldap
+
+# Delete slapd-config which was created during installation
+# and create new one by converting from old slapd.conf
+RUN rm -rf /etc/ldap/slapd.d/*
+RUN slaptest -u -f /etc/ldap/slapd.conf -F /etc/ldap/slapd.d
+
+EXPOSE 389
+
+CMD ["/usr/sbin/slapd", "-d", "32768", "-u", "root", "-g", "root"]
+

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/a25fd826/src/docker/openldap-for-apache-fortress-tests/README.md
----------------------------------------------------------------------
diff --git a/src/docker/openldap-for-apache-fortress-tests/README.md b/src/docker/openldap-for-apache-fortress-tests/README.md
new file mode 100644
index 0000000..0a71961
--- /dev/null
+++ b/src/docker/openldap-for-apache-fortress-tests/README.md
@@ -0,0 +1,36 @@
+
+   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.
+
+OpenLDAP for Apache Fortress tests
+==================================
+
+This directory contains
+
+* a `Dockerfile` for building a Docker image with preconfigured OpenLDAP for Apache Fortress
+* a `run-tests.sh` script that start such a Docker container and executes the Fortress tests against it
+
+
+Build image (run from fortress-core root folder)
+
+    docker build -t apachedirectory/openldap-for-apache-fortress-tests -f src/docker/openldap-for-apache-fortress-tests/Dockerfile .
+
+
+Push image to docker hub:
+
+    docker push apachedirectory/openldap-for-apache-fortress-tests 
+

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/a25fd826/src/docker/openldap-for-apache-fortress-tests/run-tests.sh
----------------------------------------------------------------------
diff --git a/src/docker/openldap-for-apache-fortress-tests/run-tests.sh b/src/docker/openldap-for-apache-fortress-tests/run-tests.sh
new file mode 100755
index 0000000..7bf86c1
--- /dev/null
+++ b/src/docker/openldap-for-apache-fortress-tests/run-tests.sh
@@ -0,0 +1,53 @@
+#!/bin/sh
+#
+#   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.
+#
+
+# stop execution if any command fails (i.e. exits with status code > 0)
+set -e
+
+# trace commands
+set -x
+
+# startup docker container
+docker pull apachedirectory/openldap-for-apache-fortress-tests
+CONTAINER_ID=$(docker run -d -P apachedirectory/openldap-for-apache-fortress-tests)
+CONTAINER_PORT=$(docker inspect --format='{{(index (index .NetworkSettings.Ports "389/tcp") 0).HostPort}}' $CONTAINER_ID)
+echo $CONTAINER_PORT
+
+# configure build.properties
+cp build.properties.example build.properties
+cp slapd.properties.example slapd.properties
+sed -i 's/^ldap\.host=.*/ldap.host=localhost/' slapd.properties
+sed -i 's/^ldap\.port=.*/ldap.port='${CONTAINER_PORT}'/' slapd.properties
+
+# prepare
+mvn clean install
+mvn install -Dload.file=./ldap/setup/refreshLDAPData.xml
+mvn install -Dload.file=./ldap/setup/DelegatedAdminManagerLoad.xml
+
+# run tests
+mvn test -Dtest=FortressJUnitTest
+
+# rerun tests to verify teardown APIs work
+mvn test -Dtest=FortressJUnitTest
+
+# stop and delete docker container
+docker stop $CONTAINER_ID
+docker rm $CONTAINER_ID
+