You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2012/08/24 10:46:39 UTC

svn commit: r1376863 - in /openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina: TomEERealm.java realm/LowTypedRealm.java

Author: rmannibucau
Date: Fri Aug 24 08:46:38 2012
New Revision: 1376863

URL: http://svn.apache.org/viewvc?rev=1376863&view=rev
Log:
the test was reversed and overriding hasrole method in tomeerealm to let user use its own one

Modified:
    openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEERealm.java
    openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/realm/LowTypedRealm.java

Modified: openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEERealm.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEERealm.java?rev=1376863&r1=1376862&r2=1376863&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEERealm.java (original)
+++ openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEERealm.java Fri Aug 24 08:46:38 2012
@@ -16,20 +16,29 @@
  */
 package org.apache.tomee.catalina;
 
-import java.security.Principal;
-import java.security.cert.X509Certificate;
-import javax.security.auth.callback.CallbackHandler;
+import org.apache.catalina.Realm;
+import org.apache.catalina.Wrapper;
 import org.apache.catalina.connector.Request;
 import org.apache.catalina.realm.CombinedRealm;
-import org.apache.catalina.realm.JAASRealm;
+import org.apache.catalina.realm.GenericPrincipal;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.spi.SecurityService;
 import org.ietf.jgss.GSSContext;
 
+import java.security.Principal;
+import java.security.cert.X509Certificate;
+
 public class TomEERealm extends CombinedRealm {
+    private static final String INFO = TomEERealm.class.getName() + "/1.0";
+
     private final ThreadLocal<Request> requests = new ThreadLocal<Request>();
 
     @Override
+    public String getInfo() {
+        return INFO;
+    }
+
+    @Override
     public Principal authenticate(String username, String password) {
         return logInTomEE(super.authenticate(username, password));
     }
@@ -51,6 +60,34 @@ public class TomEERealm extends Combined
         return logInTomEE(super.authenticate(gssContext, storeCreds));
     }
 
+    @Override
+    public boolean hasRole(final Wrapper wrapper, final Principal principal, final String rawRole) {
+        String role = rawRole;
+
+        // Check for a role alias defined in a <security-role-ref> element
+        if (wrapper != null) {
+            final String realRole = wrapper.findSecurityReference(role);
+            if (realRole != null) {
+                role = realRole;
+            }
+        }
+
+        if (principal == null || role == null) {
+            return false;
+        }
+
+        if (principal instanceof  GenericPrincipal) {
+            return ((GenericPrincipal) principal).hasRole(role);
+        }
+
+        for (Realm realm : realms) { // when used implicitely (always?) realms.size == 1 so no need of a strategy
+            if (realm.hasRole(wrapper, principal, rawRole)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
     private Principal logInTomEE(final Principal pcp) {
         if (pcp == null) {
             return null;

Modified: openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/realm/LowTypedRealm.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/realm/LowTypedRealm.java?rev=1376863&r1=1376862&r2=1376863&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/realm/LowTypedRealm.java (original)
+++ openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/realm/LowTypedRealm.java Fri Aug 24 08:46:38 2012
@@ -67,7 +67,7 @@ public class LowTypedRealm implements Re
 
     private Method findMethod(final Class<?> clazz, final Class<?>[] argTypes) {
         for (Method mtd : clazz.getMethods()) {
-            if (!Modifier.isAbstract(mtd.getModifiers())) {
+            if (Modifier.isAbstract(mtd.getModifiers())) {
                 continue;
             }