gpt4 book ai didi

jupyterhub - 如何使用 json Web token (JWT) 对 JupyterHub 用户进行身份验证?

转载 作者:行者123 更新时间:2023-12-04 15:40:47 26 4
gpt4 key购买 nike

我正在尝试找出使用 JWT 对 JupyterHub 用户进行身份验证的最佳方法。在我的特定用例中,客户端将首先在主网站上进行身份验证,并在稍后阶段重定向到 JupyterHub 代理(两个站点都托管在同一域之后)。这个想法是完全绕过 JupyterHub 登录屏幕并使用户能够访问他的笔记本(前提是 HTTP 请求的 Authorization header 中提供了有效的 JWT token )。一旦用户登录到主站点,就会生成 JWT token 。

任何关于如何实现这一点的指针/建议将不胜感激!我的猜测是我需要编写一个自定义身份验证器来验证 JWT。但是,我不确定如何配置整个过程。
谢谢!

最佳答案

我有一个类似的要求,即从我的应用程序中使用 Jupyterhub。我的要求是绕过 Jupyterhub 登录并使用我的应用程序登录进入 Jupyterhub。我检查了各种身份验证机制,但没有发现任何可以直接使用的内容。最后我在自定义身份验证插件之一中进行了修改。详情如下。

我修改了 jhub_remote_user_authenticator 插入。下面给出了负责认证的主要功能。 ( remote_user_auth.py )

class RemoteUserLoginHandler(BaseHandler):

def get(self):
header_name = self.authenticator.header_name
remote_user = self.request.headers.get(header_name, "")
if remote_user == "":
raise web.HTTPError(401)
else:
user = self.user_from_username(remote_user)
self.set_login_cookie(user)
self.redirect(url_path_join(self.hub.server.base_url, 'home'))

此插件检查请求 header 中的 REMOTE_USER 参数并以该特定用户身份登录。如果我们将 Apache httpd 服务器与 SSO 一起使用,这将非常有用。

我修改了这个插件来执行一个简单的登录。这是一个非常基本的。我只是作为一个例子来解释这个。您可以根据您的要求修改它。修改后的代码如下。
class RemoteUserLoginHandler(BaseHandler):

def get(self):
remote_user = self.get_argument('user', None, True)
if remote_user == "":
raise web.HTTPError(401)
else:
user = self.user_from_username(remote_user)
self.set_login_cookie(user)
self.redirect(url_path_join(self.hub.server.base_url, 'home'))

现在使用这个修改后的插件,如果您使用参数 user= 访问 jupyter 集线器,则相应用户的笔记本将打开。这也将绕过登录屏幕。

http://jupyterhuburl:port/hub/login?user=amal --> 这将为用户 amal 打开笔记本

http://jupyterhuburl:port/hub/login?user=demouser --> 这将为用户 demouser 打开笔记本

您可以根据需要修改此功能。这只是一个例子。我们可以添加修改它以启用更安全的登录。

关于jupyterhub - 如何使用 json Web token (JWT) 对 JupyterHub 用户进行身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42084979/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com