[
https://issues.apache.org/jira/browse/GEODE-1536?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Dan Smith updated GEODE-1536:
-----------------------------
Labels: bug-hunt (was: )
> Poor documentation and misleading error messages with multi user security
> -------------------------------------------------------------------------
>
> Key: GEODE-1536
> URL: https://issues.apache.org/jira/browse/GEODE-1536
> Project: Geode
> Issue Type: Bug
> Components: security
> Reporter: Dan Smith
> Labels: bug-hunt
>
> I'm trying to connect a client using multi user security authentication.
> I couldn't find any description of how to use this feature in the manuals.
> The javadocs for ClientCacheFactory.setPoolMultiuserAuthentication basically
> provide no information. If you just set that, you get this misleading error
> message:
> {code}
> java.lang.UnsupportedOperationException: Use Pool APIs for doing operations
> when multiuser-secure-mode-enabled is set to true.
> {code}
> What you actually need to do is call cache.createAuthenticatedView. However,
> if you just do that, you get this error message
> {code}
> com.gemstone.gemfire.cache.client.ServerOperationException: remote server on
> 172.16.115.238(73827:loner):60898:2126f43c:
> com.gemstone.gemfire.security.AuthenticationRequiredException: No security-*
> properties are provided
> at
> com.gemstone.gemfire.cache.client.internal.OpExecutorImpl.handleException(OpExecutorImpl.java:671)
> at
> com.gemstone.gemfire.cache.client.internal.OpExecutorImpl.handleException(OpExecutorImpl.java:772)
> at
> com.gemstone.gemfire.cache.client.internal.OpExecutorImpl.handleException(OpExecutorImpl.java:603)
> at
> com.gemstone.gemfire.cache.client.internal.OpExecutorImpl.execute(OpExecutorImpl.java:165)
> 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
> com.gemstone.gemfire.cache.client.internal.ProxyRegion.put(ProxyRegion.java:459)
> at TestClient.test(TestClient.java:29)
> 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: com.gemstone.gemfire.security.AuthenticationRequiredException: No
> security-* properties are provided
> at
> com.gemstone.gemfire.internal.cache.tier.sockets.ServerConnection.getAuthzRequest(ServerConnection.java:1981)
> at
> com.gemstone.gemfire.internal.cache.tier.sockets.command.Put65.cmdExecute(Put65.java:260)
> 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}
> It turns out you also need an AuthInitialize class, which is passed the
> properties from the view. The javadocs make no mention of this fact.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)