jupyterhub / the-littlest-jupyterhub

Simple JupyterHub distribution for 1-100 users on a single server
https://tljh.jupyter.org
BSD 3-Clause "New" or "Revised" License
1.01k stars 341 forks source link

hub/auth/change-password doesn't work with FirstUseAuthenticator #938

Open josephmaher opened 10 months ago

josephmaher commented 10 months ago

Bug description

I'm running TLJH on ubuntu 22.04

If I go to

...url.../hub/auth/change-password

I get a dialog box asking me for a new password, but when I type in the new password I get:

403 : Forbidden

'_xsrf' argument missing from POST

and the password doesn't change.

Your personal set up

Full environment ``` attrs==21.2.0 Automat==20.2.0 Babel==2.8.0 bcrypt==3.2.0 blinker==1.4 certifi==2020.6.20 chardet==4.0.0 click==8.0.3 cloud-init==23.2.2 colorama==0.4.4 command-not-found==0.3 configobj==5.0.6 constantly==15.1.0 cryptography==3.4.8 dbus-python==1.2.18 distro==1.7.0 distro-info==1.1+ubuntu0.1 httplib2==0.20.2 hyperlink==21.0.0 idna==3.3 importlib-metadata==4.6.4 incremental==21.3.0 jeepney==0.7.1 Jinja2==3.0.3 jsonpatch==1.32 jsonpointer==2.0 jsonschema==3.2.0 keyring==23.5.0 launchpadlib==1.10.16 lazr.restfulclient==0.14.4 lazr.uri==1.0.6 MarkupSafe==2.0.1 more-itertools==8.10.0 netifaces==0.11.0 oauthlib==3.2.0 packaging==23.1 pexpect==4.8.0 plotly==5.16.1 ptyprocess==0.7.0 pyasn1==0.4.8 pyasn1-modules==0.2.1 PyGObject==3.42.1 PyHamcrest==2.0.2 PyJWT==2.3.0 pyOpenSSL==21.0.0 pyparsing==2.4.7 pyrsistent==0.18.1 pyserial==3.5 python-apt==2.4.0+ubuntu2 python-debian==0.1.43+ubuntu1.1 python-magic==0.4.24 pytz==2022.1 PyYAML==5.4.1 requests==2.25.1 SecretStorage==3.3.1 service-identity==18.1.0 six==1.16.0 sos==4.4 ssh-import-id==5.11 systemd-python==234 tenacity==8.2.3 Twisted==22.1.0 ubuntu-advantage-tools==8001 ufw==0.36.1 unattended-upgrades==0.1 urllib3==1.26.5 wadllib==1.3.6 zipp==1.0.0 zope.interface==5.4.0 ```
Configuration I am using the FirstUseAuthenticator ``` jupyter-admin@juliabox-test:~$ jupyter troubleshoot WARNING conda.gateways.disk.delete:unlink_or_rename_to_trash(140): Could not remove or rename /opt/tljh/user/conda-meta/pip-23.0.1-pyhd8ed1ab_0.json. Please remove this file manually (you may need to reboot to free file handles) WARNING conda.gateways.disk.delete:unlink_or_rename_to_trash(140): Could not remove or rename /opt/tljh/user/conda-meta/pip-23.0.1-pyhd8ed1ab_0.json. Please remove this file manually (you may need to reboot to free file handles) $PATH: /opt/tljh/user/bin /opt/tljh/hub/bin /usr/local/bin /usr/sbin /usr/bin /sbin /bin /snap/bin sys.path: /opt/tljh/user/bin /opt/tljh/user/lib/python310.zip /opt/tljh/user/lib/python3.10 /opt/tljh/user/lib/python3.10/lib-dynload /home/jupyter-admin/.local/lib/python3.10/site-packages /opt/tljh/user/lib/python3.10/site-packages sys.executable: /opt/tljh/user/bin/python sys.version: 3.10.10 | packaged by conda-forge | (main, Mar 24 2023, 20:08:06) [GCC 11.3.0] platform.platform(): Linux-5.15.0-78-generic-x86_64-with-glibc2.35 which -a jupyter: /opt/tljh/user/bin/jupyter pip list: Package Version ------------------------- ----------- alembic 1.11.3 anyio 3.7.1 argon2-cffi 23.1.0 argon2-cffi-bindings 21.2.0 arrow 1.2.3 asttokens 2.2.1 async-generator 1.10 async-lru 2.0.4 attrs 23.1.0 Babel 2.12.1 backcall 0.2.0 bcrypt 4.0.1 beautifulsoup4 4.12.2 bleach 6.0.0 brotlipy 0.7.0 certifi 2022.12.7 certipy 0.1.3 cffi 1.15.1 charset-normalizer 3.1.0 colorama 0.4.6 comm 0.1.4 conda 23.1.0 conda-package-handling 2.0.2 conda_package_streaming 0.7.0 contourpy 1.1.0 cryptography 40.0.1 cycler 0.11.0 debugpy 1.6.7.post1 decorator 5.1.1 defusedxml 0.7.1 exceptiongroup 1.1.3 executing 1.2.0 fastjsonschema 2.18.0 fonttools 4.42.0 fqdn 1.5.1 greenlet 2.0.2 idna 3.4 ipykernel 6.25.1 ipython 8.14.0 ipywidgets 8.1.0 isoduration 20.11.0 jedi 0.19.0 Jinja2 3.1.2 json5 0.9.14 jsonpointer 2.4 jsonschema 4.19.0 jsonschema-specifications 2023.7.1 jupyter_client 8.3.0 jupyter_core 5.3.1 jupyter-events 0.7.0 jupyter-lsp 2.2.0 jupyter-resource-usage 1.0.0 jupyter_server 2.7.1 jupyter_server_terminals 0.4.4 jupyter-telemetry 0.1.0 jupyterhub 4.0.2 jupyterlab 4.0.5 jupyterlab-pygments 0.2.2 jupyterlab_server 2.24.0 jupyterlab-widgets 3.0.8 kiwisolver 1.4.4 libmambapy 1.4.1 Mako 1.2.4 mamba 1.4.1 MarkupSafe 2.1.3 matplotlib 3.7.2 matplotlib-inline 0.1.6 mistune 3.0.1 mpmath 1.3.0 nbclient 0.8.0 nbconvert 7.7.4 nbformat 5.9.2 nbgitpuller 1.2.0 nest-asyncio 1.5.7 notebook 7.0.2 notebook_shim 0.2.3 numpy 1.25.2 oauthlib 3.2.2 overrides 7.4.0 packaging 23.1 pamela 1.1.0 pandocfilters 1.5.0 parso 0.8.3 pexpect 4.8.0 pickleshare 0.7.5 Pillow 10.0.0 pip 23.2.1 platformdirs 3.10.0 pluggy 1.0.0 prometheus-client 0.17.1 prompt-toolkit 3.0.39 psutil 5.9.5 ptyprocess 0.7.0 pure-eval 0.2.2 pycosat 0.6.4 pycparser 2.21 Pygments 2.16.1 pyOpenSSL 23.1.1 pyparsing 3.0.9 PySocks 1.7.1 python-dateutil 2.8.2 python-json-logger 2.0.7 PyYAML 6.0.1 pyzmq 25.1.1 referencing 0.30.2 requests 2.28.2 rfc3339-validator 0.1.4 rfc3986-validator 0.1.1 rpds-py 0.9.2 ruamel.yaml 0.17.21 ruamel.yaml.clib 0.2.7 scipy 1.11.1 Send2Trash 1.8.2 setuptools 65.6.3 six 1.16.0 sniffio 1.3.0 soupsieve 2.4.1 SQLAlchemy 2.0.20 stack-data 0.6.2 sympy 1.12 terminado 0.17.1 tinycss2 1.2.1 tomli 2.0.1 toolz 0.12.0 tornado 6.3.3 tqdm 4.65.0 traitlets 5.9.0 typing_extensions 4.7.1 uri-template 1.3.0 urllib3 1.26.15 wcwidth 0.2.6 webcolors 1.13 webencodings 0.5.1 websocket-client 1.6.1 wheel 0.40.0 widgetsnbextension 4.0.8 zstandard 0.19.0 conda list: # packages in environment at /opt/tljh/user: # # Name Version Build Channel _libgcc_mutex 0.1 conda_forge conda-forge _openmp_mutex 4.5 2_gnu conda-forge alembic 1.11.3 pypi_0 pypi anyio 3.7.1 pypi_0 pypi argon2-cffi 23.1.0 pypi_0 pypi argon2-cffi-bindings 21.2.0 pypi_0 pypi arrow 1.2.3 pypi_0 pypi asttokens 2.2.1 pypi_0 pypi async-generator 1.10 pypi_0 pypi async-lru 2.0.4 pypi_0 pypi attrs 23.1.0 pypi_0 pypi babel 2.12.1 pypi_0 pypi backcall 0.2.0 pypi_0 pypi bcrypt 4.0.1 pypi_0 pypi beautifulsoup4 4.12.2 pypi_0 pypi bleach 6.0.0 pypi_0 pypi brotlipy 0.7.0 py310h5764c6d_1005 conda-forge bzip2 1.0.8 h7f98852_4 conda-forge c-ares 1.18.1 h7f98852_0 conda-forge ca-certificates 2022.12.7 ha878542_0 conda-forge certifi 2022.12.7 pyhd8ed1ab_0 conda-forge certipy 0.1.3 pypi_0 pypi cffi 1.15.1 py310h255011f_3 conda-forge charset-normalizer 3.1.0 pyhd8ed1ab_0 conda-forge colorama 0.4.6 pyhd8ed1ab_0 conda-forge comm 0.1.4 pypi_0 pypi conda 23.1.0 py310hff52083_0 conda-forge conda-package-handling 2.0.2 pyh38be061_0 conda-forge conda-package-streaming 0.7.0 pyhd8ed1ab_1 conda-forge contourpy 1.1.0 pypi_0 pypi cryptography 40.0.1 py310h34c0648_0 conda-forge cycler 0.11.0 pypi_0 pypi debugpy 1.6.7.post1 pypi_0 pypi decorator 5.1.1 pypi_0 pypi defusedxml 0.7.1 pypi_0 pypi exceptiongroup 1.1.3 pypi_0 pypi executing 1.2.0 pypi_0 pypi fastjsonschema 2.18.0 pypi_0 pypi fmt 9.1.0 h924138e_0 conda-forge fonttools 4.42.0 pypi_0 pypi fqdn 1.5.1 pypi_0 pypi greenlet 2.0.2 pypi_0 pypi icu 72.1 hcb278e6_0 conda-forge idna 3.4 pyhd8ed1ab_0 conda-forge ipykernel 6.25.1 pypi_0 pypi ipython 8.14.0 pypi_0 pypi ipywidgets 8.1.0 pypi_0 pypi isoduration 20.11.0 pypi_0 pypi jedi 0.19.0 pypi_0 pypi jinja2 3.1.2 pypi_0 pypi json5 0.9.14 pypi_0 pypi jsonpointer 2.4 pypi_0 pypi jsonschema 4.19.0 pypi_0 pypi jsonschema-specifications 2023.7.1 pypi_0 pypi jupyter-client 8.3.0 pypi_0 pypi jupyter-core 5.3.1 pypi_0 pypi jupyter-events 0.7.0 pypi_0 pypi jupyter-lsp 2.2.0 pypi_0 pypi jupyter-resource-usage 1.0.0 pypi_0 pypi jupyter-server 2.7.1 pypi_0 pypi jupyter-server-terminals 0.4.4 pypi_0 pypi jupyter-telemetry 0.1.0 pypi_0 pypi jupyterhub 4.0.2 pypi_0 pypi jupyterlab 4.0.5 pypi_0 pypi jupyterlab-pygments 0.2.2 pypi_0 pypi jupyterlab-server 2.24.0 pypi_0 pypi jupyterlab-widgets 3.0.8 pypi_0 pypi keyutils 1.6.1 h166bdaf_0 conda-forge kiwisolver 1.4.4 pypi_0 pypi krb5 1.20.1 h81ceb04_0 conda-forge ld_impl_linux-64 2.40 h41732ed_0 conda-forge libarchive 3.6.2 h3d51595_0 conda-forge libcurl 7.88.1 hdc1c0ab_1 conda-forge libedit 3.1.20191231 he28a2e2_2 conda-forge libev 4.33 h516909a_1 conda-forge libffi 3.4.2 h7f98852_5 conda-forge libgcc-ng 12.2.0 h65d4601_19 conda-forge libgomp 12.2.0 h65d4601_19 conda-forge libiconv 1.17 h166bdaf_0 conda-forge libmamba 1.4.1 hcea66bb_0 conda-forge libmambapy 1.4.1 py310h1428755_0 conda-forge libnghttp2 1.52.0 h61bc06f_0 conda-forge libnsl 2.0.0 h7f98852_0 conda-forge libsolv 0.7.23 h3eb15da_0 conda-forge libsqlite 3.40.0 h753d276_0 conda-forge libssh2 1.10.0 hf14f497_3 conda-forge libstdcxx-ng 12.2.0 h46fd767_19 conda-forge libuuid 2.38.1 h0b41bf4_0 conda-forge libxml2 2.10.3 hfdac1af_6 conda-forge libzlib 1.2.13 h166bdaf_4 conda-forge lz4-c 1.9.4 hcb278e6_0 conda-forge lzo 2.10 h516909a_1000 conda-forge mako 1.2.4 pypi_0 pypi mamba 1.4.1 py310h51d5547_0 conda-forge markupsafe 2.1.3 pypi_0 pypi matplotlib 3.7.2 pypi_0 pypi matplotlib-inline 0.1.6 pypi_0 pypi mistune 3.0.1 pypi_0 pypi mpmath 1.3.0 pypi_0 pypi nbclient 0.8.0 pypi_0 pypi nbconvert 7.7.4 pypi_0 pypi nbformat 5.9.2 pypi_0 pypi nbgitpuller 1.2.0 pypi_0 pypi ncurses 6.3 h27087fc_1 conda-forge nest-asyncio 1.5.7 pypi_0 pypi notebook 7.0.2 pypi_0 pypi notebook-shim 0.2.3 pypi_0 pypi numpy 1.25.2 pypi_0 pypi oauthlib 3.2.2 pypi_0 pypi openssl 3.1.0 h0b41bf4_0 conda-forge overrides 7.4.0 pypi_0 pypi packaging 23.1 pypi_0 pypi pamela 1.1.0 pypi_0 pypi pandocfilters 1.5.0 pypi_0 pypi parso 0.8.3 pypi_0 pypi pexpect 4.8.0 pypi_0 pypi pickleshare 0.7.5 pypi_0 pypi pillow 10.0.0 pypi_0 pypi pip 23.2.1 pypi_0 pypi platformdirs 3.10.0 pypi_0 pypi pluggy 1.0.0 pyhd8ed1ab_5 conda-forge prometheus-client 0.17.1 pypi_0 pypi prompt-toolkit 3.0.39 pypi_0 pypi psutil 5.9.5 pypi_0 pypi ptyprocess 0.7.0 pypi_0 pypi pure-eval 0.2.2 pypi_0 pypi pybind11-abi 4 hd8ed1ab_3 conda-forge pycosat 0.6.4 py310h5764c6d_1 conda-forge pycparser 2.21 pyhd8ed1ab_0 conda-forge pygments 2.16.1 pypi_0 pypi pyopenssl 23.1.1 pyhd8ed1ab_0 conda-forge pyparsing 3.0.9 pypi_0 pypi pysocks 1.7.1 pyha2e5f31_6 conda-forge python 3.10.10 he550d4f_0_cpython conda-forge python-dateutil 2.8.2 pypi_0 pypi python-json-logger 2.0.7 pypi_0 pypi python_abi 3.10 3_cp310 conda-forge pyyaml 6.0.1 pypi_0 pypi pyzmq 25.1.1 pypi_0 pypi readline 8.2 h8228510_1 conda-forge referencing 0.30.2 pypi_0 pypi reproc 14.2.4 h0b41bf4_0 conda-forge reproc-cpp 14.2.4 hcb278e6_0 conda-forge requests 2.28.2 pyhd8ed1ab_1 conda-forge rfc3339-validator 0.1.4 pypi_0 pypi rfc3986-validator 0.1.1 pypi_0 pypi rpds-py 0.9.2 pypi_0 pypi ruamel.yaml 0.17.21 py310h1fa729e_3 conda-forge ruamel.yaml.clib 0.2.7 py310h1fa729e_1 conda-forge scipy 1.11.1 pypi_0 pypi send2trash 1.8.2 pypi_0 pypi setuptools 65.6.3 pyhd8ed1ab_0 conda-forge six 1.16.0 pypi_0 pypi sniffio 1.3.0 pypi_0 pypi soupsieve 2.4.1 pypi_0 pypi sqlalchemy 2.0.20 pypi_0 pypi stack-data 0.6.2 pypi_0 pypi sympy 1.12 pypi_0 pypi terminado 0.17.1 pypi_0 pypi tinycss2 1.2.1 pypi_0 pypi tk 8.6.12 h27826a3_0 conda-forge tomli 2.0.1 pypi_0 pypi toolz 0.12.0 pyhd8ed1ab_0 conda-forge tornado 6.3.3 pypi_0 pypi tqdm 4.65.0 pyhd8ed1ab_1 conda-forge traitlets 5.9.0 pypi_0 pypi typing-extensions 4.7.1 pypi_0 pypi tzdata 2023c h71feb2d_0 conda-forge uri-template 1.3.0 pypi_0 pypi urllib3 1.26.15 pyhd8ed1ab_0 conda-forge wcwidth 0.2.6 pypi_0 pypi webcolors 1.13 pypi_0 pypi webencodings 0.5.1 pypi_0 pypi websocket-client 1.6.1 pypi_0 pypi wheel 0.40.0 pyhd8ed1ab_0 conda-forge widgetsnbextension 4.0.8 pypi_0 pypi xz 5.2.6 h166bdaf_0 conda-forge yaml-cpp 0.7.0 h27087fc_2 conda-forge zstandard 0.19.0 py310hdeb6495_1 conda-forge zstd 1.5.2 h3eb15da_6 conda-forge conda env: name: base channels: - conda-forge dependencies: - _libgcc_mutex=0.1=conda_forge - _openmp_mutex=4.5=2_gnu - brotlipy=0.7.0=py310h5764c6d_1005 - bzip2=1.0.8=h7f98852_4 - c-ares=1.18.1=h7f98852_0 - ca-certificates=2022.12.7=ha878542_0 - certifi=2022.12.7=pyhd8ed1ab_0 - cffi=1.15.1=py310h255011f_3 - charset-normalizer=3.1.0=pyhd8ed1ab_0 - colorama=0.4.6=pyhd8ed1ab_0 - conda=23.1.0=py310hff52083_0 - conda-package-handling=2.0.2=pyh38be061_0 - conda-package-streaming=0.7.0=pyhd8ed1ab_1 - cryptography=40.0.1=py310h34c0648_0 - fmt=9.1.0=h924138e_0 - icu=72.1=hcb278e6_0 - idna=3.4=pyhd8ed1ab_0 - keyutils=1.6.1=h166bdaf_0 - krb5=1.20.1=h81ceb04_0 - ld_impl_linux-64=2.40=h41732ed_0 - libarchive=3.6.2=h3d51595_0 - libcurl=7.88.1=hdc1c0ab_1 - libedit=3.1.20191231=he28a2e2_2 - libev=4.33=h516909a_1 - libffi=3.4.2=h7f98852_5 - libgcc-ng=12.2.0=h65d4601_19 - libgomp=12.2.0=h65d4601_19 - libiconv=1.17=h166bdaf_0 - libmamba=1.4.1=hcea66bb_0 - libmambapy=1.4.1=py310h1428755_0 - libnghttp2=1.52.0=h61bc06f_0 - libnsl=2.0.0=h7f98852_0 - libsolv=0.7.23=h3eb15da_0 - libsqlite=3.40.0=h753d276_0 - libssh2=1.10.0=hf14f497_3 - libstdcxx-ng=12.2.0=h46fd767_19 - libuuid=2.38.1=h0b41bf4_0 - libxml2=2.10.3=hfdac1af_6 - libzlib=1.2.13=h166bdaf_4 - lz4-c=1.9.4=hcb278e6_0 - lzo=2.10=h516909a_1000 - mamba=1.4.1=py310h51d5547_0 - ncurses=6.3=h27087fc_1 - openssl=3.1.0=h0b41bf4_0 - pluggy=1.0.0=pyhd8ed1ab_5 - pybind11-abi=4=hd8ed1ab_3 - pycosat=0.6.4=py310h5764c6d_1 - pycparser=2.21=pyhd8ed1ab_0 - pyopenssl=23.1.1=pyhd8ed1ab_0 - pysocks=1.7.1=pyha2e5f31_6 - python=3.10.10=he550d4f_0_cpython - python_abi=3.10=3_cp310 - readline=8.2=h8228510_1 - reproc=14.2.4=h0b41bf4_0 - reproc-cpp=14.2.4=hcb278e6_0 - requests=2.28.2=pyhd8ed1ab_1 - ruamel.yaml=0.17.21=py310h1fa729e_3 - ruamel.yaml.clib=0.2.7=py310h1fa729e_1 - setuptools=65.6.3=pyhd8ed1ab_0 - tk=8.6.12=h27826a3_0 - toolz=0.12.0=pyhd8ed1ab_0 - tqdm=4.65.0=pyhd8ed1ab_1 - tzdata=2023c=h71feb2d_0 - urllib3=1.26.15=pyhd8ed1ab_0 - wheel=0.40.0=pyhd8ed1ab_0 - xz=5.2.6=h166bdaf_0 - yaml-cpp=0.7.0=h27087fc_2 - zstandard=0.19.0=py310hdeb6495_1 - zstd=1.5.2=h3eb15da_6 - pip: - alembic==1.11.3 - anyio==3.7.1 - argon2-cffi==23.1.0 - argon2-cffi-bindings==21.2.0 - arrow==1.2.3 - asttokens==2.2.1 - async-generator==1.10 - async-lru==2.0.4 - attrs==23.1.0 - babel==2.12.1 - backcall==0.2.0 - bcrypt==4.0.1 - beautifulsoup4==4.12.2 - bleach==6.0.0 - certipy==0.1.3 - comm==0.1.4 - contourpy==1.1.0 - cycler==0.11.0 - debugpy==1.6.7.post1 - decorator==5.1.1 - defusedxml==0.7.1 - exceptiongroup==1.1.3 - executing==1.2.0 - fastjsonschema==2.18.0 - fonttools==4.42.0 - fqdn==1.5.1 - greenlet==2.0.2 - ipykernel==6.25.1 - ipython==8.14.0 - ipywidgets==8.1.0 - isoduration==20.11.0 - jedi==0.19.0 - jinja2==3.1.2 - json5==0.9.14 - jsonpointer==2.4 - jsonschema==4.19.0 - jsonschema-specifications==2023.7.1 - jupyter-client==8.3.0 - jupyter-core==5.3.1 - jupyter-events==0.7.0 - jupyter-lsp==2.2.0 - jupyter-resource-usage==1.0.0 - jupyter-server==2.7.1 - jupyter-server-terminals==0.4.4 - jupyter-telemetry==0.1.0 - jupyterhub==4.0.2 - jupyterlab==4.0.5 - jupyterlab-pygments==0.2.2 - jupyterlab-server==2.24.0 - jupyterlab-widgets==3.0.8 - kiwisolver==1.4.4 - mako==1.2.4 - markupsafe==2.1.3 - matplotlib==3.7.2 - matplotlib-inline==0.1.6 - mistune==3.0.1 - mpmath==1.3.0 - nbclient==0.8.0 - nbconvert==7.7.4 - nbformat==5.9.2 - nbgitpuller==1.2.0 - nest-asyncio==1.5.7 - notebook==7.0.2 - notebook-shim==0.2.3 - numpy==1.25.2 - oauthlib==3.2.2 - overrides==7.4.0 - packaging==23.1 - pamela==1.1.0 - pandocfilters==1.5.0 - parso==0.8.3 - pexpect==4.8.0 - pickleshare==0.7.5 - pillow==10.0.0 - pip==23.2.1 - platformdirs==3.10.0 - prometheus-client==0.17.1 - prompt-toolkit==3.0.39 - psutil==5.9.5 - ptyprocess==0.7.0 - pure-eval==0.2.2 - pygments==2.16.1 - pyparsing==3.0.9 - python-dateutil==2.8.2 - python-json-logger==2.0.7 - pyyaml==6.0.1 - pyzmq==25.1.1 - referencing==0.30.2 - rfc3339-validator==0.1.4 - rfc3986-validator==0.1.1 - rpds-py==0.9.2 - scipy==1.11.1 - send2trash==1.8.2 - six==1.16.0 - sniffio==1.3.0 - soupsieve==2.4.1 - sqlalchemy==2.0.20 - stack-data==0.6.2 - sympy==1.12 - terminado==0.17.1 - tinycss2==1.2.1 - tomli==2.0.1 - tornado==6.3.3 - traitlets==5.9.0 - typing-extensions==4.7.1 - uri-template==1.3.0 - wcwidth==0.2.6 - webcolors==1.13 - webencodings==0.5.1 - websocket-client==1.6.1 - widgetsnbextension==4.0.8 prefix: /opt/tljh/user ```

