You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by am...@apache.org on 2004/11/20 10:13:13 UTC

svn commit: r105957 - in geronimo/trunk/modules/security/src: java/org/apache/geronimo/security/jaas test/org/apache/geronimo/security/jaas

Author: ammulder
Date: Sat Nov 20 01:13:11 2004
New Revision: 105957

Modified:
   geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jaas/GeronimoLoginConfiguration.java
   geronimo/trunk/modules/security/src/test/org/apache/geronimo/security/jaas/ConfigurationEntryTest.java
Log:
Fix automatic coordinator mapping and add a test for it


Modified: geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jaas/GeronimoLoginConfiguration.java
==============================================================================
--- geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jaas/GeronimoLoginConfiguration.java	(original)
+++ geronimo/trunk/modules/security/src/java/org/apache/geronimo/security/jaas/GeronimoLoginConfiguration.java	Sat Nov 20 01:13:11 2004
@@ -46,7 +46,7 @@
 
     private static Map entries = new Hashtable();
     private Configuration oldConfiguration;
-    private Kernel kernel;
+    private static Kernel kernel; //todo: this restricts you to one Kernel per JVM
 
     public GeronimoLoginConfiguration(Kernel kernel) {
         this.kernel = kernel;
@@ -92,7 +92,13 @@
         if (sm != null) sm.checkPermission(SecurityService.CONFIGURE);
 
         if (entries.containsKey(realm.getRealmName())) throw new java.lang.IllegalArgumentException("ConfigurationEntry already registered");
-        entries.put(realm.getRealmName(), new AppConfigurationEntry("org.apache.geronimo.security.jaas.JaasLoginCoordinator", AppConfigurationEntry.LoginModuleControlFlag.REQUIRED, new Properties()));
+        Map options = new HashMap();
+        options.put("realm", realm.getRealmName());
+        if(kernel != null) {
+            options.put("kernel", kernel.getKernelName());
+        }
+
+        entries.put(realm.getRealmName(), new AppConfigurationEntry("org.apache.geronimo.security.jaas.JaasLoginCoordinator", AppConfigurationEntry.LoginModuleControlFlag.REQUIRED, options));
     }
 
     public static void unRegister(String name) {

Modified: geronimo/trunk/modules/security/src/test/org/apache/geronimo/security/jaas/ConfigurationEntryTest.java
==============================================================================
--- geronimo/trunk/modules/security/src/test/org/apache/geronimo/security/jaas/ConfigurationEntryTest.java	(original)
+++ geronimo/trunk/modules/security/src/test/org/apache/geronimo/security/jaas/ConfigurationEntryTest.java	Sat Nov 20 01:13:11 2004
@@ -55,6 +55,7 @@
     protected ObjectName serverStub;
 
     public void test() throws Exception {
+        // First try with explicit configuration entry
         LoginContext context = new LoginContext("properties-client", new AbstractTest.UsernamePasswordCallback("alan", "starcraft"));
 
         context.login();
@@ -72,6 +73,27 @@
         assertTrue("server subject should have two realm principals ("+subject.getPrincipals(RealmPrincipal.class).size()+")", subject.getPrincipals(RealmPrincipal.class).size() == 2);
         assertTrue("server subject should have five principals ("+subject.getPrincipals().size()+")", subject.getPrincipals().size() == 5);
         RealmPrincipal principal = (RealmPrincipal) subject.getPrincipals(RealmPrincipal.class).iterator().next();
+        assertTrue("id of principal should be non-zero", principal.getId() != 0);
+
+        context.logout();
+
+        assertTrue("id of subject should be null", ContextManager.getSubjectId(subject) == null);
+
+        // next try the automatic configuration entry
+        context = new LoginContext("properties-realm", new AbstractTest.UsernamePasswordCallback("alan", "starcraft"));
+
+        context.login();
+        subject = context.getSubject();
+        assertTrue("expected non-null client subject", subject != null);
+        subject = ContextManager.getServerSideSubject(subject);
+
+        assertTrue("expected non-null server subject", subject != null);
+        assertTrue("server subject should have one remote principal", subject.getPrincipals(IdentificationPrincipal.class).size() == 1);
+        remote = (IdentificationPrincipal) subject.getPrincipals(IdentificationPrincipal.class).iterator().next();
+        assertTrue("server subject should be associated with remote id", ContextManager.getRegisteredSubject(remote.getId()) != null);
+        assertTrue("server subject should have two realm principals ("+subject.getPrincipals(RealmPrincipal.class).size()+")", subject.getPrincipals(RealmPrincipal.class).size() == 2);
+        assertTrue("server subject should have five principals ("+subject.getPrincipals().size()+")", subject.getPrincipals().size() == 5);
+        principal = (RealmPrincipal) subject.getPrincipals(RealmPrincipal.class).iterator().next();
         assertTrue("id of principal should be non-zero", principal.getId() != 0);
 
         context.logout();