You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by de...@apache.org on 2009/04/29 19:14:15 UTC
svn commit: r769838 - in /activemq/trunk: ./ activemq-jaas/
activemq-jaas/src/main/java/org/apache/activemq/jaas/
activemq-jaas/src/test/java/org/apache/activemq/jaas/
activemq-jaas/src/test/java/org/apache/activemq/jaas/ldap/
activemq-jaas/src/test/re...
Author: dejanb
Date: Wed Apr 29 17:14:15 2009
New Revision: 769838
URL: http://svn.apache.org/viewvc?rev=769838&view=rev
Log:
fix for https://issues.apache.org/activemq/browse/AMQ-1781 - ldap login module npe
Added:
activemq/trunk/activemq-jaas/src/main/java/org/apache/activemq/jaas/LDAPLoginProperty.java
activemq/trunk/activemq-jaas/src/test/resources/log4j.properties
Removed:
activemq/trunk/activemq-jaas/src/test/java/org/apache/activemq/jaas/ldap/
Modified:
activemq/trunk/activemq-jaas/pom.xml
activemq/trunk/activemq-jaas/src/main/java/org/apache/activemq/jaas/LDAPLoginModule.java
activemq/trunk/activemq-jaas/src/test/java/org/apache/activemq/jaas/LDAPLoginModuleTest.java
activemq/trunk/activemq-jaas/src/test/java/org/apache/activemq/jaas/PropertiesLoginModuleTest.java
activemq/trunk/activemq-jaas/src/test/resources/login.config
activemq/trunk/pom.xml
Modified: activemq/trunk/activemq-jaas/pom.xml
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-jaas/pom.xml?rev=769838&r1=769837&r2=769838&view=diff
==============================================================================
--- activemq/trunk/activemq-jaas/pom.xml (original)
+++ activemq/trunk/activemq-jaas/pom.xml Wed Apr 29 17:14:15 2009
@@ -36,84 +36,74 @@
<build>
<plugins>
-
<!-- Configure which tests are included/excuded -->
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
- <childDelegation>true</childDelegation>
- <forkMode>once</forkMode>
- <excludes>
- <exclude implementation="java.lang.String">**/LDAPLoginModuleTest.*</exclude>
- </excludes>
- <includes>
- <include implementation="java.lang.String">**/*Test.*</include>
- </includes>
+ <forkMode>pertest</forkMode>
+ <childDelegation>false</childDelegation>
+ <useFile>true</useFile>
+ <argLine>-Xmx512M</argLine>
+
+ <systemProperties>
+ <property>
+ <name>org.apache.activemq.default.directory.prefix</name>
+ <value>target/</value>
+ </property>
+ <property>
+ <name>log4j.configuration</name>
+ <value>file:target/test-classes/log4j.properties</value>
+ </property>
+ </systemProperties>
</configuration>
</plugin>
-
</plugins>
</build>
<dependencies>
<dependency>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- </dependency>
- <dependency>
- <groupId>directory</groupId>
- <artifactId>apacheds-core</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>directory</groupId>
- <artifactId>apacheds-shared</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>directory-shared</groupId>
- <artifactId>apache-ldapber-provider</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>directory-shared</groupId>
- <artifactId>ldap-common</artifactId>
- <scope>test</scope>
- </dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </dependency>
<dependency>
- <groupId>directory-asn1</groupId>
- <artifactId>asn1-codec</artifactId>
- <scope>test</scope>
+ <groupId>commons-collections</groupId>
+ <artifactId>commons-collections</artifactId>
+ <scope>test</scope>
</dependency>
<dependency>
- <groupId>directory-asn1</groupId>
- <artifactId>asn1-der</artifactId>
+ <groupId>org.apache.directory.server</groupId>
+ <artifactId>apacheds-core-integ</artifactId>
+ <version>${directory-version}</version>
<scope>test</scope>
- </dependency>
+ </dependency>
+
<dependency>
- <groupId>directory-shared</groupId>
- <artifactId>kerberos-common</artifactId>
+ <groupId>org.apache.directory.server</groupId>
+ <artifactId>apacheds-server-integ</artifactId>
+ <version>${directory-version}</version>
<scope>test</scope>
- </dependency>
+ </dependency>
+
<dependency>
- <groupId>directory-network</groupId>
- <artifactId>mina</artifactId>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
- <groupId>directory-protocols</groupId>
- <artifactId>kerberos-protocol</artifactId>
+ <groupId>org.apache.xbean</groupId>
+ <artifactId>xbean-spring</artifactId>
+ <optional>true</optional>
<scope>test</scope>
</dependency>
<dependency>
- <groupId>directory-protocols</groupId>
- <artifactId>ldap-protocol</artifactId>
- <scope>test</scope>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
</dependency>
<dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
+ <groupId>org.slf4j</groupId>
+ <artifactId>nlog4j</artifactId>
+ <version>${nlog4j-version}</version>
<scope>test</scope>
</dependency>
</dependencies>
Modified: activemq/trunk/activemq-jaas/src/main/java/org/apache/activemq/jaas/LDAPLoginModule.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-jaas/src/main/java/org/apache/activemq/jaas/LDAPLoginModule.java?rev=769838&r1=769837&r2=769838&view=diff
==============================================================================
--- activemq/trunk/activemq-jaas/src/main/java/org/apache/activemq/jaas/LDAPLoginModule.java (original)
+++ activemq/trunk/activemq-jaas/src/main/java/org/apache/activemq/jaas/LDAPLoginModule.java Wed Apr 29 17:14:15 2009
@@ -77,48 +77,35 @@
protected DirContext context;
private Subject subject;
- private CallbackHandler handler;
- private String initialContextFactory;
- private String connectionURL;
- private String connectionUsername;
- private String connectionPassword;
- private String connectionProtocol;
- private String authentication;
- private String userBase;
- private String roleBase;
- private String roleName;
- private String userRoleName;
+ private CallbackHandler handler;
+ private LDAPLoginProperty [] config;
private String username;
- private MessageFormat userSearchMatchingFormat;
- private MessageFormat roleSearchMatchingFormat;
- private boolean userSearchSubtreeBool;
- private boolean roleSearchSubtreeBool;
private Set<GroupPrincipal> groups = new HashSet<GroupPrincipal>();
public void initialize(Subject subject, CallbackHandler callbackHandler, Map sharedState, Map options) {
this.subject = subject;
this.handler = callbackHandler;
- initialContextFactory = (String)options.get(INITIAL_CONTEXT_FACTORY);
- connectionURL = (String)options.get(CONNECTION_URL);
- connectionUsername = (String)options.get(CONNECTION_USERNAME);
- connectionPassword = (String)options.get(CONNECTION_PASSWORD);
- connectionProtocol = (String)options.get(CONNECTION_PROTOCOL);
- authentication = (String)options.get(AUTHENTICATION);
- userBase = (String)options.get(USER_BASE);
- String userSearchMatching = (String)options.get(USER_SEARCH_MATCHING);
- String userSearchSubtree = (String)options.get(USER_SEARCH_SUBTREE);
- roleBase = (String)options.get(ROLE_BASE);
- roleName = (String)options.get(ROLE_NAME);
- String roleSearchMatching = (String)options.get(ROLE_SEARCH_MATCHING);
- String roleSearchSubtree = (String)options.get(ROLE_SEARCH_SUBTREE);
- userRoleName = (String)options.get(USER_ROLE_NAME);
- userSearchMatchingFormat = new MessageFormat(userSearchMatching);
- roleSearchMatchingFormat = new MessageFormat(roleSearchMatching);
- userSearchSubtreeBool = Boolean.valueOf(userSearchSubtree).booleanValue();
- roleSearchSubtreeBool = Boolean.valueOf(roleSearchSubtree).booleanValue();
+
+ config = new LDAPLoginProperty [] {
+ new LDAPLoginProperty (INITIAL_CONTEXT_FACTORY, (String)options.get(INITIAL_CONTEXT_FACTORY)),
+ new LDAPLoginProperty (CONNECTION_URL, (String)options.get(CONNECTION_URL)),
+ new LDAPLoginProperty (CONNECTION_USERNAME, (String)options.get(CONNECTION_USERNAME)),
+ new LDAPLoginProperty (CONNECTION_PASSWORD, (String)options.get(CONNECTION_PASSWORD)),
+ new LDAPLoginProperty (CONNECTION_PROTOCOL, (String)options.get(CONNECTION_PROTOCOL)),
+ new LDAPLoginProperty (AUTHENTICATION, (String)options.get(AUTHENTICATION)),
+ new LDAPLoginProperty (USER_BASE, (String)options.get(USER_BASE)),
+ new LDAPLoginProperty (USER_SEARCH_MATCHING, (String)options.get(USER_SEARCH_MATCHING)),
+ new LDAPLoginProperty (USER_SEARCH_SUBTREE, (String)options.get(USER_SEARCH_SUBTREE)),
+ new LDAPLoginProperty (ROLE_BASE, (String)options.get(ROLE_BASE)),
+ new LDAPLoginProperty (ROLE_NAME, (String)options.get(ROLE_NAME)),
+ new LDAPLoginProperty (ROLE_SEARCH_MATCHING, (String)options.get(ROLE_SEARCH_MATCHING)),
+ new LDAPLoginProperty (ROLE_SEARCH_SUBTREE, (String)options.get(ROLE_SEARCH_SUBTREE)),
+ new LDAPLoginProperty (USER_ROLE_NAME, (String)options.get(USER_ROLE_NAME)),
+ };
}
public boolean login() throws LoginException {
+
Callback[] callbacks = new Callback[2];
callbacks[0] = new NameCallback("User name");
@@ -130,12 +117,17 @@
} catch (UnsupportedCallbackException uce) {
throw (LoginException)new LoginException().initCause(uce);
}
+
+ String password;
+
username = ((NameCallback)callbacks[0]).getName();
- String password = new String(((PasswordCallback)callbacks[1]).getPassword());
-
- if (username == null || "".equals(username) || password == null || "".equals(password)) {
- return false;
- }
+ if (username == null)
+ return false;
+
+ if (((PasswordCallback)callbacks[1]).getPassword() != null)
+ password = new String(((PasswordCallback)callbacks[1]).getPassword());
+ else
+ password="";
try {
boolean result = authenticate(username, password);
@@ -179,8 +171,17 @@
protected boolean authenticate(String username, String password) throws Exception {
+ MessageFormat userSearchMatchingFormat;
+ boolean userSearchSubtreeBool;
+
DirContext context = null;
context = open();
+
+ if (!isLoginPropertySet(USER_SEARCH_MATCHING))
+ return false;
+
+ userSearchMatchingFormat = new MessageFormat(getLDAPPropertyValue(USER_SEARCH_MATCHING));
+ userSearchSubtreeBool = Boolean.valueOf(getLDAPPropertyValue(USER_SEARCH_SUBTREE)).booleanValue();
try {
@@ -196,14 +197,14 @@
// setup attributes
ArrayList<String> list = new ArrayList<String>();
- if (userRoleName != null) {
- list.add(userRoleName);
+ if (isLoginPropertySet(USER_ROLE_NAME)) {
+ list.add(getLDAPPropertyValue(USER_ROLE_NAME));
}
String[] attribs = new String[list.size()];
list.toArray(attribs);
constraints.setReturningAttributes(attribs);
- NamingEnumeration results = context.search(userBase, filter, constraints);
+ NamingEnumeration results = context.search(getLDAPPropertyValue(USER_BASE), filter, constraints);
if (results == null || !results.hasMore()) {
return false;
@@ -216,7 +217,7 @@
}
NameParser parser = context.getNameParser("");
Name contextName = parser.parse(context.getNameInNamespace());
- Name baseName = parser.parse(userBase);
+ Name baseName = parser.parse(getLDAPPropertyValue(USER_BASE));
Name entryName = parser.parse(result.getName());
Name name = contextName.addAll(baseName);
name = name.addAll(entryName);
@@ -227,8 +228,8 @@
return false;
}
ArrayList<String> roles = null;
- if (userRoleName != null) {
- roles = addAttributeValues(userRoleName, attrs, roles);
+ if (isLoginPropertySet(USER_ROLE_NAME)) {
+ roles = addAttributeValues(getLDAPPropertyValue(USER_ROLE_NAME), attrs, roles);
}
// check the credentials by binding to server
@@ -255,10 +256,15 @@
protected ArrayList<String> getRoles(DirContext context, String dn, String username, ArrayList<String> currentRoles) throws NamingException {
ArrayList<String> list = currentRoles;
+ MessageFormat roleSearchMatchingFormat;
+ boolean roleSearchSubtreeBool;
+ roleSearchMatchingFormat = new MessageFormat(getLDAPPropertyValue(ROLE_SEARCH_MATCHING));
+ roleSearchSubtreeBool = Boolean.valueOf(getLDAPPropertyValue(ROLE_SEARCH_SUBTREE)).booleanValue();
+
if (list == null) {
list = new ArrayList<String>();
}
- if (roleName == null || "".equals(roleName)) {
+ if (!isLoginPropertySet(ROLE_NAME)) {
return list;
}
String filter = roleSearchMatchingFormat.format(new String[] {
@@ -271,14 +277,14 @@
} else {
constraints.setSearchScope(SearchControls.ONELEVEL_SCOPE);
}
- NamingEnumeration results = context.search(roleBase, filter, constraints);
+ NamingEnumeration results = context.search(getLDAPPropertyValue(ROLE_BASE), filter, constraints);
while (results.hasMore()) {
SearchResult result = (SearchResult)results.next();
Attributes attrs = result.getAttributes();
if (attrs == null) {
continue;
}
- list = addAttributeValues(roleName, attrs, list);
+ list = addAttributeValues(getLDAPPropertyValue(ROLE_NAME), attrs, list);
}
return list;
@@ -325,14 +331,14 @@
log.debug("Authentication failed for dn=" + dn);
}
- if (connectionUsername != null) {
- context.addToEnvironment(Context.SECURITY_PRINCIPAL, connectionUsername);
+ if (isLoginPropertySet(CONNECTION_USERNAME)) {
+ context.addToEnvironment(Context.SECURITY_PRINCIPAL, getLDAPPropertyValue(CONNECTION_USERNAME));
} else {
context.removeFromEnvironment(Context.SECURITY_PRINCIPAL);
}
- if (connectionPassword != null) {
- context.addToEnvironment(Context.SECURITY_CREDENTIALS, connectionPassword);
+ if (isLoginPropertySet(CONNECTION_PASSWORD)) {
+ context.addToEnvironment(Context.SECURITY_CREDENTIALS, getLDAPPropertyValue(CONNECTION_PASSWORD));
} else {
context.removeFromEnvironment(Context.SECURITY_CREDENTIALS);
}
@@ -361,22 +367,18 @@
}
protected DirContext open() throws NamingException {
- if (context != null) {
- return context;
- }
-
try {
Hashtable<String, String> env = new Hashtable<String, String>();
- env.put(Context.INITIAL_CONTEXT_FACTORY, initialContextFactory);
- if (connectionUsername != null || !"".equals(connectionUsername)) {
- env.put(Context.SECURITY_PRINCIPAL, connectionUsername);
- }
- if (connectionPassword != null || !"".equals(connectionPassword)) {
- env.put(Context.SECURITY_CREDENTIALS, connectionPassword);
- }
- env.put(Context.SECURITY_PROTOCOL, connectionProtocol);
- env.put(Context.PROVIDER_URL, connectionURL);
- env.put(Context.SECURITY_AUTHENTICATION, authentication);
+ env.put(Context.INITIAL_CONTEXT_FACTORY, getLDAPPropertyValue(INITIAL_CONTEXT_FACTORY));
+ if (isLoginPropertySet(CONNECTION_USERNAME)) {
+ env.put(Context.SECURITY_PRINCIPAL, getLDAPPropertyValue(CONNECTION_USERNAME));
+ }
+ if (isLoginPropertySet(CONNECTION_PASSWORD)) {
+ env.put(Context.SECURITY_CREDENTIALS, getLDAPPropertyValue(CONNECTION_PASSWORD));
+ }
+ env.put(Context.SECURITY_PROTOCOL, getLDAPPropertyValue(CONNECTION_PROTOCOL));
+ env.put(Context.PROVIDER_URL, getLDAPPropertyValue(CONNECTION_URL));
+ env.put(Context.SECURITY_AUTHENTICATION, getLDAPPropertyValue(AUTHENTICATION));
context = new InitialDirContext(env);
} catch (NamingException e) {
@@ -385,5 +387,20 @@
}
return context;
}
+
+ private String getLDAPPropertyValue (String propertyName){
+ for (int i=0; i < config.length; i++ )
+ if (config[i].getPropertyName() == propertyName)
+ return config[i].getPropertyValue();
+ return null;
+ }
+
+ private boolean isLoginPropertySet(String propertyName) {
+ for (int i=0; i < config.length; i++ ) {
+ if (config[i].getPropertyName() == propertyName && config[i].getPropertyValue() != null)
+ return true;
+ }
+ return false;
+ }
}
Added: activemq/trunk/activemq-jaas/src/main/java/org/apache/activemq/jaas/LDAPLoginProperty.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-jaas/src/main/java/org/apache/activemq/jaas/LDAPLoginProperty.java?rev=769838&view=auto
==============================================================================
--- activemq/trunk/activemq-jaas/src/main/java/org/apache/activemq/jaas/LDAPLoginProperty.java (added)
+++ activemq/trunk/activemq-jaas/src/main/java/org/apache/activemq/jaas/LDAPLoginProperty.java Wed Apr 29 17:14:15 2009
@@ -0,0 +1,40 @@
+/**
+ * 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.
+ */
+
+package org.apache.activemq.jaas;
+
+public class LDAPLoginProperty {
+ private String name;
+ private String value;
+
+ public LDAPLoginProperty(String name) {
+ this.name = name;
+ }
+
+ public LDAPLoginProperty(String name, String value) {
+ this.name = name;
+ this.value = value;
+ }
+
+ public String getPropertyName() {
+ return this.name;
+ }
+ public String getPropertyValue() {
+ return this.value;
+ }
+
+}
Modified: activemq/trunk/activemq-jaas/src/test/java/org/apache/activemq/jaas/LDAPLoginModuleTest.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-jaas/src/test/java/org/apache/activemq/jaas/LDAPLoginModuleTest.java?rev=769838&r1=769837&r2=769838&view=diff
==============================================================================
--- activemq/trunk/activemq-jaas/src/test/java/org/apache/activemq/jaas/LDAPLoginModuleTest.java (original)
+++ activemq/trunk/activemq-jaas/src/test/java/org/apache/activemq/jaas/LDAPLoginModuleTest.java Wed Apr 29 17:14:15 2009
@@ -16,12 +16,13 @@
*/
package org.apache.activemq.jaas;
-import java.io.File;
+import static org.junit.Assert.assertTrue;
+
import java.io.IOException;
-import java.net.InetAddress;
+import java.net.URL;
import java.util.HashSet;
import java.util.Hashtable;
-import java.util.Properties;
+
import javax.naming.Context;
import javax.naming.NameClassPair;
import javax.naming.NamingEnumeration;
@@ -35,40 +36,60 @@
import javax.security.auth.login.LoginContext;
import javax.security.auth.login.LoginException;
-import junit.framework.TestCase;
+import org.apache.directory.server.core.integ.Level;
+import org.apache.directory.server.core.integ.annotations.ApplyLdifs;
+import org.apache.directory.server.core.integ.annotations.CleanupLevel;
+import org.apache.directory.server.integ.SiRunner;
+import org.apache.directory.server.ldap.LdapService;
+import org.junit.Test;
+import org.junit.runner.RunWith;
-import org.apache.activemq.jaas.ldap.MutableServerStartupConfiguration;
-import org.apache.activemq.jaas.ldap.ServerContextFactory;
-import org.apache.ldap.server.configuration.ShutdownConfiguration;
-import org.apache.ldap.server.jndi.CoreContextFactory;
-/**
- * @version $Rev: $ $Date: $
- */
-public class LDAPLoginModuleTest extends TestCase {
-
+@RunWith ( SiRunner.class )
+@CleanupLevel ( Level.CLASS )
+@ApplyLdifs( {
+ "dn: uid=first,ou=system\n" +
+ "uid: first\n" +
+ "userPassword: secret\n" +
+ "objectClass: account\n" +
+ "objectClass: simpleSecurityObject\n" +
+ "objectClass: top\n"
+}
+)
+public class LDAPLoginModuleTest {
+
+ static {
+ String path = System.getProperty("java.security.auth.login.config");
+ if (path == null) {
+ URL resource = PropertiesLoginModuleTest.class.getClassLoader().getResource("login.config");
+ if (resource != null) {
+ path = resource.getFile();
+ System.setProperty("java.security.auth.login.config", path);
+ }
+ }
+ }
+
+ private static final String BASE = "ou=system";
+ public static LdapService ldapService;
+ private static final String FILTER = "(objectclass=*)";
+
private static final String PRINCIPAL = "uid=admin,ou=system";
private static final String CREDENTIALS = "secret";
-
- public void testNothing() {
- }
-
+
@SuppressWarnings("unchecked")
+ @Test
public void testRunning() throws Exception {
Hashtable env = new Hashtable();
- env.put(Context.PROVIDER_URL, "ldap://localhost:9389");
+ env.put(Context.PROVIDER_URL, "ldap://localhost:1024");
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, PRINCIPAL);
env.put(Context.SECURITY_CREDENTIALS, CREDENTIALS);
DirContext ctx = new InitialDirContext(env);
- // Perform search using URL
- // NamingEnumeration answer = ctx.search(
- // "ldap://localhost:389/ou=system", "(uid=admin)", null);
HashSet set = new HashSet();
NamingEnumeration list = ctx.list("ou=system");
@@ -85,8 +106,9 @@
assertTrue(set.contains("prefNodeName=sysPrefRoot"));
}
-
- public void xtestLogin() throws LoginException {
+
+ @Test
+ public void testLogin() throws LoginException {
LoginContext context = new LoginContext("LDAPLogin", new CallbackHandler() {
public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
for (int i = 0; i < callbacks.length; i++) {
@@ -104,39 +126,4 @@
context.logout();
}
- @SuppressWarnings("unchecked")
- public void setUp() throws Exception {
- MutableServerStartupConfiguration startup = new MutableServerStartupConfiguration();
- // put some mandatory JNDI properties here
- startup.setWorkingDirectory(new File("target/ldap"));
- startup.setAllowAnonymousAccess(true);
- startup.setLdapPort(9389);
- startup.setEnableNetworking(true);
- startup.setHost(InetAddress.getByName("localhost"));
-
- Properties env = new Properties();
- env.putAll(startup.toJndiEnvironment());
- env.put(Context.INITIAL_CONTEXT_FACTORY, ServerContextFactory.class.getName());
- env.put(Context.PROVIDER_URL, "ou=system");
- env.put(Context.SECURITY_AUTHENTICATION, "simple");
- env.put(Context.SECURITY_PRINCIPAL, PRINCIPAL);
- env.put(Context.SECURITY_CREDENTIALS, CREDENTIALS);
-
- //Fire it up
- new InitialDirContext(env);
- }
-
- @SuppressWarnings("unchecked")
- public void tearDown() throws Exception {
- Properties env = new Properties();
- env.putAll(new ShutdownConfiguration().toJndiEnvironment());
- env.put(Context.INITIAL_CONTEXT_FACTORY, CoreContextFactory.class.getName());
- env.put(Context.PROVIDER_URL, "ou=system");
- env.put(Context.SECURITY_AUTHENTICATION, "simple");
- env.put(Context.SECURITY_PRINCIPAL, PRINCIPAL);
- env.put(Context.SECURITY_CREDENTIALS, CREDENTIALS);
-
- //Shut it down
- new InitialDirContext(env);
- }
}
Modified: activemq/trunk/activemq-jaas/src/test/java/org/apache/activemq/jaas/PropertiesLoginModuleTest.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-jaas/src/test/java/org/apache/activemq/jaas/PropertiesLoginModuleTest.java?rev=769838&r1=769837&r2=769838&view=diff
==============================================================================
--- activemq/trunk/activemq-jaas/src/test/java/org/apache/activemq/jaas/PropertiesLoginModuleTest.java (original)
+++ activemq/trunk/activemq-jaas/src/test/java/org/apache/activemq/jaas/PropertiesLoginModuleTest.java Wed Apr 29 17:14:15 2009
@@ -46,7 +46,6 @@
System.setProperty("java.security.auth.login.config", path);
}
}
- System.out.println("Path to login config: " + path);
}
public void testLogin() throws LoginException {
Added: activemq/trunk/activemq-jaas/src/test/resources/log4j.properties
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-jaas/src/test/resources/log4j.properties?rev=769838&view=auto
==============================================================================
--- activemq/trunk/activemq-jaas/src/test/resources/log4j.properties (added)
+++ activemq/trunk/activemq-jaas/src/test/resources/log4j.properties Wed Apr 29 17:14:15 2009
@@ -0,0 +1,35 @@
+## ---------------------------------------------------------------------------
+## 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.
+## ---------------------------------------------------------------------------
+
+#
+# The logging properties used during tests..
+#
+log4j.rootLogger=INFO, out, stdout
+
+log4j.logger.org.apache.activemq=INFO
+
+# CONSOLE appender not used by default
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
+
+# File appender
+log4j.appender.out=org.apache.log4j.FileAppender
+log4j.appender.out.layout=org.apache.log4j.PatternLayout
+log4j.appender.out.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
+log4j.appender.out.file=target/activemq-test.log
+log4j.appender.out.append=true
Modified: activemq/trunk/activemq-jaas/src/test/resources/login.config
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-jaas/src/test/resources/login.config?rev=769838&r1=769837&r2=769838&view=diff
==============================================================================
--- activemq/trunk/activemq-jaas/src/test/resources/login.config (original)
+++ activemq/trunk/activemq-jaas/src/test/resources/login.config Wed Apr 29 17:14:15 2009
@@ -12,7 +12,7 @@
* 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.
+ * limitations under the License.
*/
PropertiesLogin {
org.apache.activemq.jaas.PropertiesLoginModule required
@@ -25,11 +25,18 @@
org.apache.activemq.jaas.LDAPLoginModule required
debug=true
initialContextFactory=com.sun.jndi.ldap.LdapCtxFactory
- connectionURL="ldap://localhost:9389"
+ connectionURL="ldap://localhost:1024"
connectionUsername="uid=admin,ou=system"
connectionPassword=secret
connectionProtocol=s
authentication=simple
+ userBase="ou=system"
+ userSearchMatching="(uid={0})"
+ userSearchSubtree=false
+ roleBase="ou=system"
+ roleName=dummyRoleName
+ roleSearchMatching="(uid={1})"
+ roleSearchSubtree=false
;
};
Modified: activemq/trunk/pom.xml
URL: http://svn.apache.org/viewvc/activemq/trunk/pom.xml?rev=769838&r1=769837&r2=769838&view=diff
==============================================================================
--- activemq/trunk/pom.xml (original)
+++ activemq/trunk/pom.xml Wed Apr 29 17:14:15 2009
@@ -45,7 +45,7 @@
<camel-version>2.0-SNAPSHOT</camel-version>
<cglib-version>2.0</cglib-version>
<commons-beanutils-version>1.6.1</commons-beanutils-version>
- <commons-collections-version>3.1</commons-collections-version>
+ <commons-collections-version>3.2.1</commons-collections-version>
<openjpa-version>1.2.0</openjpa-version>
<commons-dbcp-version>1.2.2</commons-dbcp-version>
<commons-httpclient-version>2.0.1</commons-httpclient-version>
@@ -55,18 +55,19 @@
<directory-asn1-version>0.3.2</directory-asn1-version>
<directory-kerboros-version>0.5</directory-kerboros-version>
<directory-mina-version>0.7.3</directory-mina-version>
- <directory-version>0.9.2</directory-version>
+ <directory-version>1.5.4</directory-version>
<geronimo-version>1.0</geronimo-version>
<howl-version>0.1.8</howl-version>
<hsqldb-version>1.7.2.2</hsqldb-version>
<jdom-version>1.0</jdom-version>
<jetty-version>6.1.9</jetty-version>
<jmock-version>1.0.1</jmock-version>
- <junit-version>3.8.1</junit-version>
+ <junit-version>4.4</junit-version>
<jxta-version>2.0</jxta-version>
<log4j-version>1.2.14</log4j-version>
+ <nlog4j-version>1.2.25</nlog4j-version>
<org-apache-derby-version>10.1.3.1</org-apache-derby-version>
- <org-apache-maven-surefire-plugin-version>2.2</org-apache-maven-surefire-plugin-version>
+ <org-apache-maven-surefire-plugin-version>2.3</org-apache-maven-surefire-plugin-version>
<p2psockets-version>1.1.2</p2psockets-version>
<regexp-version>1.3</regexp-version>
<rome-version>0.8</rome-version>
@@ -853,70 +854,6 @@
<version>${jdom-version}</version>
</dependency>
- <!-- ACTIVEMQ-JAAS Dependencies -->
- <dependency>
- <groupId>directory</groupId>
- <artifactId>apacheds-core</artifactId>
- <version>${directory-version}</version>
- </dependency>
- <dependency>
- <groupId>directory</groupId>
- <artifactId>apacheds-shared</artifactId>
- <version>${directory-version}</version>
- </dependency>
- <dependency>
- <groupId>directory-shared</groupId>
- <artifactId>apache-ldapber-provider</artifactId>
- <version>${directory-version}</version>
- <exclusions>
- <exclusion>
- <groupId>commons-test</groupId>
- <artifactId>commons-test</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>directory-shared</groupId>
- <artifactId>ldap-common</artifactId>
- <version>${directory-version}</version>
- </dependency>
- <dependency>
- <groupId>directory-asn1</groupId>
- <artifactId>asn1-codec</artifactId>
- <version>${directory-asn1-version}</version>
- </dependency>
- <dependency>
- <groupId>directory-asn1</groupId>
- <artifactId>asn1-der</artifactId>
- <version>${directory-asn1-version}</version>
- <exclusions>
- <exclusion>
- <groupId>commons-test</groupId>
- <artifactId>commons-test</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>directory-shared</groupId>
- <artifactId>kerberos-common</artifactId>
- <version>${directory-kerboros-version}</version>
- </dependency>
- <dependency>
- <groupId>directory-network</groupId>
- <artifactId>mina</artifactId>
- <version>${directory-mina-version}</version>
- </dependency>
- <dependency>
- <groupId>directory-protocols</groupId>
- <artifactId>kerberos-protocol</artifactId>
- <version>${directory-kerboros-version}</version>
- </dependency>
- <dependency>
- <groupId>directory-protocols</groupId>
- <artifactId>ldap-protocol</artifactId>
- <version>${directory-version}</version>
- </dependency>
-
<dependency>
<groupId>p2psockets</groupId>
<artifactId>p2psockets-core</artifactId>