【问题标题】:Django - JupyterHub - OAuth2 - Jupyter Notebook InteractionDjango - JupyterHub - OAuth2 - Jupyter Notebook 交互
【发布时间】:2020-01-23 15:31:08
【问题描述】:

我有一个相当复杂的要求。这是我希望实现的目标。

  • 一个 Django 后端,它将托管有关服务用户的各种信息。
  • 用户将登录到 Django 后端并可以向服务发送一些指令或查询。 或
  • 用户可以从 Django 应用程序中访问 Jupyter 笔记本,并使用 API 将查询传递给服务。这可能是访问服务的首选模式,因为结果需要使用 Python 进一步分析。
  • 无论是使用 Django 服务中的表单发送的查询,还是使用笔记本中的 Python API 发送查询,它都会发送到相同的 Web URL/端点,以便可以记录查询等。
  • 此 URL 受身份验证保护。

现在,我到目前为止所做的事情如下:

  • 配置 Django 以提供基于 OAuth 的身份验证。
  • 配置 JupyterHub 以与 Django 通信并启动用户特定的笔记本服务器。
  • 我什至想出了如何使用 Jupyter Notebook Extensions 使用相关代码和 cmets 预填充任何新笔记本,以帮助用户使用我们的 API。

现在,我们的 API 可以有一个 .query() 方法,我可以像 API.query('the query') 这样调用它。然后会有很多其他方法来跟踪查询的进度等。现在,我正在考虑使用“请求”库向负责接收查询并提交到 Django 中的端点发送 POST一个任务队列。但由于这个 Django 端点受到登录保护,我需要用 OAuth 访问令牌填充这个请求的标头。

这是真正的问题 - 如何

  • 在笔记本中
  • 在笔记本服务器上运行
  • 由 JupyterHub 通过 OAuth 通过 Django 进行身份验证
  • 我可以获得“访问令牌”吗
  • 以便我可以将其附加到所有请求标头
  • 它与我的 Django 应用程序中的受保护端点进行通信。

到目前为止我的研究工作

如果有完全不同的方法可以帮助满足这些要求,我也会对此持开放态度。

【问题讨论】:

    标签: django authentication oauth jupyter-notebook jupyterhub


    【解决方案1】:

    只是想我会更新我能够通过以下方式解决问题:

    • 设计了我的 Django 后端以生成具有适当所有权的令牌文件并将其存放在用户目录中。
    • 设计了我的 Python“客户端包”来使用这个令牌来验证自己。
    • 并添加了一个中间件,用于根据令牌识别上述客户端。

    我目前正致力于将所有这些东西合并到一个docker-compose 文件中。试图解决 DockerSpawner 创建的 Jupyter 容器不幸无法访问外部世界以及基于 Django 的 Web 应用程序的问题。

    在此处引用相关的 Stackoverflow 问题:No outside network access for Jupyter Notebook container spawned by JupyterHub

    向所有参与此项目和相关项目的优秀人士致敬。讨论、文件等对于弄清楚很多事情都很重要。

    【讨论】:

      猜你喜欢
      • 2022-08-18
      • 2018-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-22
      • 2015-11-18
      • 2018-11-18
      相关资源
      最近更新 更多