Jupyterhub:get_config在哪里定义,如何创建自定义身份验证器?

Dav*_*ams 5 python authentication jupyter

我想创建一个使用自定义重定向来验证用户身份的jupyterhub安装。用户将输入我们Jupyterhub的网址,将其重定向到单独的身份验证系统,然后绕过login.html返回到应用程序。似乎最初需要在实际的Jupyterhub源代码上进行大量的黑客操作才能使其正常工作。

根据我目前的了解,我们需要自定义jupyterhub / jupyterhub / handlers / login.py jupyterhub / auth.py。我们希望避免这种情况,并使用官方支持的机制。我以为也许可以创建自己的身份验证器,以便在配置文件中使用,例如

c = get_config()
c.Authenticator.stuffGoesHere
Run Code Online (Sandbox Code Playgroud)

并实现自己的:

class LoginHandler(BaseHandler)  // login.py
Run Code Online (Sandbox Code Playgroud)

此外

class Authenticator(LoggingConfigurable):  // auth.py
Run Code Online (Sandbox Code Playgroud)

但是我什至看不清如何做到这一点,因为我不知道在哪里

 get_config()
Run Code Online (Sandbox Code Playgroud)

实现以及如何覆盖它。我在想这个吗?希望有一个单独的系统来处理登录名的解决方案(我们可以从此外部系统获取用户名,以进行docker Provisioning等操作,用于dockerspawner)。顺便说一句,get_config实际定义在哪里?

Che*_*glu 3

get_config在这里定义:https : //github.com/ipython/traitlets/blob/c5c9166373041dd561d8ad86e8990ae844d26306/traitlets/config/loader.py#L483-L501

而无需先导入就可以直接使用的原因是py3compat.execfile

回到您的需求,您应该做的是创建CustomizedAuthenticator扩展jupyterhub.auth.Authenticator. 并将其与以下内容一起使用:

c.JupyterHub.authenticator_class = CustomizedAuthenticator
Run Code Online (Sandbox Code Playgroud)