Scarab commit: svn commit: r10309 - trunk: src/java/org/tigris/scarab/services/security src/java/org/tigris/scarab/services/security/ldap src/test/org/tigris/scarab/test xdocs

[email protected]
Newsgroups gmane.comp.java.scarab.cvs
Message-ID <[email protected]>
Author: ptillemans
Date: 2006-10-18 16:48:50-0700
New Revision: 10309

Modified:
   trunk/src/java/org/tigris/scarab/services/security/ScarabLDAPDBSecurityService.java
   trunk/src/java/org/tigris/scarab/services/security/ldap/LDAPSynchronizer.java
   trunk/src/test/org/tigris/scarab/test/AllScarabTests.java
   trunk/xdocs/scarab_properties.xml

Log:
Some improvements to the LDAP synchronisation based on post deployment feedback. 

Modified: trunk/src/java/org/tigris/scarab/services/security/ScarabLDAPDBSecurityService.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/services/security/ScarabLDAPDBSecurityService.java?view=diff&rev=10309&p1=trunk/src/java/org/tigris/scarab/services/security/ScarabLDAPDBSecurityService.java&p2=trunk/src/java/org/tigris/scarab/services/security/ScarabLDAPDBSecurityService.java&r1=10308&r2=10309
==============================================================================
--- trunk/src/java/org/tigris/scarab/services/security/ScarabLDAPDBSecurityService.java	(original)
+++ trunk/src/java/org/tigris/scarab/services/security/ScarabLDAPDBSecurityService.java	2006-10-18 16:48:50-0700
@@ -40,6 +40,7 @@
 import org.apache.log4j.Logger;
 
 import org.apache.torque.TorqueException;
+import org.apache.turbine.Turbine;
 
 import org.tigris.scarab.om.ScarabUser;
 import org.tigris.scarab.om.ScarabUserManager;
@@ -67,23 +68,18 @@
         initialize();
     }
 
