The setup:
Chrome <------- HTTPS w/ SPNEGO -----------> squid <----------- TCP listener w/o TLS / HTTP --------------> Jupyter
GET
requests to establish the initial Jupyter client authenticate with
SPNEGO and return successfully. It's happy to browse through directory
structure and perform actions unrelated to a kernel. Once I attempt to
connect to a kernel, Chrome issues a CONNECT (squid doesn't do
websockets). Squid responds with a 407 but Chrome doesn't send a follow
up to authenticate the CONNECT request. The in-browser Jupyter client
reports it could not connect to the kernel.
Now,
if I turn HTTPS on for the Jupyter listener, everything works as
expected. When I load a kernel, Chrome issues a CONNECT, squid sends a
407, Chrome auths and the CONNECT goes through.
Why am I seeing different 407 behaviors for secure and unsecure upstreams?
For the sake of brevity and discussion, I can't turn on HTTPS for Jupyter.