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 2016/12/03 16:37:50 UTC

[24/50] tomee git commit: TOMEE-1952 throw denied exception when logged in the request for ejbd more properly

TOMEE-1952 throw denied exception when logged in the request for ejbd more properly


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/2493f404
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/2493f404
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/2493f404

Branch: refs/heads/tomee-1.7.x
Commit: 2493f404f443025ddcfb6707de46b07b61ce4ec0
Parents: f86f5a3
Author: rmannibucau <rm...@apache.org>
Authored: Tue Oct 4 17:08:51 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Tue Oct 4 17:08:51 2016 +0200

----------------------------------------------------------------------
 .../apache/openejb/client/EJBObjectHandler.java |  5 +++
 .../org/apache/openejb/client/EJBResponse.java  |  3 ++
 .../apache/openejb/AuthentWithRequestTest.java  | 44 ++++++++++++++------
 3 files changed, 40 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/2493f404/server/openejb-client/src/main/java/org/apache/openejb/client/EJBObjectHandler.java
----------------------------------------------------------------------
diff --git a/server/openejb-client/src/main/java/org/apache/openejb/client/EJBObjectHandler.java b/server/openejb-client/src/main/java/org/apache/openejb/client/EJBObjectHandler.java
index 7923b70..cac4399 100644
--- a/server/openejb-client/src/main/java/org/apache/openejb/client/EJBObjectHandler.java
+++ b/server/openejb-client/src/main/java/org/apache/openejb/client/EJBObjectHandler.java
@@ -307,6 +307,11 @@ public abstract class EJBObjectHandler extends EJBInvocationHandler {
                 throw new ApplicationException((ThrowableArtifact) getResult(res));
             case ResponseCodes.EJB_OK:
                 return getResult(res);
+            case ResponseCodes.AUTH_DENIED:
+                final Object result = res.getResult();
+                if (ThrowableArtifact.class.isInstance(result)) {
+                    throw ThrowableArtifact.class.cast(result).getThrowable();
+                } // else it be a remote exception
             default:
                 throw new RemoteException("Received invalid response code from server: " + res.getResponseCode());
         }

http://git-wip-us.apache.org/repos/asf/tomee/blob/2493f404/server/openejb-client/src/main/java/org/apache/openejb/client/EJBResponse.java
----------------------------------------------------------------------
diff --git a/server/openejb-client/src/main/java/org/apache/openejb/client/EJBResponse.java b/server/openejb-client/src/main/java/org/apache/openejb/client/EJBResponse.java
index 04c8c29..46959eb 100644
--- a/server/openejb-client/src/main/java/org/apache/openejb/client/EJBResponse.java
+++ b/server/openejb-client/src/main/java/org/apache/openejb/client/EJBResponse.java
@@ -110,6 +110,9 @@ public class EJBResponse implements ClusterableResponse {
             case ResponseCodes.EJB_SYS_EXCEPTION:
                 s = new StringBuffer("EJB_SYS_EXCEPTION");
                 break;
+            case ResponseCodes.AUTH_DENIED:
+                s = new StringBuffer("AUTH_DENIED");
+                break;
             default:
                 s = new StringBuffer("UNKNOWN_RESPONSE");
         }

http://git-wip-us.apache.org/repos/asf/tomee/blob/2493f404/server/openejb-ejbd/src/test/java/org/apache/openejb/AuthentWithRequestTest.java
----------------------------------------------------------------------
diff --git a/server/openejb-ejbd/src/test/java/org/apache/openejb/AuthentWithRequestTest.java b/server/openejb-ejbd/src/test/java/org/apache/openejb/AuthentWithRequestTest.java
index 70d834d..4d282f7 100644
--- a/server/openejb-ejbd/src/test/java/org/apache/openejb/AuthentWithRequestTest.java
+++ b/server/openejb-ejbd/src/test/java/org/apache/openejb/AuthentWithRequestTest.java
@@ -33,6 +33,7 @@ import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
+import javax.ejb.EJBException;
 import javax.ejb.Remote;
 import javax.ejb.Stateless;
 import javax.naming.Context;
@@ -49,6 +50,7 @@ import java.util.Properties;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
 
 public class AuthentWithRequestTest {
 
@@ -82,19 +84,37 @@ public class AuthentWithRequestTest {
         assembler.createApplication(config.configureApplication(ejbJar));
 
         try {
+            { // ok case
+                final Context context = new InitialContext(new PropertiesBuilder()
+                        .p(Context.INITIAL_CONTEXT_FACTORY, RemoteInitialContextFactory.class.getName())
+                        .p(Context.PROVIDER_URL, "ejbd://127.0.0.1:" + port)
+                        .p(JNDIContext.AUTHENTICATE_WITH_THE_REQUEST, "true")
+                        .p("java.naming.security.principal", "foo")
+                        .p("java.naming.security.credentials", "bar")
+                        .p("openejb.authentication.realmName", "LM")
+                        .build());
+                final AnInterfaceRemote client = AnInterfaceRemote.class.cast(context.lookup("RemoteWithSecurityRemote"));
+                assertNotNull(client);
+
+                assertEquals("foo", client.call());
+            }
 
-            final Context context = new InitialContext(new PropertiesBuilder()
-                .p(Context.INITIAL_CONTEXT_FACTORY, RemoteInitialContextFactory.class.getName())
-                .p(Context.PROVIDER_URL, "ejbd://127.0.0.1:" + port)
-                .p(JNDIContext.AUTHENTICATE_WITH_THE_REQUEST, "true")
-                .p("java.naming.security.principal", "foo")
-                .p("java.naming.security.credentials", "bar")
-                .p("openejb.authentication.realmName", "LM")
-                .build());
-            final AnInterfaceRemote client = AnInterfaceRemote.class.cast(context.lookup("RemoteWithSecurityRemote"));
-            assertNotNull(client);
-
-            assertEquals("foo", client.call());
+            {// now the failing case
+                final Context context = new InitialContext(new PropertiesBuilder()
+                        .p(Context.INITIAL_CONTEXT_FACTORY, RemoteInitialContextFactory.class.getName())
+                        .p(Context.PROVIDER_URL, "ejbd://127.0.0.1:" + port)
+                        .p(JNDIContext.AUTHENTICATE_WITH_THE_REQUEST, "true")
+                        .p("java.naming.security.principal", "wrong")
+                        .p("java.naming.security.credentials", "wrong")
+                        .p("openejb.authentication.realmName", "LM")
+                        .build());
+                final AnInterfaceRemote client = AnInterfaceRemote.class.cast(context.lookup("RemoteWithSecurityRemote"));
+                try {
+                    client.call();
+                } catch (final EJBException e) {
+                    assertTrue(LoginException.class.isInstance(e.getCause()));
+                }
+            }
         } finally {
             serviceDaemon.stop();
             OpenEJB.destroy();