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 2017/06/10 18:27:16 UTC

directory-fortress-core git commit: FC-211 - Support apacheds password policies - cleanup

Repository: directory-fortress-core
Updated Branches:
  refs/heads/master cec922a81 -> 7ba68de85


FC-211 - Support apacheds password policies - cleanup


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/7ba68de8
Tree: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/tree/7ba68de8
Diff: http://git-wip-us.apache.org/repos/asf/directory-fortress-core/diff/7ba68de8

Branch: refs/heads/master
Commit: 7ba68de85ef6b0c40e3260b40bb8dbcc6e3a96ea
Parents: cec922a
Author: Shawn McKinney <sm...@apache.org>
Authored: Sat Jun 10 13:27:17 2017 -0500
Committer: Shawn McKinney <sm...@apache.org>
Committed: Sat Jun 10 13:27:17 2017 -0500

----------------------------------------------------------------------
 .../directory/fortress/core/GlobalIds.java      |  13 +-
 .../directory/fortress/core/impl/PolicyDAO.java | 512 +++++--------------
 .../core/impl/PswdPolicyMgrImplTest.java        |   2 -
 3 files changed, 125 insertions(+), 402 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/7ba68de8/src/main/java/org/apache/directory/fortress/core/GlobalIds.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/GlobalIds.java b/src/main/java/org/apache/directory/fortress/core/GlobalIds.java
index f48834c..eea0ab6 100755
--- a/src/main/java/org/apache/directory/fortress/core/GlobalIds.java
+++ b/src/main/java/org/apache/directory/fortress/core/GlobalIds.java
@@ -207,19 +207,8 @@ public final class GlobalIds
     public static final String ADS_PPOLICY_ROOT = "apacheds.pwpolicy.root";
 
     /*
-      *  *************************************************************************
-      *  **  BEGIN LDAP STANDARD ATTRIBUTE NAMES
-      *  ************************************************************************
-      */
-
-    /**
-     * Password policy object class structure uses cn attribute name.
-     */
-    public static final String POLICY_NODE_TYPE = SchemaConstants.CN_AT;
-
-    /*
     *  *************************************************************************
-    *  **  OPENLDAP ATTRIBUTES AND CONSTANTS
+    *  **  LDAP ATTRIBUTE NAMES AND CONSTANT VALUES
     *  ************************************************************************
     */
 

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/7ba68de8/src/main/java/org/apache/directory/fortress/core/impl/PolicyDAO.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/impl/PolicyDAO.java b/src/main/java/org/apache/directory/fortress/core/impl/PolicyDAO.java
index 180b772..fa5dcd9 100755
--- a/src/main/java/org/apache/directory/fortress/core/impl/PolicyDAO.java
+++ b/src/main/java/org/apache/directory/fortress/core/impl/PolicyDAO.java
@@ -105,88 +105,55 @@ final class PolicyDAO extends LdapDataProvider
       *  ************************************************************************
       */
     private static final String OLPW_POLICY_EXTENSION = "2.5.4.35";
-    private static final String OLPW_POLICY_CLASS = "pwdPolicy";
-    private static final String ADS_POLICY_CLASS = "ads-passwordPolicy";
+    private static final String PW_POLICY_EXTENSION = ( Config.getInstance().isOpenldap() ) ? OLPW_POLICY_EXTENSION : "userPassword";
     private static final String ADS_BASE_CLASS = "ads-base";
+    private static final String PW_POLICY_CLASS = ( Config.getInstance().isOpenldap() ) ? "pwdPolicy" : "ads-passwordPolicy";
 
     /**
-     * This object class combines OpenLDAP PW Policy schema with the Fortress audit context.
+     * This object class combines PW Policy schema with the Fortress audit context.
      */
