You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ka...@apache.org on 2010/10/27 13:50:51 UTC
svn commit: r1027926 - in /directory/apacheds/trunk:
core-api/src/main/java/org/apache/directory/server/core/
core-api/src/test/java/org/apache/directory/server/core/
core/src/main/java/org/apache/directory/server/core/
Author: kayyagari
Date: Wed Oct 27 11:50:50 2010
New Revision: 1027926
URL: http://svn.apache.org/viewvc?rev=1027926&view=rev
Log:
o added new methods to deal with password policy
Modified:
directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/DirectoryService.java
directory/apacheds/trunk/core-api/src/test/java/org/apache/directory/server/core/MockDirectoryService.java
directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java
Modified: directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/DirectoryService.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/DirectoryService.java?rev=1027926&r1=1027925&r2=1027926&view=diff
==============================================================================
--- directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/DirectoryService.java (original)
+++ directory/apacheds/trunk/core-api/src/main/java/org/apache/directory/server/core/DirectoryService.java Wed Oct 27 11:50:50 2010
@@ -51,6 +51,7 @@ import org.apache.directory.shared.ldap.
* Provides JNDI service to {@link AbstractContextFactory}.
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @param <PasswordPolicyConfiguration>
*/
public interface DirectoryService extends ServerEntryFactory
{
@@ -554,4 +555,32 @@ public interface DirectoryService extend
* @return The TriggerExecution AdministrativePoint cache
*/
DnNode<TriggerExecutionAdministrativePoint> getTriggerExecutionAPCache();
+
+
+ /**
+ * @return true if the password policy is enabled, false otherwise
+ */
+ boolean isPwdPolicyEnabled();
+
+
+ /**
+ * Gets the effective password policy of the given entry.
+ * If the entry has defined a custom password policy by setting "pwdPolicySubentry" attribute
+ * then the password policy associated with the DN specified at the above attribute's value will be returned.
+ * Otherwise the default password policy will be returned (if present)
+ *
+ * @param userEntry the user's entry
+ * @return the associated password policy
+ * @throws LdapException
+ */
+ PasswordPolicyConfiguration getPwdPolicy( Entry userEntry ) throws LdapException;
+
+
+ /**
+ * set all the password policies to be used by the server.
+ * This includes a default(i.e applicable to all entries) and custom(a.k.a per user) password policies
+ *
+ * @param policyContainer the container holding all the password policies
+ */
+ void setPwdPolicies( PpolicyConfigContainer policyContainer );
}
Modified: directory/apacheds/trunk/core-api/src/test/java/org/apache/directory/server/core/MockDirectoryService.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core-api/src/test/java/org/apache/directory/server/core/MockDirectoryService.java?rev=1027926&r1=1027925&r2=1027926&view=diff
==============================================================================
--- directory/apacheds/trunk/core-api/src/test/java/org/apache/directory/server/core/MockDirectoryService.java (original)
+++ directory/apacheds/trunk/core-api/src/test/java/org/apache/directory/server/core/MockDirectoryService.java Wed Oct 27 11:50:50 2010
@@ -523,4 +523,32 @@ public class MockDirectoryService implem
{
return null;
}
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isPwdPolicyEnabled()
+ {
+ return false;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public PasswordPolicyConfiguration getPwdPolicy( Entry userEntry ) throws LdapException
+ {
+ return null;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public void setPwdPolicies( PpolicyConfigContainer policyContainer )
+ {
+ }
+
+
}
Modified: directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java?rev=1027926&r1=1027925&r2=1027926&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java (original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/directory/server/core/DefaultDirectoryService.java Wed Oct 27 11:50:50 2010
@@ -99,6 +99,7 @@ import org.apache.directory.shared.ldap.
import org.apache.directory.shared.ldap.ldif.LdifReader;
import org.apache.directory.shared.ldap.name.DN;
import org.apache.directory.shared.ldap.name.RDN;
+import org.apache.directory.shared.ldap.schema.AttributeType;
import org.apache.directory.shared.ldap.schema.SchemaManager;
import org.apache.directory.shared.ldap.util.DateUtils;
import org.apache.directory.shared.ldap.util.StringTools;
@@ -260,6 +261,12 @@ public class DefaultDirectoryService imp
/** The TriggerExecution AdministrativePoint cache */
private DnNode<TriggerExecutionAdministrativePoint> triggerExecutionAPCache;
+ /** a container to hold all the ppolicies */
+ private PpolicyConfigContainer pwdPolicyContainer;
+
+ /** the pwdPolicySubentry AT */
+ private AttributeType pwdPolicySubentryAT;
+
/**
* The synchronizer thread. It flush data on disk periodically.
*/
@@ -1454,6 +1461,8 @@ public class DefaultDirectoryService imp
partitions.add( schemaService.getSchemaPartition() );
systemPartition.getSuffix().normalize( schemaManager );
+ pwdPolicySubentryAT = schemaManager.lookupAttributeTypeRegistry( "pwdPolicySubentry" );
+
adminDn = DNFactory.create( ServerDNConstants.ADMIN_SYSTEM_DN, schemaManager );
adminSession = new DefaultCoreSession( new LdapPrincipal( adminDn, AuthenticationLevel.STRONG ), this );
@@ -1841,4 +1850,51 @@ public class DefaultDirectoryService imp
{
return triggerExecutionAPCache;
}
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public PasswordPolicyConfiguration getPwdPolicy( Entry userEntry ) throws LdapException
+ {
+ if ( pwdPolicyContainer == null )
+ {
+ return null;
+ }
+
+ if ( pwdPolicyContainer.hasCustomConfigs() )
+ {
+ EntryAttribute pwdPolicySubentry = userEntry.get( pwdPolicySubentryAT );
+
+ if ( pwdPolicySubentry != null )
+ {
+ DN configDn = DNFactory.create( pwdPolicySubentry.getString(), schemaManager );
+
+ return pwdPolicyContainer.getPolicyConfig( configDn );
+ }
+ }
+
+ return pwdPolicyContainer.getDefaultPolicy();
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isPwdPolicyEnabled()
+ {
+ return ( ( pwdPolicyContainer != null )
+ && ( ( pwdPolicyContainer.getDefaultPolicy() != null )
+ || ( pwdPolicyContainer.hasCustomConfigs() ) ) );
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public void setPwdPolicies( PpolicyConfigContainer policyContainer )
+ {
+ this.pwdPolicyContainer = policyContainer;
+ }
+
}
\ No newline at end of file