I am currently working on a REMOTE_USER authenticator [1]. The idea is that you can stick an authenticating proxy in front of Jupyterhub and then it can pass the authenticated user to the hub via an HTTP header (e.g. REMOTE_USER). I actually planned on doing this for CAS (Central Authentication Service) authentication to the hub. I have an authenticating CAS proxy project [2] that I recently added websocket support to (see the websocket branch), and I have this working in development.
If you are using Shibboleth Native SP, you could probably use a very similar approach, and have Apache act as the authenticating proxy. As rgbkrk mentioned, though, you need to make Apache deal with websockets to get the behavior you want.
Are you planning on using Jupyterhub in a federated environment? I would be interested to know more about that.
Thanks,
Carl Waldbieser
[1]
https://github.com/cwaldbieser/jhub_remote_user_authenticator[2]
https://github.com/cwaldbieser/txcasproxy