-    private static final String OL_PWPOLICY_OBJ_CLASS[] =
+    private static String PWPOLICY_OBJ_CLASS[] = (Config.getInstance().isOpenldap())
+        ? new String[]
         {
             SchemaConstants.TOP_OC,
             SchemaConstants.DEVICE_OC,
-            OLPW_POLICY_CLASS,
+            PW_POLICY_CLASS,
             GlobalIds.FT_MODIFIER_AUX_OBJECT_CLASS_NAME
-    };
-
-    private static final String ADS_PWPOLICY_OBJ_CLASS[] =
+        }
+        : new String[]
         {
             SchemaConstants.TOP_OC,
             ADS_BASE_CLASS,
-            ADS_POLICY_CLASS,
+            PW_POLICY_CLASS,
             GlobalIds.FT_MODIFIER_AUX_OBJECT_CLASS_NAME
-    };
-
-    private static final String OLPW_MIN_AGE = "pwdMinAge";
-    private static final String OLPW_MAX_AGE = "pwdMaxAge";
-    private static final String OLPW_IN_HISTORY = "pwdInHistory";
-    private static final String OLPW_CHECK_QUALITY = "pwdCheckQuality";
-    private static final String OLPW_MIN_LENGTH = "pwdMinLength";
-    private static final String OLPW_EXPIRE_WARNING = "pwdExpireWarning";
-    private static final String OLPW_GRACE_LOGIN_LIMIT = "pwdGraceAuthNLimit";
-    private static final String OLPW_LOCKOUT = "pwdLockout";
-    private static final String OLPW_LOCKOUT_DURATION = "pwdLockoutDuration";
-    private static final String OLPW_MAX_FAILURE = "pwdMaxFailure";
-    private static final String OLPW_FAILURE_COUNT_INTERVAL = "pwdFailureCountInterval";
-    private static final String OLPW_MUST_CHANGE = "pwdMustChange";
-    private static final String OLPW_ALLOW_USER_CHANGE = "pwdAllowUserChange";
-    private static final String OLPW_SAFE_MODIFY = "pwdSafeModify";
-    private static final String OLPW_ATTRIBUTE = "pwdAttribute";
-
-    private static final String ADS_PREFIX = "ads-";
-    private static final String ADS_MIN_AGE = ADS_PREFIX + "pwdMinAge";
-    private static final String ADS_MAX_AGE = ADS_PREFIX + "pwdMaxAge";
-    private static final String ADS_IN_HISTORY = ADS_PREFIX + "pwdInHistory";
-    private static final String ADS_CHECK_QUALITY = ADS_PREFIX + "pwdCheckQuality";
-    private static final String ADS_MIN_LENGTH = ADS_PREFIX + "pwdMinLength";
-    private static final String ADS_EXPIRE_WARNING = ADS_PREFIX + "pwdExpireWarning";
-    private static final String ADS_GRACE_LOGIN_LIMIT = ADS_PREFIX + "pwdGraceAuthNLimit";
-    private static final String ADS_LOCKOUT = ADS_PREFIX + "pwdLockout";
-    private static final String ADS_LOCKOUT_DURATION = ADS_PREFIX + "pwdLockoutDuration";
-    private static final String ADS_MAX_FAILURE = ADS_PREFIX + "pwdMaxFailure";
-    private static final String ADS_FAILURE_COUNT_INTERVAL = ADS_PREFIX + "pwdFailureCountInterval";
-    private static final String ADS_MUST_CHANGE = ADS_PREFIX + "pwdMustChange";
-    private static final String ADS_ALLOW_USER_CHANGE = ADS_PREFIX + "pwdAllowUserChange";
-    private static final String ADS_SAFE_MODIFY = ADS_PREFIX + "pwdSafeModify";
-    private static final String ADS_ATTRIBUTE = "ads-pwdAttribute";
-    private static final String ADS_PWD_ID = "ads-pwdid";
-
-    private static final String[] OL_PASSWORD_POLICY_ATRS =
-        {
-            SchemaConstants.CN_AT, OLPW_MIN_AGE, OLPW_MAX_AGE, OLPW_IN_HISTORY, OLPW_CHECK_QUALITY,
-            OLPW_MIN_LENGTH, OLPW_EXPIRE_WARNING, OLPW_GRACE_LOGIN_LIMIT, OLPW_LOCKOUT,
-            OLPW_LOCKOUT_DURATION, OLPW_MAX_FAILURE, OLPW_FAILURE_COUNT_INTERVAL,
-            OLPW_MUST_CHANGE, OLPW_ALLOW_USER_CHANGE, OLPW_SAFE_MODIFY, "ads-pwdid"
-    };
-
-    private static final String[] ADS_PASSWORD_POLICY_ATRS =
-        {
-            ADS_PWD_ID, ADS_MIN_AGE, ADS_MAX_AGE, ADS_IN_HISTORY, ADS_CHECK_QUALITY,
-            ADS_MIN_LENGTH, ADS_EXPIRE_WARNING, ADS_GRACE_LOGIN_LIMIT, ADS_LOCKOUT,
-            ADS_LOCKOUT_DURATION, ADS_MAX_FAILURE, ADS_FAILURE_COUNT_INTERVAL,
-            ADS_MUST_CHANGE, ADS_ALLOW_USER_CHANGE, ADS_SAFE_MODIFY
-    };
-
-    private static final String[] OL_PASSWORD_POLICY_NAME_ATR =
-        {
-            SchemaConstants.CN_AT
-    };
-
-    private static final String[] ADS_PASSWORD_POLICY_NAME_ATR =
-        {
-            ADS_PWD_ID
-    };
+        };
+
+    private static final String PW_PWD_ID = (Config.getInstance().isOpenldap()) ? "cn" : "ads-pwdid";
+    private static final String PW_MIN_AGE = (Config.getInstance().isOpenldap()) ? "pwdMinAge" : "ads-pwdMinAge";
+    private static final String PW_MAX_AGE = (Config.getInstance().isOpenldap()) ? "pwdMaxAge" : "ads-pwdMaxAge";
+    private static final String PW_IN_HISTORY = (Config.getInstance().isOpenldap()) ? "pwdInHistory" : "ads-pwdInHistory";
+    private static final String PW_CHECK_QUALITY = (Config.getInstance().isOpenldap()) ? "pwdCheckQuality" : "ads-pwdCheckQuality";
+    private static final String PW_MIN_LENGTH = (Config.getInstance().isOpenldap()) ? "pwdMinLength" : "ads-pwdMinLength";
+    private static final String PW_EXPIRE_WARNING = (Config.getInstance().isOpenldap()) ? "pwdExpireWarning" : "ads-pwdExpireWarning";
+    private static final String PW_GRACE_LOGIN_LIMIT = (Config.getInstance().isOpenldap()) ? "pwdGraceAuthNLimit" : "ads-pwdGraceAuthNLimit";
+    private static final String PW_LOCKOUT = (Config.getInstance().isOpenldap()) ? "pwdLockout" : "ads-pwdLockout";
+    private static final String PW_LOCKOUT_DURATION = (Config.getInstance().isOpenldap()) ? "pwdLockoutDuration" : "ads-pwdLockoutDuration";
+    private static final String PW_MAX_FAILURE = (Config.getInstance().isOpenldap()) ? "pwdMaxFailure" : "ads-pwdMaxFailure";
+    private static final String PW_FAILURE_COUNT_INTERVAL = (Config.getInstance().isOpenldap()) ? "pwdFailureCountInterval" : "ads-pwdFailureCountInterval";
+    private static final String PW_MUST_CHANGE = (Config.getInstance().isOpenldap()) ? "pwdMustChange" : "ads-pwdMustChange";
+    private static final String PW_ALLOW_USER_CHANGE = (Config.getInstance().isOpenldap()) ? "pwdAllowUserChange" : "ads-pwdAllowUserChange";
+    private static final String PW_SAFE_MODIFY = (Config.getInstance().isOpenldap()) ? "pwdSafeModify" : "ads-pwdSafeModify";
+    private static final String PW_ATTRIBUTE = (Config.getInstance().isOpenldap()) ? "pwdAttribute" : "ads-pwdAttribute";
+
+    private static final String[] PASSWORD_POLICY_ATRS =
+        {
+            PW_PWD_ID, PW_MIN_AGE, PW_MAX_AGE, PW_IN_HISTORY, PW_CHECK_QUALITY,
+            PW_MIN_LENGTH, PW_EXPIRE_WARNING, PW_GRACE_LOGIN_LIMIT, PW_LOCKOUT,
+            PW_LOCKOUT_DURATION, PW_MAX_FAILURE, PW_FAILURE_COUNT_INTERVAL,
+            PW_MUST_CHANGE, PW_ALLOW_USER_CHANGE, PW_SAFE_MODIFY
+        };
+
+    private static final String[] PASSWORD_POLICY_NAME_ATR = { PW_PWD_ID };
 
     /**
      * @param entity
@@ -204,109 +171,66 @@ final class PolicyDAO extends LdapDataProvider
         {
             Entry entry = new DefaultEntry( dn );
 
-
-            if( Config.getInstance().isOpenldap() )
-            {
-                entry.add( SchemaConstants.OBJECT_CLASS_AT, OL_PWPOLICY_OBJ_CLASS );
-                entry.add( SchemaConstants.CN_AT, entity.getName() );
-                entry.add( OLPW_ATTRIBUTE, OLPW_POLICY_EXTENSION );
-            }
-            else
-            {
-                entry.add( SchemaConstants.OBJECT_CLASS_AT, ADS_PWPOLICY_OBJ_CLASS );
-                entry.add( ADS_PWD_ID, entity.getName() );
-                entry.add( ADS_ATTRIBUTE, "userPassword" );
-            }
+            entry.add( SchemaConstants.OBJECT_CLASS_AT, PWPOLICY_OBJ_CLASS );
+            entry.add( PW_PWD_ID, entity.getName() );
+            entry.add( PW_ATTRIBUTE, PW_POLICY_EXTENSION );
 
             if ( entity.getMinAge() != null )
             {
-                if( Config.getInstance().isOpenldap() )
-                    entry.add( OLPW_MIN_AGE, entity.getMinAge().toString() );
-                else
-                    entry.add( ADS_MIN_AGE, entity.getMinAge().toString() );
+                entry.add( PW_MIN_AGE, entity.getMinAge().toString() );
             }
 
             if ( entity.getMaxAge() != null )
             {
-                if( Config.getInstance().isOpenldap() )
-                    entry.add( OLPW_MAX_AGE, entity.getMaxAge().toString() );
-                else
-                    entry.add( ADS_MAX_AGE, entity.getMaxAge().toString() );
+                entry.add( PW_MAX_AGE, entity.getMaxAge().toString() );
             }
 
             if ( entity.getInHistory() != null )
             {
-                if( Config.getInstance().isOpenldap() )
-                    entry.add( OLPW_IN_HISTORY, entity.getInHistory().toString() );
-                else
-                    entry.add( ADS_IN_HISTORY, entity.getInHistory().toString() );
+                entry.add( PW_IN_HISTORY, entity.getInHistory().toString() );
             }
 
             if ( entity.getCheckQuality() != null )
             {
-                if( Config.getInstance().isOpenldap() )
-                    entry.add( OLPW_CHECK_QUALITY, entity.getCheckQuality().toString() );
-                else
-                    entry.add( ADS_CHECK_QUALITY, entity.getCheckQuality().toString() );
+                entry.add( PW_CHECK_QUALITY, entity.getCheckQuality().toString() );
             }
 
             if ( entity.getMinLength() != null )
             {
-                if( Config.getInstance().isOpenldap() )
-                    entry.add( OLPW_MIN_LENGTH, entity.getMinLength().toString() );
-                else
-                    entry.add( ADS_MIN_LENGTH, entity.getMinLength().toString() );
+                entry.add( PW_MIN_LENGTH, entity.getMinLength().toString() );
             }
 
             if ( entity.getExpireWarning() != null )
             {
-                if( Config.getInstance().isOpenldap() )
-                    entry.add( OLPW_EXPIRE_WARNING, entity.getExpireWarning().toString() );
-                else
-                    entry.add( ADS_EXPIRE_WARNING, entity.getExpireWarning().toString() );
+                entry.add( PW_EXPIRE_WARNING, entity.getExpireWarning().toString() );
             }
 
             if ( entity.getGraceLoginLimit() != null )
             {
-                if( Config.getInstance().isOpenldap() )
-                    entry.add( OLPW_GRACE_LOGIN_LIMIT, entity.getGraceLoginLimit().toString() );
-                else
-                    entry.add( ADS_GRACE_LOGIN_LIMIT, entity.getGraceLoginLimit().toString() );
+                entry.add( PW_GRACE_LOGIN_LIMIT, entity.getGraceLoginLimit().toString() );
             }
 
             if ( entity.getLockout() != null )
             {
                 /**
-                 * For some reason OpenLDAP requires the pwdLockout boolean value to be upper case:
+                 * OpenLDAP requires the pwdLockout boolean value to be upper case:
                  */
-                if( Config.getInstance().isOpenldap() )
-                    entry.add( OLPW_LOCKOUT, entity.getLockout().toString().toUpperCase() );
-                else
-                    entry.add( ADS_LOCKOUT, entity.getLockout().toString().toUpperCase() );
+                entry.add( PW_LOCKOUT, entity.getLockout().toString().toUpperCase() );
             }
 
             if ( entity.getLockoutDuration() != null )
             {
-                if( Config.getInstance().isOpenldap() )
-                    entry.add( OLPW_LOCKOUT_DURATION, entity.getLockoutDuration().toString() );
-                else
-                    entry.add( ADS_LOCKOUT_DURATION, entity.getLockoutDuration().toString() );
+                entry.add( PW_LOCKOUT_DURATION, entity.getLockoutDuration().toString() );
             }
 
             if ( entity.getMaxFailure() != null )
             {
-                if( Config.getInstance().isOpenldap() )
-                    entry.add( OLPW_MAX_FAILURE, entity.getMaxFailure().toString() );
-                else
-                    entry.add( ADS_MAX_FAILURE, entity.getMaxFailure().toString() );
+                entry.add( PW_MAX_FAILURE, entity.getMaxFailure().toString() );
             }
 
             if ( entity.getFailureCountInterval() != null )
             {
-                if( Config.getInstance().isOpenldap() )
-                    entry.add( OLPW_FAILURE_COUNT_INTERVAL, entity.getFailureCountInterval().toString() );
-                else
-                    entry.add( ADS_FAILURE_COUNT_INTERVAL, entity.getFailureCountInterval().toString() );
+                entry.add( PW_FAILURE_COUNT_INTERVAL, entity.getFailureCountInterval().toString() );
             }
 
             if ( entity.getMustChange() != null )
