I've got a Geode system going with locator, server, 2 local native clients, a remote client and HTTPS REST clients.
We now require to further authenticate the REST clients to include username and password checks on REST actions, which means setting up authentication here and here. We setup a security.json
and the ExampleSecurityManager handles the authenticated REST HTTPS requests fine.
Setting up the authentication means that local and remote native clients using TCP also require authentication. So I implemented the AuthInitialize example locally and got these clients to connect to the server, and they run fine too.
However, there's an issue that after a few minutes the clients (both local and remote) lose their connections to the Geode server with the (client) error:
Handshake rejected by server[#.#.#.#:40404]: A previous connection attempt from this client is still being processed: identity(0.0.0.0(MyGeodeClient:3116:loner)
I set the Server logs to finest and get the warnings that:
[finest BST GeodeServer <ServerConnection on port 40404 Thread 24> tid=0xa4] Server connection from [identity(0.0.0.0(MyGeodeClient:3116:loner):2:GFNative_k350A9imTd3116:MyGeodeClient,connection=1; port=57098] received USER_CREDENTIAL_MESSAGE with txid -1
ClientHealthMonitor: Received ping from client with member id identity(0.0.0.0(MyGeodeClient:3116:loner):2:GFNative_k350A9imTd3116:MyGeodeClient,connection=1
Then a lot of attempting to get session; create = false; session is null = true; session has id = false
and then This org.apache.shiro.mgt.DefaultSecurityManager instance does not have a [org.apache.shiro.mgt.RememberMeManager] instance configured. RememberMe services will not be performed for account [test].
and finally
A previous connection attempt from this client is still being processed: identity(0.0.0.0(MyGeodeClient:3116:loner):2:GFNative_k350A9imTd3116:MyGeodeClient,connection=1
[warning BST GeodeServer <Handshaker /#.#.#.#:40404 Thread 0> tid=0x53] CacheClientNotifier: Unsuccessfully registered client with identifier identity(0.0.0.0(MyGeodeClient:3116:loner):2:GFNative_k350A9imTd3116:MyGeodeClient,connection=1
Basically this situation is repeating itself, and then the subscription event handlers fail because they don't get event notifications.
If I reduce the Geode Server logs to info, then the warning
Unsuccessfully registered client with identifier identity(0.0.0.0(MyGeodeClient:3116:loner):2:GFNative_k350A9imTd3116:MyGeodeClient,connection=1
repeats numerous times...
Any pointers please? Is there a way to enable REST authentication without enabling the native client TCP authentication? THANKS