知识结构:
JupyterHub子系统:Hub,Proxy,Single-User Notebook Server
子系统之间交互
JupyterHub用户登录访问过程
JupyterHub默认行为
JupyterHub定制化
子系统
JupyterHub是进程组合,为小组中的每个用户提供single user Jupyter Notebook server。
Hub(Python/Tornado):管理用户账号,认证,通过Spawner协调Single User Notebook Server
Proxy:通过动态代理路由HTTP请求到Hub和Single User Notebook Server
Single User Notebook Server(Python/Tornado):通过Spawner启动的notebook
子系统交互
基本操作包括:
Hub spawn proxy(默认的JupyterHub配置)
proxy默认将所有请求转发给Hub
Hub管理登录,并根据需求spawn single-user notebook server
Hub配置proxy,将部分请求转发给single-user notebook server
登录过程
当用户访问JupyterHub时
登录信息会递交给Authenticator实例进行验证
如果登录信息有效,Authenticator返回用户名
single-user notebook server实例会为登录用户spawned
当single-user notebook server启动,proxy会将所有
/user/[username]/*
转发给single-user notebook servercookie会设置在
/hub/
,包含加密的token浏览器会重定向到
/user/[username]
,从而由single-user notebook server处理请求
single-user server会通过OAuth与Hub认证:
当请求过来时,single-user server会检查cookie
如果cookie没有设置,则重定向到Hub进行验证
在Hub验证之后,浏览器重定向到single-user server
token被验证并存储到cookie
如果没有用户,浏览器会重定向到
/hub/login
默认行为
默认,Proxy会监听所有公共接口的8000端口,Hub与Single-User Notebook Servers会在localhost交互。
默认,启动JupyterHub时会在当前工作目录写入两个文件
jupyterhub.sqlite:包含Hub的所有状态,如运行的用户等
jupyterhub_cookie_secret:避免登录cookie失效,是用于保证cookie安全的key
默认位置是/etc/jupyterhub
保存配置文件,/srv/jupyterhub
保存所有安全和运行文件。
自定义配置
在定制方面有两个方面:
如何进行认证
如何启动single-user notebook server
【参考】
1。jupyterhub:technique overview:http://jupyterhub.readthedocs.io/en/latest/reference/technical-overview.html