Page 1 of 1

Connecting with Java API problem

PostPosted: Wed Aug 29, 2012 6:41 pm
by chriswood
Hi,

On my local Mac, I have installed omero server and it is runs fine. I am able to connect with Insight, omero.web, and python BlitzGateway. I can connect over the network to my Mac with Insight.

I have written a java program that will not connect to my local machine. It works fine connecting to a server over the network, while other computers cannot connect to my mac using this code.

Everything should be using omero 4.4.1 and ice 3.3.
(The same insight client can connect to both the network server and local server)

It gives a 'Password check failed", but I don't think the password is the problem.

Here is the connection code I am using:
Code: Select all
public void connectOmero(String user, String password, String host, String group) {
      this.host = host;
      Map<String, String> map = new java.util.HashMap<String, String>();
      map.put("omero.host", host);
      map.put("omero.user", user);
      map.put("omero.password", password);
      map.put("omero.group", group);
      map.put("omero.port", "4064");
      
      try {
         omeroClient = new omero.client(map);
         service = omeroClient.createSession();
         service.closeOnDestroy();
      }
      
      catch (CannotCreateSessionException e) {
         e.printStackTrace();
      }
      
      catch (ServerError e) {
         e.printStackTrace();         
      }
      catch (PermissionDeniedException e) {
         e.printStackTrace();
      }
   }


Here is the stack trace
Code: Select all
Glacier2.PermissionDeniedException
    reason = "Password check failed for 'cjw': [id=2]"
No connection
   at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
   at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
   at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
   at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
   at java.lang.Class.newInstance0(Class.java:355)
   at java.lang.Class.newInstance(Class.java:308)
   at IceInternal.BasicStream$DynamicUserExceptionFactory.createAndThrow(BasicStream.java:2243)
   at IceInternal.BasicStream.throwException(BasicStream.java:1632)
   at IceInternal.Outgoing.throwUserException(Outgoing.java:442)
   at Glacier2._RouterDelM.createSession(_RouterDelM.java:42)
   at Glacier2.RouterPrxHelper.createSession(RouterPrxHelper.java:51)
   at Glacier2.RouterPrxHelper.createSession(RouterPrxHelper.java:29)
   at omero.client.createSession(client.java:627)
   at omero.client.createSession(client.java:565)
   at screenimporter.omeroConnection.connectOmero(omeroConnection.java:31)
   at screenimporter.omeroConnection.<init>(omeroConnection.java:17)
   at screenimporter.platetest.main(platetest.java:16)