extract from journalctl -u jupyterhub:

Aug 24 20:41:55 juliabox-test python3[11864]: Running as unit: jupyter-jmaher.service
Aug 24 20:41:56 juliabox-test python3[764]: [I 2023-08-24 20:41:56.503 JupyterHub log:191] 302 GET /juliabox-test/hub/spawn/jmaher?next=%2Fjuliabox-test%2Fhub%2Fuser%2Fjmaher%2Flab%2Ftree%2F229-projects%2F01-calculator.ipynb -> /juliabox-test/hub/spawn->
Aug 24 20:41:56 juliabox-test python3[764]: [I 2023-08-24 20:41:56.615 JupyterHub pages:398] jmaher is pending spawn
Aug 24 20:41:56 juliabox-test python3[764]: [I 2023-08-24 20:41:56.627 JupyterHub log:191] 200 GET /juliabox-test/hub/spawn-pending/jmaher?next=%2Fjuliabox-test%2Fhub%2Fuser%2Fjmaher%2Flab%2Ftree%2F229-projects%2F01-calculator.ipynb (jmaher@10.8.3.1) 17>
Aug 24 20:41:57 juliabox-test python3[764]: [I 2023-08-24 20:41:57.625 JupyterHub log:191] 200 GET /juliabox-test/hub/api (@127.0.0.1) 1.38ms
Aug 24 20:41:57 juliabox-test python3[764]: [I 2023-08-24 20:41:57.690 JupyterHub log:191] 200 POST /juliabox-test/hub/api/users/jmaher/activity (jmaher@127.0.0.1) 24.55ms
Aug 24 20:42:02 juliabox-test python3[764]: [W 2023-08-24 20:42:02.081 JupyterHub _version:37] Single-user server has no version header, which means it is likely < 0.8. Expected 4.0.2
Aug 24 20:42:02 juliabox-test python3[764]: [I 2023-08-24 20:42:02.081 JupyterHub base:990] User jmaher took 6.580 seconds to start
Aug 24 20:42:02 juliabox-test python3[764]: [I 2023-08-24 20:42:02.081 JupyterHub proxy:330] Adding user jmaher to proxy /juliabox-test/user/jmaher/ => http://127.0.0.1:37459
Aug 24 20:42:03 juliabox-test python3[764]: [I 2023-08-24 20:42:03.155 JupyterHub users:768] Server jmaher is ready
Aug 24 20:42:03 juliabox-test python3[764]: [I 2023-08-24 20:42:03.156 JupyterHub log:191] 200 GET /juliabox-test/hub/api/users/jmaher/server/progress?_xsrf=[secret] (jmaher@10.8.3.1) 5775.52ms
Aug 24 20:42:03 juliabox-test python3[764]: [I 2023-08-24 20:42:03.862 JupyterHub log:191] 302 GET /juliabox-test/hub/spawn-pending/jmaher?next=%2Fjuliabox-test%2Fhub%2Fuser%2Fjmaher%2Flab%2Ftree%2F229-projects%2F01-calculator.ipynb -> /juliabox-test/hu>
Aug 24 20:42:03 juliabox-test python3[764]: [I 2023-08-24 20:42:03.961 JupyterHub log:191] 302 GET /juliabox-test/hub/user/jmaher/lab/tree/229-projects/01-calculator.ipynb -> /juliabox-test/user/jmaher/lab/tree/229-projects/01-calculator.ipynb?redirects>
Aug 24 20:42:04 juliabox-test python3[764]: [W 2023-08-24 20:42:04.127 JupyterHub log:191] 403 GET /juliabox-test/hub/api/user (@127.0.0.1) 3.42ms
Aug 24 20:42:04 juliabox-test python3[764]: [I 2023-08-24 20:42:04.304 JupyterHub log:191] 302 GET /juliabox-test/hub/api/oauth2/authorize?client_id=jupyterhub-user-jmaher&redirect_uri=%2Fjuliabox-test%2Fuser%2Fjmaher%2Foauth_callback&response_type=code>
Aug 24 20:42:04 juliabox-test python3[764]: [I 2023-08-24 20:42:04.476 JupyterHub log:191] 200 POST /juliabox-test/hub/api/oauth2/token (jmaher@127.0.0.1) 36.72ms
Aug 24 20:42:04 juliabox-test python3[764]: [I 2023-08-24 20:42:04.485 JupyterHub log:191] 200 GET /juliabox-test/hub/api/user (jmaher@127.0.0.1) 5.86ms
Aug 24 20:42:33 juliabox-test python3[764]: [I 2023-08-24 20:42:33.787 JupyterHub log:191] 200 GET /juliabox-test/hub/auth/change-password (jmaher@10.8.3.1) 37.80ms
Aug 24 20:42:47 juliabox-test python3[764]: [I 2023-08-24 20:42:47.674 JupyterHub log:191] 200 GET /juliabox-test/hub/api/ (cull-idle@127.0.0.1) 10.37ms
Aug 24 20:42:47 juliabox-test python3[764]: [I 2023-08-24 20:42:47.680 JupyterHub log:191] 200 GET /juliabox-test/hub/api/users?state=[secret] (cull-idle@127.0.0.1) 3.76ms
Aug 24 20:42:53 juliabox-test python3[764]: [W 2023-08-24 20:42:53.339 JupyterHub web:1869] 403 POST /juliabox-test/hub/auth/change-password (10.8.3.1): '_xsrf' argument missing from POST
Aug 24 20:42:53 juliabox-test python3[764]: [W 2023-08-24 20:42:53.343 JupyterHub log:191] 403 POST /juliabox-test/hub/auth/change-password (@10.8.3.1) 4.40ms
Aug 24 20:43:47 juliabox-test python3[764]: [I 2023-08-24 20:43:47.680 JupyterHub log:191] 200 GET /juliabox-test/hub/api/ (cull-idle@127.0.0.1) 16.98ms
Aug 24 20:43:47 juliabox-test python3[764]: [I 2023-08-24 20:43:47.693 JupyterHub log:191] 200 GET /juliabox-test/hub/api/users?state=[secret] (cull-idle@127.0.0.1) 9.42ms
Aug 24 20:44:47 juliabox-test python3[764]: [I 2023-08-24 20:44:47.680 JupyterHub log:191] 200 GET /juliabox-test/hub/api/ (cull-idle@127.0.0.1) 16.74ms
welcome[bot] commented 10 months ago

Thank you for opening your first issue in this project! Engagement like this is essential for open source projects! :hugs:
If you haven't done so already, check out Jupyter's Code of Conduct. Also, please try to follow the issue template as it helps other other community members to contribute more effectively. welcome You can meet the other Jovyans by joining our Discourse forum. There is also an intro thread there where you can stop by and say Hi! :wave:
Welcome to the Jupyter community! :tada:

josephmaher commented 10 months ago

Note, getting rid of the xrsf check removes the error, and changes the password, i.e. adding a dummy check to the class in firstuseauthenticator.py:

class ResetPasswordHandler(BaseHandler):
    def check_xsrf_cookie(self):
        return

No idea if this is the right thing to do...

josephmaher commented 10 months ago

I think this bug should really be filed against firstuseauthenticator, I have done so here:

https://github.com/jupyterhub/firstuseauthenticator/issues/55