@@ -314,10 +238,7 @@ final class PolicyDAO extends LdapDataProvider
                 /**
                  * OpenLDAP requires the boolean values to be upper case:
                  */
-                if( Config.getInstance().isOpenldap() )
-                    entry.add( OLPW_MUST_CHANGE, entity.getMustChange().toString().toUpperCase() );
-                else
-                    entry.add( ADS_MUST_CHANGE, entity.getMustChange().toString().toUpperCase() );
+                entry.add( PW_MUST_CHANGE, entity.getMustChange().toString().toUpperCase() );
             }
 
             if ( entity.getAllowUserChange() != null )
@@ -325,23 +246,13 @@ final class PolicyDAO extends LdapDataProvider
                 /**
                  * OpenLDAP requires the boolean values to be upper case:
                  */
-                if( Config.getInstance().isOpenldap() )
-                    entry.add( OLPW_ALLOW_USER_CHANGE, entity.getAllowUserChange().toString()
-                        .toUpperCase() );
-                else
-                    entry.add( ADS_ALLOW_USER_CHANGE, entity.getAllowUserChange().toString()
+                entry.add( PW_ALLOW_USER_CHANGE, entity.getAllowUserChange().toString()
                         .toUpperCase() );
             }
 
             if ( entity.getSafeModify() != null )
             {
-                /**
-                 * OpenLDAP requires the boolean values to be upper case:
-                 */
-                if( Config.getInstance().isOpenldap() )
-                    entry.add( OLPW_SAFE_MODIFY, entity.getSafeModify().toString().toUpperCase() );
-                else
-                    entry.add( ADS_SAFE_MODIFY, entity.getSafeModify().toString().toUpperCase() );
+                entry.add( PW_SAFE_MODIFY, entity.getSafeModify().toString().toUpperCase() );
             }
 
             ld = getAdminConnection();