Here is info from the Blitz log:
Code: Select all
2012-08-29 13:20:01,586 INFO  [        ome.services.util.ServiceHandler] (l.Server-6)  Executor.doWork -- ome.services.sessions.SessionManagerImpl.executeCheckPasswordRO(cjw)
2012-08-29 13:20:01,586 INFO  [        ome.services.util.ServiceHandler] (l.Server-6)  Args:   [null, InternalSF@1506785356]
2012-08-29 13:20:01,589 INFO  [         ome.security.basic.EventHandler] (l.Server-6)  Auth:   user=0,group=0,event=null(Sessions),sess=6e15d5c9-0ad5-4374-9e1e-996cf3cdbdf6
2012-08-29 13:20:01,591 WARN  [  ome.security.auth.LoginAttemptListener] (l.Server-6) 3 failed logins for cjw. Throttling for 3000
2012-08-29 13:20:04,592 INFO  [                 org.perf4j.TimingLogger] (l.Server-6) start[1346264401586] time[3006] tag[omero.call.success.ome.services.sessions.SessionManagerImpl$8.doWork]
2012-08-29 13:20:04,592 INFO  [        ome.services.util.ServiceHandler] (l.Server-6)  Rslt:   false
2012-08-29 13:20:04,592 INFO  [        ome.services.util.ServiceHandler] (l.Server-6)  Executor.doWork -- java.lang.String.cjw
2012-08-29 13:20:04,592 INFO  [        ome.services.util.ServiceHandler] (l.Server-6)  Args:   [null, InternalSF@1506785356]
2012-08-29 13:20:04,594 INFO  [         ome.security.basic.EventHandler] (l.Server-6)  Auth:   user=0,group=0,event=null(Internal),sess=6e15d5c9-0ad5-4374-9e1e-996cf3cdbdf6
2012-08-29 13:20:04,598 INFO  [                 org.perf4j.TimingLogger] (l.Server-6) start[1346264404592] time[6] tag[omero.call.success.ome.services.blitz.fire.PermissionsVerifierI$1.doWork]
2012-08-29 13:20:04,598 INFO  [        ome.services.util.ServiceHandler] (l.Server-6)  Rslt:   null
2012-08-29 13:20:04,813 INFO  [ome.services.sessions.state.SessionCache] (2-thread-1) Synchronizing session cache. Count = 3
2012-08-29 13:20:04,814 INFO  [        ome.services.util.ServiceHandler] (2-thread-1)  Executor.doWork -- ome.services.sessions.SessionManagerImpl.reload(660dc404-6150-4298-b02a-6dad17f935f9)
2012-08-29 13:20:04,814 INFO  [        ome.services.util.ServiceHandler] (2-thread-1)  Args:   [null, InternalSF@1506785356]
2012-08-29 13:20:04,818 INFO  [         ome.security.basic.EventHandler] (2-thread-1)  Auth:   user=0,group=0,event=null(Sessions),sess=6e15d5c9-0ad5-4374-9e1e-996cf3cdbdf6
2012-08-29 13:20:04,829 INFO  [                 org.perf4j.TimingLogger] (2-thread-1) start[1346264404814] time[15] tag[omero.call.success.ome.services.sessions.SessionManagerImpl$6.doWork]
2012-08-29 13:20:04,829 INFO  [        ome.services.util.ServiceHandler] (2-thread-1)  Rslt:   (ome.model.meta.Experimenter:Id_0, ome.model.meta.ExperimenterGroup:Id_0, (0, 1, 3), ... 4 more)
2012-08-29 13:20:04,830 INFO  [        ome.services.util.ServiceHandler] (2-thread-1)  Executor.doWork -- ome.services.sessions.SessionManagerImpl.reload(0b421ac6-e66b-41bd-aab5-71bb3fa40336)
2012-08-29 13:20:04,830 INFO  [        ome.services.util.ServiceHandler] (2-thread-1)  Args:   [null, InternalSF@1506785356]
2012-08-29 13:20:04,838 INFO  [         ome.security.basic.EventHandler] (2-thread-1)  Auth:   user=0,group=0,event=null(Sessions),sess=6e15d5c9-0ad5-4374-9e1e-996cf3cdbdf6
2012-08-29 13:20:04,842 INFO  [                 org.perf4j.TimingLogger] (2-thread-1) start[1346264404830] time[12] tag[omero.call.success.ome.services.sessions.SessionManagerImpl$6.doWork]
2012-08-29 13:20:04,842 INFO  [        ome.services.util.ServiceHandler] (2-thread-1)  Rslt:   (ome.model.meta.Experimenter:Id_0, ome.model.meta.ExperimenterGroup:Id_0, (0, 1, 3), ... 4 more)
2012-08-29 13:20:04,842 INFO  [        ome.services.util.ServiceHandler] (2-thread-1)  Executor.doWork -- ome.services.sessions.SessionManagerImpl.reload(6e15d5c9-0ad5-4374-9e1e-996cf3cdbdf6)
2012-08-29 13:20:04,842 INFO  [        ome.services.util.ServiceHandler] (2-thread-1)  Args:   [null, InternalSF@1506785356]
2012-08-29 13:20:04,845 INFO  [         ome.security.basic.EventHandler] (2-thread-1)  Auth:   user=0,group=0,event=null(Sessions),sess=6e15d5c9-0ad5-4374-9e1e-996cf3cdbdf6
2012-08-29 13:20:04,853 INFO  [                 org.perf4j.TimingLogger] (2-thread-1) start[1346264404842] time[11] tag[omero.call.success.ome.services.sessions.SessionManagerImpl$6.doWork]
2012-08-29 13:20:04,853 INFO  [        ome.services.util.ServiceHandler] (2-thread-1)  Rslt:   (ome.model.meta.Experimenter:Id_0, ome.model.meta.ExperimenterGroup:Id_0, (0, 1, 3), ... 4 more)
2012-08-29 13:20:04,853 INFO  [                 org.perf4j.TimingLogger] (2-thread-1) start[1346264404813] time[40] tag[omero.sessions.synchronization]
2012-08-29 13:20:04,853 INFO  [ome.services.sessions.state.SessionCache] (2-thread-1) Synchronization took 40 ms.

Re: Connecting with Java API problem

PostPosted: Thu Aug 30, 2012 6:30 am
by jmoore
Can you try "omero.pass" rather than "omero.password"? If you want, these values are defined in Constants.ice:

Code: Select all
    // User context for logging in
    const string USERNAME = "omero.user";
    const string PASSWORD = "omero.pass";
    const string GROUP    = "omero.group";
    const string EVENT    = "omero.event";
    const string AGENT    = "omero.agent";


Cheers,
~Josh

Re: Connecting with Java API problem

PostPosted: Thu Aug 30, 2012 2:02 pm
by chriswood
Thanks Josh, that works.

So my question now is, why can I login to our omero server on the network with the wrong password field in the map? I passed '' as the password for a user that is not me, and I was logged in.

Here is a link to an issue we had before with ldap (you wrote an extension for handling our usernames):
http://lists.openmicroscopy.org.uk/pipermail/ome-users/2011-September/002809.html

I copied the jar file over to the 4.4.1 installation and set the configuration; it didn't look like the issue was resolved.

Thanks,
Chris

Re: Connecting with Java API problem

PostPosted: Fri Aug 31, 2012 12:35 pm
by jmoore
Chris,

this is in fact the same issue we had with OMERO 4.3.x. A new release (4.4.3) is available to correct the problem, see:


Thanks for pointing this out!
~Josh

P.S. You should no longer need to use the extensions.jar from 4.3.x. The password is available in the vanilla install as "chainedPasswordProvider431".

Re: Connecting with Java API problem

PostPosted: Thu Sep 06, 2012 2:17 pm
by chriswood
Thanks Josh,

The vanilla install works perfectly.

Chris