Kerberos authenticator SSO not working

I am having issues getting SSO to work on Jupyterhub. I plan on using kerberos since we have it on our servers. I have scoured the forums for similar issues but haven’t found any resolution. Any clues or tips would be much appreciated.

I have followed the guide for installing the kerberos authenticator for Jupyterhub.

I have looked into the options and tried to configure the ones that seemed relevant.

When I start Jupyterhub and try to access it, this is the response I get on the server (with some changes in addresses/hostnames, ignore the spaces in “host . domain . com : 8000” since there were issues posting hyperlinks in the forum):

\[I 2026-01-20 13:20:22.919 JupyterHub log:192\] 302 GET / → /hub/ (@::ffff:X.X.X.X) 0.53ms
\[I 2026-01-20 13:20:22.930 JupyterHub log:192\] 302 GET /hub/ → /hub/login?next=%2Fhub%2F (@::ffff:X.X.X.X) 0.52ms
\[I 2026-01-20 13:20:22.939 JupyterHub log:192\] 302 GET /hub/login?next=%2Fhub%2F → /hub/kerberos_login?next=%2Fhub%2F (@::ffff:X.X.X.X) 0.66ms
\[E 2026-01-20 13:20:22.951 JupyterHub web:1934\] Uncaught exception GET /hub/kerberos_login?next=%2Fhub%2F (::ffff:X.X.X.X)
HTTPServerRequest(protocol=‘http’, host=‘ host . domain . com : 8000’, method=‘GET’, uri=‘/hub/kerberos_login?next=%2Fhub%2F’, version=‘HTTP/1.1’, remote_ip=‘::ffff:X.X.X.X’)
Traceback (most recent call last):
File “/usr/local/lib64/python3.12/site-packages/tornado/web.py”, line 1848, in \_execute
result = await result
^^^^^^^^^^^^
File “/usr/local/lib/python3.12/site-packages/kerberosauthenticator/auth.py”, line 44, in get
self.raise_auth_required()
File “/usr/local/lib/python3.12/site-packages/kerberosauthenticator/auth.py”, line 32, in raise_auth_required
data = self.render_template(
^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.12/site-packages/jupyterhub/handlers/base.py”, line 1450, in render_template
template = self.get_template(name, sync)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.12/site-packages/jupyterhub/handlers/base.py”, line 1437, in get_template
return self.settings\[key\].get_template(name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.12/site-packages/jinja2/environment.py”, line 1016, in get_template
return self.\_load_template(name, globals)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.12/site-packages/jinja2/environment.py”, line 975, in \_load_template
template = self.loader.load(self, name, self.make_globals(globals))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.12/site-packages/jinja2/loaders.py”, line 607, in load
raise TemplateNotFound(name)
jinja2.exceptions.TemplateNotFound: kerberos_login_error.html

\[E 2026-01-20 13:20:22.999 JupyterHub log:184\] {
“Host”: “host . domain . com : 8000”,
“Connection”: “keep-alive”,
“Upgrade-Insecure-Requests”: “1”,
“User-Agent”: “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36 Edg/144.0.0.0”,
“Accept”: “text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7”,
“Accept-Encoding”: “gzip, deflate”,
“Accept-Language”: “sv,en;q=0.9,en-GB;q=0.8,en-US;q=0.7”,
“Cookie”: “\_xsrf=\[secret\]”,
“X-Forwarded-For”: “::ffff:X.X.X.X”,
“X-Forwarded-Port”: “8000”,
“X-Forwarded-Proto”: “http”,
“X-Forwarded-Host”: “host . domain . com : 8000”