@@ -377,86 +288,51 @@ final class PolicyDAO extends LdapDataProvider
 
             if ( entity.getMinAge() != null )
             {
-                if( Config.getInstance().isOpenldap() )
-                    mods.add( new DefaultModification(
-                        ModificationOperation.REPLACE_ATTRIBUTE,
-                        OLPW_MIN_AGE, entity.getMinAge().toString() ) );
-                else
-                    mods.add( new DefaultModification(
-                        ModificationOperation.REPLACE_ATTRIBUTE,
-                        ADS_MIN_AGE, entity.getMinAge().toString() ) );
+                mods.add( new DefaultModification(
+                    ModificationOperation.REPLACE_ATTRIBUTE,
+                    PW_MIN_AGE, entity.getMinAge().toString() ) );
             }
 
             if ( entity.getMaxAge() != null )
             {
-                if( Config.getInstance().isOpenldap() )
-                    mods.add( new DefaultModification(
-                        ModificationOperation.REPLACE_ATTRIBUTE,
-                        OLPW_MAX_AGE, entity.getMaxAge().toString() ) );
-                else
-                    mods.add( new DefaultModification(
-                        ModificationOperation.REPLACE_ATTRIBUTE,
-                        ADS_MAX_AGE, entity.getMaxAge().toString() ) );
+                mods.add( new DefaultModification(
+                    ModificationOperation.REPLACE_ATTRIBUTE,
+                    PW_MAX_AGE, entity.getMaxAge().toString() ) );
             }
 
             if ( entity.getInHistory() != null )
             {
-                if( Config.getInstance().isOpenldap() )
-                    mods.add( new DefaultModification(
-                        ModificationOperation.REPLACE_ATTRIBUTE,
-                        OLPW_IN_HISTORY, entity.getInHistory().toString() ) );
-                else
-                    mods.add( new DefaultModification(
-                        ModificationOperation.REPLACE_ATTRIBUTE,
-                        ADS_IN_HISTORY, entity.getInHistory().toString() ) );
+                mods.add( new DefaultModification(
+                    ModificationOperation.REPLACE_ATTRIBUTE,
+                    PW_IN_HISTORY, entity.getInHistory().toString() ) );
             }
 
             if ( entity.getCheckQuality() != null )
             {
-                if( Config.getInstance().isOpenldap() )
-                    mods.add( new DefaultModification(
-                        ModificationOperation.REPLACE_ATTRIBUTE,
-                        OLPW_CHECK_QUALITY, entity.getCheckQuality().toString() ) );
-                else
-                    mods.add( new DefaultModification(
-                        ModificationOperation.REPLACE_ATTRIBUTE,
-                        ADS_CHECK_QUALITY, entity.getCheckQuality().toString() ) );
+                mods.add( new DefaultModification(
+                    ModificationOperation.REPLACE_ATTRIBUTE,
+                    PW_CHECK_QUALITY, entity.getCheckQuality().toString() ) );
             }
 
             if ( entity.getMinLength() != null )
             {
-                if( Config.getInstance().isOpenldap() )
-                    mods.add( new DefaultModification(
-                        ModificationOperation.REPLACE_ATTRIBUTE,
-                        OLPW_MIN_LENGTH, entity.getMinLength().toString() ) );
-                else
-                    mods.add( new DefaultModification(
-                        ModificationOperation.REPLACE_ATTRIBUTE,
-                        ADS_MIN_LENGTH, entity.getMinLength().toString() ) );
+                mods.add( new DefaultModification(
+                    ModificationOperation.REPLACE_ATTRIBUTE,
+                    PW_MIN_LENGTH, entity.getMinLength().toString() ) );
             }
 
             if ( entity.getExpireWarning() != null )
             {
-                if( Config.getInstance().isOpenldap() )
-                    mods.add( new DefaultModification(
-                        ModificationOperation.REPLACE_ATTRIBUTE,
-                        OLPW_EXPIRE_WARNING, entity.getExpireWarning().toString() ) );
-                else
-                    mods.add( new DefaultModification(
-                        ModificationOperation.REPLACE_ATTRIBUTE,
-                        ADS_EXPIRE_WARNING, entity.getExpireWarning().toString() ) );
+                mods.add( new DefaultModification(
+                    ModificationOperation.REPLACE_ATTRIBUTE,
+                    PW_EXPIRE_WARNING, entity.getExpireWarning().toString() ) );
             }
 
             if ( entity.getGraceLoginLimit() != null )
             {
-                if( Config.getInstance().isOpenldap() )
-                    mods.add( new DefaultModification(
-                        ModificationOperation.REPLACE_ATTRIBUTE,
-                        OLPW_GRACE_LOGIN_LIMIT, entity.getGraceLoginLimit().toString() ) );
-                else
-                    mods.add( new DefaultModification(
-                        ModificationOperation.REPLACE_ATTRIBUTE,
-                        ADS_GRACE_LOGIN_LIMIT, entity.getGraceLoginLimit().toString() ) );
+                mods.add( new DefaultModification(
+                    ModificationOperation.REPLACE_ATTRIBUTE,
+                    PW_GRACE_LOGIN_LIMIT, entity.getGraceLoginLimit().toString() ) );
             }
 
             if ( entity.getLockout() != null )
@@ -464,50 +340,30 @@ final class PolicyDAO extends LdapDataProvider
                 /**
                  * OpenLDAP requires the boolean values to be upper case:
                  */
-                if( Config.getInstance().isOpenldap() )
-                    mods.add( new DefaultModification(
-                        ModificationOperation.REPLACE_ATTRIBUTE,
-                        OLPW_LOCKOUT, entity.getLockout().toString().toUpperCase() ) );
-                else
-                    mods.add( new DefaultModification(
-                        ModificationOperation.REPLACE_ATTRIBUTE,
-                        ADS_LOCKOUT, entity.getLockout().toString().toUpperCase() ) );
+                mods.add( new DefaultModification(
+                    ModificationOperation.REPLACE_ATTRIBUTE,
+                    PW_LOCKOUT, entity.getLockout().toString().toUpperCase() ) );
             }
 
             if ( entity.getLockoutDuration() != null )
             {
-                if( Config.getInstance().isOpenldap() )
-                    mods.add( new DefaultModification(
-                        ModificationOperation.REPLACE_ATTRIBUTE,
-                        OLPW_LOCKOUT_DURATION, entity.getLockoutDuration().toString() ) );
-                else
-                    mods.add( new DefaultModification(
-                        ModificationOperation.REPLACE_ATTRIBUTE,
-                        ADS_LOCKOUT_DURATION, entity.getLockoutDuration().toString() ) );
+                mods.add( new DefaultModification(
+                    ModificationOperation.REPLACE_ATTRIBUTE,
+                    PW_LOCKOUT_DURATION, entity.getLockoutDuration().toString() ) );
             }
 
             if ( entity.getMaxFailure() != null )
             {
-                if( Config.getInstance().isOpenldap() )
-                    mods.add( new DefaultModification(
-                        ModificationOperation.REPLACE_ATTRIBUTE,
-                        OLPW_MAX_FAILURE, entity.getMaxFailure().toString() ) );
-                else
-                    mods.add( new DefaultModification(
-                        ModificationOperation.REPLACE_ATTRIBUTE,
-                        ADS_MAX_FAILURE, entity.getMaxFailure().toString() ) );
+                mods.add( new DefaultModification(
+                    ModificationOperation.REPLACE_ATTRIBUTE,
+                    PW_MAX_FAILURE, entity.getMaxFailure().toString() ) );
             }
 
             if ( entity.getFailureCountInterval() != null )
             {
-                if( Config.getInstance().isOpenldap() )
-                    mods.add( new DefaultModification(
-                        ModificationOperation.REPLACE_ATTRIBUTE,
-                        OLPW_FAILURE_COUNT_INTERVAL, entity.getFailureCountInterval().toString() ) );
-                else
-                    mods.add( new DefaultModification(
-                        ModificationOperation.REPLACE_ATTRIBUTE,
-                        ADS_FAILURE_COUNT_INTERVAL, entity.getFailureCountInterval().toString() ) );
+                mods.add( new DefaultModification(
+                    ModificationOperation.REPLACE_ATTRIBUTE,
+                    PW_FAILURE_COUNT_INTERVAL, entity.getFailureCountInterval().toString() ) );
             }
 
             if ( entity.getMustChange() != null )