+	/* (non-Javadoc)
+	 * @see org.apache.fulcrum.security.BaseSecurityService#init()
+	 * 
+	 * Initialize parent and synchronize accounts in configured to do so
+	 */
 	public void init() throws InitializationException {
 		super.init();
-        Configuration cfg = getConfiguration();
-        Iterator iter = cfg.getKeys();
-        while(iter.hasNext()) {
-        	String key = (String)iter.next();
-        	log.info("Security Config : " + key + "-->" + cfg.getString(key));
-        }
-        if (cfg == null) {
-        	log.error("Synchronize on Startup : configuration is null!!!!");
-        }
-        
-        log.info("Synchronize on Startup : " + cfg.getString("synchronizeOnStartUp","false"));
-        if (getConfiguration().getBoolean("synchronizeOnStartUp",false)) {
-        	LDAPSynchronizer syncher = null;
+        Configuration cfg = Turbine.getConfiguration().subset("scarab.login.ldap");
+        if ((cfg != null) && 
+        	(getConfiguration().getBoolean("synchronizeOnStartUp",false))) {
 			try {
-				syncher = new LDAPSynchronizer(getConfiguration());
+				LDAPSynchronizer syncher = new LDAPSynchronizer(cfg);
 				syncher.synchronize(); 
 			} catch (NamingException e) {
 				log.error("NamingException caught synchronizing accounts: ",e);
@@ -93,8 +89,7 @@
 	
 
 	/**
-     * Initializes the WikiAuthenticator based on values from a Properties
-     * object.
+     * Prepare the login context.
      */
     private void initialize() {
         cbh.clearPassword();
@@ -190,6 +185,15 @@
         return userManager.retrieve(username, password);
     }
 
+    /**
+     * Create a new user with the given username and password. Then copy
+     * the useful information from the ldapUserInfo object.
+     * 
+     * @param  username
+     * @param  password
+     * @param  ldapUserInfo
+     * @return the newly created user.
+     */
     private User createUser(String username, String password,
         LDAPUserInfoCallback ldapUserInfo) {
         User user = null;

Modified: trunk/src/java/org/tigris/scarab/services/security/ldap/LDAPSynchronizer.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/services/security/ldap/LDAPSynchronizer.java?view=diff&rev=10309&p1=trunk/src/java/org/tigris/scarab/services/security/ldap/LDAPSynchronizer.java&p2=trunk/src/java/org/tigris/scarab/services/security/ldap/LDAPSynchronizer.java&r1=10308&r2=10309
==============================================================================
--- trunk/src/java/org/tigris/scarab/services/security/ldap/LDAPSynchronizer.java	(original)
+++ trunk/src/java/org/tigris/scarab/services/security/ldap/LDAPSynchronizer.java	2006-10-18 16:48:50-0700
@@ -71,9 +71,6 @@
 	private String loginAttribute;
 
 	public LDAPSynchronizer(Configuration cfg) throws NamingException {
-		this.baseDn = cfg.getString("baseDN", "");
-		this.baseDn = cfg.getString("baseDN", "");
-		this.baseDn = cfg.getString("baseDN", "");
 		providerFactory = cfg.getString(providerFactory,
 				"com.sun.jndi.ldap.LdapCtxFactory");
 		providerUrl = cfg.getString("providerUrl", "ldap://localhost/");

Modified: trunk/src/test/org/tigris/scarab/test/AllScarabTests.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/test/org/tigris/scarab/test/AllScarabTests.java?view=diff&rev=10309&p1=trunk/src/test/org/tigris/scarab/test/AllScarabTests.java&p2=trunk/src/test/org/tigris/scarab/test/AllScarabTests.java&r1=10308&r2=10309
==============================================================================
--- trunk/src/test/org/tigris/scarab/test/AllScarabTests.java	(original)
+++ trunk/src/test/org/tigris/scarab/test/AllScarabTests.java	2006-10-18 16:48:50-0700
@@ -66,6 +66,7 @@
 import org.tigris.scarab.om.RModuleOptionTest;
 import org.tigris.scarab.om.ScarabUserTest;
 import org.tigris.scarab.services.email.VelocityEmailServiceTest;
+import org.tigris.scarab.services.security.ldap.LDAPIteratorTest;
 import org.tigris.scarab.services.yaaficomponent.YaafiComponentServiceTest;
 import org.tigris.scarab.util.EmailLinkTest;
 import org.tigris.scarab.util.ScarabUtilTest;
@@ -73,6 +74,7 @@
 import org.tigris.scarab.util.SubsetIteratorWithSizeTest;
 import org.tigris.scarab.util.word.IssueSearchTest;
 import org.tigris.scarab.util.xmlissues.ImportIssuesTest;
+import org.tigris.scarab.xmlrpc.NewTicketHandlerTest;
 
 /**
  * @author pti
@@ -149,7 +151,11 @@
 		suite.addTestSuite(SubsetIteratorTest.class);
 		suite.addTestSuite(SubsetIteratorWithSizeTest.class);
         //suite.addTestSuite(IssueSearchTest.class);
-		
+
+		suite.addTestSuite(NewTicketHandlerTest.class);
+
+		suite.addTestSuite(LDAPIteratorTest.class);
+
 		return suite;
 	}
 }
\ No newline at end of file

Modified: trunk/xdocs/scarab_properties.xml
Url: http://scarab.tigris.org/source/browse/scarab/trunk/xdocs/scarab_properties.xml?view=diff&rev=10309&p1=trunk/xdocs/scarab_properties.xml&p2=trunk/xdocs/scarab_properties.xml&r1=10308&r2=10309
==============================================================================
--- trunk/xdocs/scarab_properties.xml	(original)
+++ trunk/xdocs/scarab_properties.xml	2006-10-18 16:48:50-0700
@@ -885,6 +885,70 @@
     </property>    
 	</group>
 	
+	<group name="LDAP authentication">
+	      <property>
+      	<name>scarab.login.ldap.synchronizeOnStartUp</name>
+      	<default>true</default>
+      	<comment>Synchronize local database to LDAP on initialization.</comment>
+      	<type>Runtime</type>
+      	<file></file>
+      	<details>
+			This property lets you choose to synchronize the database with
+			the useraccounts in the LDAP server during intialization of the
+			ScarabLDAPDBSecurityService. (true/false)    	
+      	</details>      	
+      </property>
+      
+      <property>
+      	<name>scarab.login.ldap.providerFactory</name>
+      	<default>com.sun.jndi.ldap.LdapCtxFactory</default>
+      	<comment>The JNDI factory to connect to the LDAP data source.</comment>
+      	<type>Runtime</type>
+      	<file></file>
+      	<details>
+			This property lets you choose the LDAP providerfactory instead of relying
+			on the default settings for your container (from jndi.properties usually). 
+      	</details>      	
+      </property>
+
+      <property>
+      	<name>scarab.login.ldap.providerUrl</name>
+      	<default>ldap://localhost/</default>
+      	<comment>The LDAP url of the datasource.</comment>
+      	<type>Runtime</type>
+      	<file></file>
+      	<details>
+			This property lets you choose the LDAP providerURL instead of relying
+			on the default settings for your container (from jndi.properties usually). 
+      	</details>      	
+      </property>
+
+      <property>
+      	<name>scarab.login.ldap.ldapQuery</name>
+      	<default>(objectClass=posixAccount)</default>
+      	<comment>LDAP query to limit the resultset.</comment>
+      	<type>Runtime</type>
+      	<file></file>
+      	<details>
+			This property lets you choose to limit the records returned by using the
+			LDAP query you provide here. This is to avoid to add dummy accounts which
+			do not correspond to real users and might have weak passwords 
+      	</details>      	
+      </property>
+
+      <property>
+      	<name>scarab.login.ldap.baseDn</name>
+      	<default>dc=example,dc=com</default>
+      	<comment>The LDAP basedn to start the subtree search.</comment>
+      	<type>Runtime</type>
+      	<file></file>
+      	<details>
+			This property lets you choose to limit the records returned by specifying
+			the base dn below which to search for records.       	
+      	</details>      	
+      </property>
+	</group>
+	
     <property>
       <name>scarab.workflow.classname</name>
       <default>org.tigris.scarab.workflow.CheapWorkflow</default>
@@ -1287,6 +1351,8 @@
           >0 : Display at maximum the specified amount of public modules
         </details>
       </property>
+      
+
     </group>
     <group name="dataexport">
       <property>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.