You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "Barbara Pruijn (JIRA)" <ji...@apache.org> on 2018/02/27 18:09:00 UTC

[jira] [Resolved] (GEODE-1535) NullPointerException from SampleJsonAuthorization with valid credentials

     [ https://issues.apache.org/jira/browse/GEODE-1535?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Barbara Pruijn resolved GEODE-1535.
-----------------------------------
    Resolution: Won't Fix

> NullPointerException from SampleJsonAuthorization with valid credentials
> ------------------------------------------------------------------------
>
>                 Key: GEODE-1535
>                 URL: https://issues.apache.org/jira/browse/GEODE-1535
>             Project: Geode
>          Issue Type: Bug
>          Components: security
>            Reporter: Dan Smith
>            Priority: Major
>              Labels: bug-hunt
>
> I'm trying to configure a client to connect with authorization using the SampleJsonAuthorization class. I got the below NPE when trying to connect.
> {code}
> com.gemstone.gemfire.cache.client.ServerOperationException: remote server on 172.16.115.238(72978:loner):60610:2e0de43c: : While performing a remote put
> 	at com.gemstone.gemfire.cache.client.internal.PutOp$PutOpImpl.processAck(PutOp.java:445)
> 	at com.gemstone.gemfire.cache.client.internal.PutOp$PutOpImpl.processResponse(PutOp.java:355)
> 	at com.gemstone.gemfire.cache.client.internal.PutOp$PutOpImpl.attemptReadResponse(PutOp.java:540)
> 	at com.gemstone.gemfire.cache.client.internal.AbstractOp.attempt(AbstractOp.java:378)
> 	at com.gemstone.gemfire.cache.client.internal.ConnectionImpl.execute(ConnectionImpl.java:274)
> 	at com.gemstone.gemfire.cache.client.internal.pooling.PooledConnection.execute(PooledConnection.java:328)
> 	at com.gemstone.gemfire.cache.client.internal.OpExecutorImpl.executeWithPossibleReAuthentication(OpExecutorImpl.java:937)
> 	at com.gemstone.gemfire.cache.client.internal.OpExecutorImpl.execute(OpExecutorImpl.java:155)
> 	at com.gemstone.gemfire.cache.client.internal.OpExecutorImpl.execute(OpExecutorImpl.java:110)
> 	at com.gemstone.gemfire.cache.client.internal.PoolImpl.execute(PoolImpl.java:700)
> 	at com.gemstone.gemfire.cache.client.internal.PutOp.execute(PutOp.java:102)
> 	at com.gemstone.gemfire.cache.client.internal.ServerRegionProxy.put(ServerRegionProxy.java:175)
> 	at com.gemstone.gemfire.internal.cache.LocalRegion.serverPut(LocalRegion.java:3061)
> 	at com.gemstone.gemfire.internal.cache.LocalRegion.cacheWriteBeforePut(LocalRegion.java:3188)
> 	at com.gemstone.gemfire.internal.cache.ProxyRegionMap.basicPut(ProxyRegionMap.java:230)
> 	at com.gemstone.gemfire.internal.cache.LocalRegion.virtualPut(LocalRegion.java:5845)
> 	at com.gemstone.gemfire.internal.cache.LocalRegionDataView.putEntry(LocalRegionDataView.java:132)
> 	at com.gemstone.gemfire.internal.cache.LocalRegion.basicPut(LocalRegion.java:5240)
> 	at com.gemstone.gemfire.internal.cache.LocalRegion.validatedPut(LocalRegion.java:1557)
> 	at com.gemstone.gemfire.internal.cache.LocalRegion.put(LocalRegion.java:1544)
> 	at com.gemstone.gemfire.internal.cache.AbstractRegion.put(AbstractRegion.java:288)
> 	at TestClient.test(TestClient.java:20)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:498)
> 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
> 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
> 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
> 	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
> 	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
> 	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
> 	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
> 	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
> 	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
> 	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
> 	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
> 	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
> 	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:119)
> 	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:42)
> 	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:234)
> 	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:74)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:498)
> 	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
> Caused by: java.lang.NullPointerException
> 	at org.apache.shiro.authz.permission.WildcardPermission.implies(WildcardPermission.java:205)
> 	at com.gemstone.gemfire.security.templates.SampleJsonAuthorization.authorizeOperation(SampleJsonAuthorization.java:216)
> 	at com.gemstone.gemfire.internal.security.AuthorizeRequest.putAuthorize(AuthorizeRequest.java:143)
> 	at com.gemstone.gemfire.internal.security.AuthorizeRequest.putAuthorize(AuthorizeRequest.java:132)
> 	at com.gemstone.gemfire.internal.cache.tier.sockets.command.Put65.cmdExecute(Put65.java:271)
> 	at com.gemstone.gemfire.internal.cache.tier.sockets.BaseCommand.execute(BaseCommand.java:142)
> 	at com.gemstone.gemfire.internal.cache.tier.sockets.ServerConnection.doNormalMsg(ServerConnection.java:797)
> 	at com.gemstone.gemfire.internal.cache.tier.sockets.ServerConnection.doOneMessage(ServerConnection.java:924)
> 	at com.gemstone.gemfire.internal.cache.tier.sockets.ServerConnection.run(ServerConnection.java:1173)
> 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> 	at com.gemstone.gemfire.internal.cache.tier.sockets.AcceptorImpl$1$1.run(AcceptorImpl.java:519)
> 	at java.lang.Thread.run(Thread.java:745)
> {code}
> This is my security.json file. Note that connecting through gfsh works
> {code}
> {
>   "roles": [
>     {
>       "name": "cluster",
>       "operationsAllowed": [
>         "CLUSTER:MANAGE",
>         "CLUSTER:WRITE",
>         "CLUSTER:READ"
>       ]
>     },
>     {
>       "name": "data",
>       "operationsAllowed": [
>         "DATA:MANAGE",
>         "DATA:WRITE",
>         "DATA:READ",
>         "CLUSTER:READ"
>       ]
>     }
>   ],
>   "users": [
>     {
>       "name": "root",
>       "password": "123",
>       "roles": [
>         "cluster",
>         "data"
>       ]
>     },
>     {
>       "name": "dan",
>       "password": "123",
>       "roles": [
>         "data"
>       ]
>     }
>   ]
> }
> {code}
> And here is my client configuration
> {code}
> import java.util.Properties;
> import com.gemstone.gemfire.LogWriter;
> import com.gemstone.gemfire.distributed.DistributedMember;
> import com.gemstone.gemfire.management.internal.security.ResourceConstants;
> import com.gemstone.gemfire.security.AuthInitialize;
> import com.gemstone.gemfire.security.AuthenticationFailedException;
> public class MyAuthInitialize implements AuthInitialize {
>   @Override public void init(final LogWriter systemLogger, final LogWriter securityLogger)
>     throws AuthenticationFailedException
>   {
>   }
>   @Override
>   public Properties getCredentials(final Properties securityProps, final DistributedMember server, final boolean isPeer)
>     throws AuthenticationFailedException
>   {
>     Properties props = new Properties();
>     props.put(ResourceConstants.USER_NAME, "root");
>     props.put(ResourceConstants.PASSWORD, "123");
>     return props;
>   }
>   @Override public void close() {
>   }
>   public static AuthInitialize create() {
>     return new MyAuthInitialize();
>   }
> }
> public class TestClient {
>   @Test
>   public void test() {
>     ClientCacheFactory factory = new ClientCacheFactory();
>     factory.set("security-client-auth-init", "MyAuthInitialize.create");
>     factory.addPoolServer("localhost", 40404);
> //    factory.setPoolMultiuserAuthentication(true);
>     ClientCache cache = factory.create();
>     Region region = cache.createClientRegionFactory(ClientRegionShortcut.PROXY).create("region");
>      region.put("A","B");
>     region.put("C", "D");
>   }
> }
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)