@@ -515,14 +371,9 @@ final class PolicyDAO extends LdapDataProvider
                 /**
                  * OpenLDAP requires the boolean values to be upper case:
                  */
-                if( Config.getInstance().isOpenldap() )
-                    mods.add( new DefaultModification(
-                        ModificationOperation.REPLACE_ATTRIBUTE,
-                        OLPW_MUST_CHANGE, entity.getMustChange().toString().toUpperCase() ) );
-                else
-                    mods.add( new DefaultModification(
-                        ModificationOperation.REPLACE_ATTRIBUTE,
-                        ADS_MUST_CHANGE, entity.getMustChange().toString().toUpperCase() ) );
+                mods.add( new DefaultModification(
+                    ModificationOperation.REPLACE_ATTRIBUTE,
+                    PW_MUST_CHANGE, entity.getMustChange().toString().toUpperCase() ) );
             }
 
             if ( entity.getAllowUserChange() != null )
@@ -530,14 +381,9 @@ final class PolicyDAO extends LdapDataProvider
                 /**
                  * OpenLDAP requires the boolean values to be upper case:
                  */
-                if( Config.getInstance().isOpenldap() )
-                    mods.add( new DefaultModification(
-                        ModificationOperation.REPLACE_ATTRIBUTE,
-                        OLPW_ALLOW_USER_CHANGE, entity.getAllowUserChange().toString().toUpperCase() ) );
-                else
-                    mods.add( new DefaultModification(
-                        ModificationOperation.REPLACE_ATTRIBUTE,
-                        ADS_ALLOW_USER_CHANGE, entity.getAllowUserChange().toString().toUpperCase() ) );
+                mods.add( new DefaultModification(
+                    ModificationOperation.REPLACE_ATTRIBUTE,
+                    PW_ALLOW_USER_CHANGE, entity.getAllowUserChange().toString().toUpperCase() ) );
             }
 
             if ( entity.getSafeModify() != null )
@@ -545,14 +391,9 @@ final class PolicyDAO extends LdapDataProvider
                 /**
                  * OpenLDAP requires the boolean values to be upper case:
                  */
-                if( Config.getInstance().isOpenldap() )
-                    mods.add( new DefaultModification(
-                        ModificationOperation.REPLACE_ATTRIBUTE,
-                        OLPW_SAFE_MODIFY, entity.getSafeModify().toString().toUpperCase() ) );
-                else
-                    mods.add( new DefaultModification(
-                        ModificationOperation.REPLACE_ATTRIBUTE,
-                        ADS_SAFE_MODIFY, entity.getSafeModify().toString().toUpperCase() ) );
+                mods.add( new DefaultModification(
+                    ModificationOperation.REPLACE_ATTRIBUTE,
+                    PW_SAFE_MODIFY, entity.getSafeModify().toString().toUpperCase() ) );
             }
 
             if ( mods != null && mods.size() > 0 )
@@ -614,13 +455,7 @@ final class PolicyDAO extends LdapDataProvider
         try
         {
             ld = getAdminConnection();
-            String pattr[];
-            if( Config.getInstance().isOpenldap() )
-                pattr = OL_PASSWORD_POLICY_ATRS;
-            else
-                pattr = ADS_PASSWORD_POLICY_ATRS;
-
-            Entry findEntry = read( ld, dn, pattr );
+            Entry findEntry = read( ld, dn, PASSWORD_POLICY_ATRS );
             entity = unloadLdapEntry( findEntry, 0 );
         }
         catch ( LdapNoSuchObjectException e )
@@ -656,147 +491,89 @@ final class PolicyDAO extends LdapDataProvider
         PwPolicy entity = new ObjectFactory().createPswdPolicy();
         entity.setSequenceId( sequence );
 
-        if( Config.getInstance().isOpenldap() )
-            entity.setName( getAttribute( le, SchemaConstants.CN_AT ) );
-        else
-            entity.setName( getAttribute( le, ADS_PWD_ID ) );
+        entity.setName( getAttribute( le, PW_PWD_ID ) );
         String val;
 
-        if( Config.getInstance().isOpenldap() )
-            val = getAttribute( le, OLPW_MIN_AGE );
-        else
-            val = getAttribute( le, ADS_MIN_AGE );
-
+        val = getAttribute( le, PW_MIN_AGE );
         if ( StringUtils.isNotEmpty( val ) )
         {
             entity.setMinAge( Integer.valueOf( val ) );
         }
 
-        if( Config.getInstance().isOpenldap() )
-            val = getAttribute( le, OLPW_MAX_AGE );
-        else
-            val = getAttribute( le, ADS_MAX_AGE );
-
+        val = getAttribute( le, PW_MAX_AGE );
         if ( StringUtils.isNotEmpty( val ) )
         {
             entity.setMaxAge( Long.valueOf( val ) );
         }
 
-        if( Config.getInstance().isOpenldap() )
-            val = getAttribute( le, OLPW_IN_HISTORY );
-        else
-            val = getAttribute( le, ADS_IN_HISTORY );
-
+        val = getAttribute( le, PW_IN_HISTORY );
         if ( StringUtils.isNotEmpty( val ) )
         {
             entity.setInHistory( Short.valueOf( val ) );
         }
 
