Implementé un sitio web simple donde el usuario puede iniciar sesión/registrarse a través de algún servicio existente (por ejemplo, Google). Después de iniciar sesión, un usuario puede administrar su cuaderno Jupyter: abrir/eliminar. Básicamente, un usuario tiene una cuenta donde puede acceder a su computadora portátil. El sitio web y el cuaderno Jupyter están en contenedores por Docker y organizados por Kubernetes.
Ahora el problema es vincular la autenticación de un usuario a través de Google para acceder a Jupyter Notebook sin requerir el token/contraseña de Jupyter Notebook del usuario. Es un problema porque la URL en la que se ejecuta el contenedor con Jupyter Notebook es conocida y cualquiera puede acceder a ella (por lo que deshabilitar la contraseña no es una opción).
Traté de buscar una manera de hacer que el contenedor que se ejecuta en cierto enlace de URL sea accesible solo mediante la redirección desde otro sitio web (en mi caso, sería la página de la cuenta de usuario), pero no he encontrado una manera. También estaba pensando en escribir el token de la computadora portátil Jupyter en la pantalla de inicio después de implementar la computadora portátil para cada usuario con la opción de establecer la contraseña para la computadora portátil, pero me parece muy molesto pedirle al usuario la contraseña de Google y luego la contraseña/token para la computadora portátil.
Por lo tanto, me gustaría saber si existe una forma eficiente de vincular la autenticación a través de Google con el acceso a la computadora portátil Juypter que solo requiere autenticación a través de Google.
Encontré una solución funcional a mi problema.
Generé mi propio token con los secretos de la biblioteca de Python. Este token lo pasé como variable de entorno al contenedor con el cuaderno Jupyter (JUPYTER_TOKEN). Entonces, el cuaderno Jupyter usa este token como predeterminado. Ahora puedo redirigir al usuario del sitio web al cuaderno Jupyter usando un token generado manualmente.
Simplemente:
Donde JUPYTER es un lugar donde se ejecuta el contenedor del cuaderno jupyter y TOKEN es un token generado manualmente. De esta manera, el usuario es redirigido sin necesidad de escribir manualmente la contraseña. Además, nadie fuera de Internet sin conocimiento de este token no puede obtener acceso al cuaderno Jupyter.