I agree with you Jez, as long as you consider traditional web architectures.
But nowadays, there is more and more people working with micro-service like architecture where the client is responsible of giving a token to each services to identify itself.
The token is retrieved in the beginning and contains all the needed information of the session, usually in an encrypted way (e.g. JWT), so that the various services (here the same application duplicated) can look it up directly from the data given by the client, usually using a private key only known to the services (again, that's how JWT is meant to work).
It is actually the same discussion as
https://groups.google.com/d/topic/pac4j-users/qjorvxOmSrk/discussion in a way, you should also take a look at it Tamas.
The main difference is that Tamas wants to use the infrastructure provided by pac4j to do the google openid authentication, and it's not as easy as checking credentials in a db as with the other discussion.
Hence the potential need for something from pac4j to use existing authenticators/clients but without enforcing the workflow of indirect clients (so yes, I was wrong, Tamas, you are right to expect pac4j to have an answer to this question, but you are ahead of your time, so it's not yet solved :P).
Maybe another solution would be to use the indirect google openid client to do the authentication but return a JWT token from the callback endpoint so that later on, you can use it to authenticate the user… but I feel there is going to be a lot of hacking to make it work…
Notice that if you expect to only have a few instances of the application on the same network, it would maybe be much easier to use a distributed session store for now and maybe help us on the side to better think about a clean solution with pac4j to the stateless session handling :)