-        if( Config.getInstance().isOpenldap() )
-            val = getAttribute( le, OLPW_CHECK_QUALITY );
-        else
-            val = getAttribute( le, ADS_CHECK_QUALITY );
-
+        val = getAttribute( le, PW_CHECK_QUALITY );
         if ( StringUtils.isNotEmpty( val ) )
         {
             entity.setCheckQuality( Short.valueOf( val ) );
         }
 
-        if( Config.getInstance().isOpenldap() )
-            val = getAttribute( le, OLPW_MIN_LENGTH );
-        else
-            val = getAttribute( le, ADS_MIN_LENGTH );
-
+        val = getAttribute( le, PW_MIN_LENGTH );
         if ( StringUtils.isNotEmpty( val ) )
         {
             entity.setMinLength( Short.valueOf( val ) );
         }
 
-        if( Config.getInstance().isOpenldap() )
-            val = getAttribute( le, OLPW_EXPIRE_WARNING );
-        else
-            val = getAttribute( le, ADS_EXPIRE_WARNING );
-
+        val = getAttribute( le, PW_EXPIRE_WARNING );
         if ( StringUtils.isNotEmpty( val ) )
         {
             entity.setExpireWarning( Long.valueOf( val ) );
         }
 
-        if( Config.getInstance().isOpenldap() )
-            val = getAttribute( le, OLPW_GRACE_LOGIN_LIMIT );
-        else
-            val = getAttribute( le, ADS_GRACE_LOGIN_LIMIT );
-
+        val = getAttribute( le, PW_GRACE_LOGIN_LIMIT );
         if ( StringUtils.isNotEmpty( val ) )
         {
             entity.setGraceLoginLimit( Short.valueOf( val ) );
         }
 
-        if( Config.getInstance().isOpenldap() )
-            val = getAttribute( le, OLPW_LOCKOUT );
-        else
-            val = getAttribute( le, ADS_LOCKOUT );
-
+        val = getAttribute( le, PW_LOCKOUT );
         if ( StringUtils.isNotEmpty( val ) )
         {
             entity.setLockout( Boolean.valueOf( val ) );
         }
 
-        if( Config.getInstance().isOpenldap() )
-            val = getAttribute( le, OLPW_LOCKOUT_DURATION );
-        else
-            val = getAttribute( le, ADS_LOCKOUT_DURATION );
-
+        val = getAttribute( le, PW_LOCKOUT_DURATION );
         if ( StringUtils.isNotEmpty( val ) )
         {
             entity.setLockoutDuration( Integer.valueOf( val ) );
         }
 
-        if( Config.getInstance().isOpenldap() )
-            val = getAttribute( le, OLPW_MAX_FAILURE );
-        else
-            val = getAttribute( le, ADS_MAX_FAILURE );
-
+        val = getAttribute( le, PW_MAX_FAILURE );
         if ( StringUtils.isNotEmpty( val ) )
         {
             entity.setMaxFailure( Short.valueOf( val ) );
         }
 
-        if( Config.getInstance().isOpenldap() )
-            val = getAttribute( le, OLPW_FAILURE_COUNT_INTERVAL );
-        else
-            val = getAttribute( le, ADS_FAILURE_COUNT_INTERVAL );
-
+        val = getAttribute( le, PW_FAILURE_COUNT_INTERVAL );
         if ( StringUtils.isNotEmpty( val ) )
         {
            entity.setFailureCountInterval( Short.valueOf( val ) );
         }
 
-        if( Config.getInstance().isOpenldap() )
-            val = getAttribute( le, OLPW_MUST_CHANGE );
-        else
-            val = getAttribute( le, ADS_MUST_CHANGE );
-
+        val = getAttribute( le, PW_MUST_CHANGE );
         if ( StringUtils.isNotEmpty( val ) )
         {
             //noinspection BooleanConstructorCall
             entity.setMustChange( Boolean.valueOf( val ) );
         }
 
-        if( Config.getInstance().isOpenldap() )
-            val = getAttribute( le, OLPW_ALLOW_USER_CHANGE );
-        else
-            val = getAttribute( le, ADS_ALLOW_USER_CHANGE );
-
+        val = getAttribute( le, PW_ALLOW_USER_CHANGE );
         if ( StringUtils.isNotEmpty( val ) )
         {
             entity.setAllowUserChange( Boolean.valueOf( val ) );
         }
 
