Docker 如何优雅地绕过Jupyter笔记本电脑密码要求,但已通过其他服务的身份验证

Docker 如何优雅地绕过Jupyter笔记本电脑密码要求,但已通过其他服务的身份验证,docker,authentication,web,kubernetes,jupyter-notebook,Docker,Authentication,Web,Kubernetes,Jupyter Notebook,我已经实现了一个简单的网站,用户可以通过一些现有的服务(如谷歌)登录/注册。登录后,用户可以管理他的Jupyter笔记本-打开/删除。基本上,用户有一个帐户,可以访问他的笔记本。网站和Jupyter笔记本由Docker包装,Kubernetes组织 现在的问题是,通过谷歌绑定用户身份验证以访问Jupyter notebook,而无需用户提供Jupyter notebook令牌/密码。这是一个问题,因为运行Jupyter notebook的容器的URL是已知的,任何人都可以访问(所以禁用密码不是一

我已经实现了一个简单的网站,用户可以通过一些现有的服务(如谷歌)登录/注册。登录后,用户可以管理他的Jupyter笔记本-打开/删除。基本上,用户有一个帐户,可以访问他的笔记本。网站和Jupyter笔记本由Docker包装,Kubernetes组织

现在的问题是,通过谷歌绑定用户身份验证以访问Jupyter notebook,而无需用户提供Jupyter notebook令牌/密码。这是一个问题,因为运行Jupyter notebook的容器的URL是已知的,任何人都可以访问(所以禁用密码不是一个选项)

我试图寻找一种方法,使运行在某个URL链接上的容器只能通过从其他网站重定向(在我的情况下是用户帐户页面)来访问,但我没有找到一种方法。此外,我还考虑在为每个用户部署笔记本后,在主屏幕上写入Jupyter笔记本令牌,为每个用户提供设置笔记本密码的选项,但在我看来,要求用户输入谷歌密码并直接输入笔记本的密码/令牌,似乎非常烦人


因此,我想知道是否有一种有效的方法可以将通过谷歌进行的身份验证与只需通过谷歌进行身份验证即可访问Juypter笔记本的功能绑定起来。

我找到了一个解决问题的有效方法

我使用python库机密生成了自己的令牌。我将此令牌作为环境变量传递给带有Jupyter笔记本的容器(Jupyter_令牌)。因此Jupyter笔记本使用此令牌作为默认令牌。现在我可以使用手动生成的令牌将用户从网站重定向到Jupyter笔记本

简单地说:

  • 生成令牌
  • 使用令牌作为环境变量部署Jupyter笔记本容器
  • 将用户重定向到https://{JUPYTER}.com/?token={token}
  • 其中JUPYTER是运行JUPYTER笔记本容器的地方,令牌是手动生成的令牌。这种方式可以重定向用户,而无需手动键入密码。此外,任何来自互联网以外的人,如果不知道这个令牌,都无法访问Jupyter笔记本