When applying a password policy or login policy, customer’s stand-alone relay(s) will not load properly. They are giving an Unable to authenticate Relay user error.
ERROR (12/03) 15:05:42 [com.stoneware.service.application.Relay[relay-SWRelay1]]: Unable to authenticate Relay user.
com.stoneware.server.auth.AuthenticatorException: Multiple authentication exceptions.
at com.stoneware.kernel.level2.CoreService$CoreServiceImpl.a(Noseeum:646)
at com.stoneware.kernel.level2.CoreService$CoreServiceImpl.authenticate(Noseeum:537)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
at sun.rmi.transport.Transport$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown Source)
at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source)
at sun.rmi.server.UnicastRef.invoke(Unknown Source)
at com.stoneware.kernel.level2.PortalService$PortalServiceImpl_Stub.authenticate(Unknown Source)
at com.stoneware.beans.a.f.authenticate(Noseeum:76)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.stoneware.beans.a.d.invoke(Noseeum:67)
at $Proxy7.authenticate(Unknown Source)
at com.stoneware.beans.CoreServicesBean.authenticate(Noseeum:260)
at com.stoneware.relay.managers.RelayManager.a(Noseeum:712)
at com.stoneware.relay.managers.RelayManager.getServerSession(Noseeum:628)
at com.stoneware.relay.managers.e.a(Noseeum:179)
at com.stoneware.relay.managers.RelayManager.getRelayConfiguration(Noseeum:232)
at com.stoneware.jetty.RelayImpl.startup(Noseeum:117)
at com.stoneware.kernel.b.e.c(Noseeum:209)
at com.stoneware.kernel.a.f(Noseeum:170)
at com.stoneware.kernel.f.a(Noseeum:795)
at com.stoneware.kernel.f.e(Noseeum:447)
at com.stoneware.kernel.StonewareLoader.(Noseeum:123)
at com.stoneware.kernel.StonewareLoader.main(Noseeum:157)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.zerog.lax.LAX.launch(DashoA10*..)
at com.zerog.lax.LAX.main(DashoA10*..)
The customer has multiple Stoneware licenses available for download (one for each licensed loader) and had downloaded and installed a separate license on each loader.
Part of the relay user authentication at startup involves hashing the license file on the relay and loader, then comparing the hashes. If the hashes match, it is assumed that the relay user is authenticating during start-up and therefore the policies are not applied. If the hashes do not match, it is assumed the relay user is logging in from a browser and the policies are applied.
For this reason, a customer will need to download only one of their available license files and install it on all their servers.
Customers see multiple license files available for download purely for book keeping purposes, as some customers prefer to have something physical to reflect each purchase they have made.