-        if( Config.getInstance().isOpenldap() )
-            val = getAttribute( le, OLPW_SAFE_MODIFY );
-        else
-            val = getAttribute( le, ADS_SAFE_MODIFY );
+        val = getAttribute( le, PW_SAFE_MODIFY );
 
         if ( StringUtils.isNotEmpty( val ) )
         {
@@ -823,23 +600,10 @@ final class PolicyDAO extends LdapDataProvider
         try
         {
             searchVal = encodeSafeText( policy.getName(), GlobalIds.PWPOLICY_NAME_LEN );
-            String szFilter;
-            String attrs[];
-
-            if( Config.getInstance().isOpenldap() )
-            {
-                szFilter = GlobalIds.FILTER_PREFIX + OLPW_POLICY_CLASS + ")(" + GlobalIds.POLICY_NODE_TYPE + "=" + searchVal + "*))";
-                attrs = OL_PASSWORD_POLICY_ATRS;
-            }
-            else
-            {
-                szFilter = GlobalIds.FILTER_PREFIX + ADS_POLICY_CLASS + ")(" + ADS_PWD_ID + "=" + searchVal + "*))";
-                attrs = ADS_PASSWORD_POLICY_ATRS;
-            }
-
+            String szFilter = GlobalIds.FILTER_PREFIX + PW_POLICY_CLASS + ")(" + PW_PWD_ID + "=" + searchVal + "*))";
             ld = getAdminConnection();
             SearchCursor searchResults = search( ld, policyRoot,
-                SearchScope.ONELEVEL, szFilter, attrs, false, GlobalIds.BATCH_SIZE );
+                SearchScope.ONELEVEL, szFilter, PASSWORD_POLICY_ATRS, false, GlobalIds.BATCH_SIZE );
             long sequence = 0;
 
             while ( searchResults.next() )
@@ -879,33 +643,15 @@ final class PolicyDAO extends LdapDataProvider
 
         try
         {
-            //String filter = "(objectclass=" + OLPW_POLICY_CLASS + ")";
-            String szFilter;
-            String attrs[];
-
-            if( Config.getInstance().isOpenldap() )
-            {
-                szFilter = "(objectclass=" + OLPW_POLICY_CLASS + ")";
-                attrs = OL_PASSWORD_POLICY_NAME_ATR;
-            }
-            else
-            {
-                szFilter = "(objectclass=" + ADS_POLICY_CLASS + ")";
-                attrs = ADS_PASSWORD_POLICY_NAME_ATR;
-            }
-
-
+            String szFilter = "(objectclass=" + PW_POLICY_CLASS + ")";
             ld = getAdminConnection();
             SearchCursor searchResults = search( ld, policyRoot,
-                SearchScope.ONELEVEL, szFilter, attrs, false, GlobalIds.BATCH_SIZE );
+                SearchScope.ONELEVEL, szFilter, PASSWORD_POLICY_NAME_ATR, false, GlobalIds.BATCH_SIZE );
 
             while ( searchResults.next() )
             {
                 Entry entry = searchResults.getEntry();
-                if( Config.getInstance().isOpenldap() )
-                    policySet.add( getAttribute( searchResults.getEntry(), SchemaConstants.CN_AT ) );
-                else
-                    policySet.add( getAttribute( entry, ADS_PWD_ID ) );
+                policySet.add( getAttribute( entry, PW_PWD_ID ) );
             }
         }
         catch ( LdapException e )
@@ -926,32 +672,22 @@ final class PolicyDAO extends LdapDataProvider
         return policySet;
     }
 
-
     private String getDn( PwPolicy policy )
     {
-        String szDn;
-        if( Config.getInstance().isOpenldap() )
-            szDn = GlobalIds.POLICY_NODE_TYPE + "=" + policy.getName() + "," + getPolicyRoot( policy.getContextId() );
-        else
-            szDn = ADS_PWD_ID + "=" + policy.getName() + "," + getPolicyRoot( policy.getContextId() );
-
-        return szDn;
+        return PW_PWD_ID + "=" + policy.getName() + "," + getPolicyRoot( policy.getContextId() );
     }
 
+    // Allow callers from package {@link UserDAO} access to this method to resolve the pwdAttribute dn.
     static String getPolicyDn( User user )
     {
-        String szDn;
-        if( Config.getInstance().isOpenldap() )
-            szDn = GlobalIds.POLICY_NODE_TYPE + "=" + user.getPwPolicy() + "," + getPolicyRoot( user.getContextId() );
-        else
-            szDn = ADS_PWD_ID + "=" + user.getPwPolicy() + "," + getPolicyRoot( user.getContextId() );
-
-        return szDn;
+        return PW_PWD_ID + "=" + user.getPwPolicy() + "," + getPolicyRoot( user.getContextId() );
     }
 
     private static String getPolicyRoot( String contextId )
     {
         String szDn;
+
+        // ApacheDS requires pw policy objects to be stored under ou=config node;
         if( Config.getInstance().isOpenldap() )
             szDn = getRootDn( contextId, GlobalIds.PPOLICY_ROOT );
         else
@@ -959,4 +695,4 @@ final class PolicyDAO extends LdapDataProvider
 
         return szDn;
     }
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/7ba68de8/src/test/java/org/apache/directory/fortress/core/impl/PswdPolicyMgrImplTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/directory/fortress/core/impl/PswdPolicyMgrImplTest.java b/src/test/java/org/apache/directory/fortress/core/impl/PswdPolicyMgrImplTest.java
index 49a6e18..4e5d569 100755
--- a/src/test/java/org/apache/directory/fortress/core/impl/PswdPolicyMgrImplTest.java
+++ b/src/test/java/org/apache/directory/fortress/core/impl/PswdPolicyMgrImplTest.java
@@ -83,7 +83,6 @@ public class PswdPolicyMgrImplTest extends TestCase
         suite.addTest( new PswdPolicyMgrImplTest( "testAdd" ) );
         suite.addTest( new PswdPolicyMgrImplTest( "testAddUser" ) );
 
-/*
         suite.addTest( new PswdPolicyMgrImplTest( "testMinAge" ) );
         suite.addTest( new PswdPolicyMgrImplTest( "testMaxAge" ) );
         suite.addTest( new PswdPolicyMgrImplTest( "testInHistory" ) );
@@ -94,7 +93,6 @@ public class PswdPolicyMgrImplTest extends TestCase
         suite.addTest( new PswdPolicyMgrImplTest( "testLockoutDuration" ) );
         suite.addTest( new PswdPolicyMgrImplTest( "testLockout" ) );
         suite.addTest( new PswdPolicyMgrImplTest( "testFailureCountInterval" ) );
-*/
 
         suite.addTest( new PswdPolicyMgrImplTest( "testMustChange" ) );
         suite.addTest( new PswdPolicyMgrImplTest( "testAllowUserChange" ) );