Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

import_from_firstuse not working: Previous users cannot log in or create an account. #219

Open
mtav opened this issue Sep 10, 2022 · 1 comment · May be fixed by #221
Open

import_from_firstuse not working: Previous users cannot log in or create an account. #219

mtav opened this issue Sep 10, 2022 · 1 comment · May be fixed by #221
Labels
bug Something isn't working

Comments

@mtav
Copy link

mtav commented Sep 10, 2022

Bug description

After setting c.NativeAuthenticator.import_from_firstuse = True and reloading the configuration, the users from firstuse_dbm_path do get added to the new database, but they cannot log in or create a new account.

This is because the hashed password from firstuse_dbm_path is passed to the user creation function as if it were a normal password, leading to a different hash.
The user then exists in the new database, preventing them from signing up with the same name.
And they cannot sign in because their old password will not match the new hash.

Expected behaviour

All users would be transferred with the same username and password and are able to sign in without having to sign up first.

Actual behaviour

They cannot log in or create a new account with the same username.

How to reproduce

  1. Set up tljh with an admin user and password (randomly chosen here):
curl -L https://tljh.jupyter.org/bootstrap.py \
  | sudo python3 - \
    --admin the_admin:PUYLjBrI5q
  1. Create the file /opt/tljh/config/jupyterhub_config.d/native_auth.py with:
c.JupyterHub.authenticator_class = 'nativeauthenticator.NativeAuthenticator'
c.Authenticator.admin_users = {'the_admin'}
c.NativeAuthenticator.enable_signup = True
c.NativeAuthenticator.import_from_firstuse = True
  1. Reload the hub:
    sudo tljh-config reload
  2. Try to log in as the_admin with password PUYLjBrI5q or create a new user named the_admin.

Your personal set up

Tested on the-littlest-jupyterhub.

  • OS:
    Ubuntu 22.04.1 LTS
  • Version(s):
    JupyterHub version 1.5.0, python 3.10
Full environment
# paste output of `pip freeze` or `conda list` here
Configuration
# jupyterhub_config.py
"""
JupyterHub config for the littlest jupyterhub.
"""

from glob import glob
import os

from tljh import configurer
from tljh.config import INSTALL_PREFIX, USER_ENV_PREFIX, CONFIG_DIR
from tljh.utils import get_plugin_manager
from tljh.user_creating_spawner import UserCreatingSpawner
from jupyterhub_traefik_proxy import TraefikTomlProxy

c.JupyterHub.spawner_class = UserCreatingSpawner

# leave users running when the Hub restarts
c.JupyterHub.cleanup_servers = False

# Use a high port so users can try this on machines with a JupyterHub already present
c.JupyterHub.hub_port = 15001

c.TraefikTomlProxy.should_start = False

dynamic_conf_file_path = os.path.join(INSTALL_PREFIX, "state", "rules", "rules.toml")
c.TraefikTomlProxy.toml_dynamic_config_file = dynamic_conf_file_path
c.JupyterHub.proxy_class = TraefikTomlProxy

c.SystemdSpawner.extra_paths = [os.path.join(USER_ENV_PREFIX, "bin")]
c.SystemdSpawner.default_shell = "/bin/bash"
# Drop the '-singleuser' suffix present in the default template
c.SystemdSpawner.unit_name_template = "jupyter-{USERNAME}"

tljh_config = configurer.load_config()
configurer.apply_config(tljh_config, c)

# Let TLJH hooks modify `c` if they want

# Call our custom configuration plugin
pm = get_plugin_manager()
pm.hook.tljh_custom_jupyterhub_config(c=c)

# Load arbitrary .py config files if they exist.
# This is our escape hatch
extra_configs = sorted(glob(os.path.join(CONFIG_DIR, "jupyterhub_config.d", "*.py")))
for ec in extra_configs:
    load_subconfig(ec)
Logs
@mtav mtav added the bug Something isn't working label Sep 10, 2022
@welcome
Copy link

welcome bot commented Sep 10, 2022

Thank you for opening your first issue in this project! Engagement like this is essential for open source projects! 🤗

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! 👋

Welcome to the Jupyter community! 🎉

@mtav mtav linked a pull request Sep 10, 2022 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant