- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试运行与 JupyterHub 服务器配对的 Django 网络应用程序,用户通过网络应用程序进入该应用程序,然后在他们登录后被授予对笔记本服务器的访问权限。为此,我尝试使用 OAuth2,其中 Django 提供身份验证,而 JupyterHub 会根据该身份验证用户。
我正在使用 django-oauth-toolkit
提供身份验证服务并使用通用 OAuthenticator 链接到它。 A docker-compose reference implementation is available here .目前,授权重定向有效,但 token 检索过程的某些部分会抛出以下错误:
jupyterhub_1 | [I 2018-01-07 18:53:41.763 JupyterHub log:124] 302 GET /hub/oauth_login?next= → http://localhost:8000/o/authorize?client_id=5hICA5iNiBhBuROGzxGJqGQ7Ur7yH8dHi53aPLB5&response_type=code&state=eyJuZXh0X3VybCI6ICIiLCAic3RhdGVfaWQiOiAiYWQ0NDc3MGVmZmY5NDMyOGEzODBlNThjMGI5YWQ0ZTcifQ%3D%3D&redirect_uri=http%3A%2F%2Flocalhost%3A8001%2Fhub%2Foauth_callback (@172.22.0.1) 3.98ms
django_1 | [07/Jan/2018 18:53:41] "GET /o/authorize?client_id=5hICA5iNiBhBuROGzxGJqGQ7Ur7yH8dHi53aPLB5&response_type=code&state=eyJuZXh0X3VybCI6ICIiLCAic3RhdGVfaWQiOiAiYWQ0NDc3MGVmZmY5NDMyOGEzODBlNThjMGI5YWQ0ZTcifQ%3D%3D&redirect_uri=http%3A%2F%2Flocalhost%3A8001%2Fhub%2Foauth_callback HTTP/1.1" 301 0
django_1 | [07/Jan/2018 18:53:41] "GET /o/authorize/?client_id=5hICA5iNiBhBuROGzxGJqGQ7Ur7yH8dHi53aPLB5&response_type=code&state=eyJuZXh0X3VybCI6ICIiLCAic3RhdGVfaWQiOiAiYWQ0NDc3MGVmZmY5NDMyOGEzODBlNThjMGI5YWQ0ZTcifQ%3D%3D&redirect_uri=http%3A%2F%2Flocalhost%3A8001%2Fhub%2Foauth_callback HTTP/1.1" 200 3159
django_1 | [07/Jan/2018 18:53:42] "POST /o/authorize/?client_id=5hICA5iNiBhBuROGzxGJqGQ7Ur7yH8dHi53aPLB5&response_type=code&state=eyJuZXh0X3VybCI6ICIiLCAic3RhdGVfaWQiOiAiYWQ0NDc3MGVmZmY5NDMyOGEzODBlNThjMGI5YWQ0ZTcifQ%3D%3D&redirect_uri=http%3A%2F%2Flocalhost%3A8001%2Fhub%2Foauth_callback HTTP/1.1" 302 0
jupyterhub_1 | [W 2018-01-07 18:53:42.959 JupyterHub log:124] 405 POST /o/token (@127.0.0.1) 9.08ms
jupyterhub_1 | [E 2018-01-07 18:53:42.961 JupyterHub web:1590] Uncaught exception GET /hub/oauth_callback?code=Rz9OLMKqO0QBne5evvJJjusEFjEhto&state=eyJuZXh0X3VybCI6ICIiLCAic3RhdGVfaWQiOiAiYWQ0NDc3MGVmZmY5NDMyOGEzODBlNThjMGI5YWQ0ZTcifQ%3D%3D (172.22.0.1)
jupyterhub_1 | HTTPServerRequest(protocol='http', host='localhost:8001', method='GET', uri='/hub/oauth_callback?code=Rz9OLMKqO0QBne5evvJJjusEFjEhto&state=eyJuZXh0X3VybCI6ICIiLCAic3RhdGVfaWQiOiAiYWQ0NDc3MGVmZmY5NDMyOGEzODBlNThjMGI5YWQ0ZTcifQ%3D%3D', version='HTTP/1.1', remote_ip='172.22.0.1', headers={'X-Forwarded-Host': 'localhost:8001', 'Accept-Encoding': 'gzip, deflate, br', 'X-Forwarded-Port': '8001', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36', 'Upgrade-Insecure-Requests': '1', 'Cache-Control': 'max-age=0', 'Referer': 'http://localhost:8000/o/authorize/?client_id=5hICA5iNiBhBuROGzxGJqGQ7Ur7yH8dHi53aPLB5&response_type=code&state=eyJuZXh0X3VybCI6ICIiLCAic3RhdGVfaWQiOiAiYWQ0NDc3MGVmZmY5NDMyOGEzODBlNThjMGI5YWQ0ZTcifQ%3D%3D&redirect_uri=http%3A%2F%2Flocalhost%3A8001%2Fhub%2Foauth_callback', 'X-Forwarded-For': '172.22.0.1', 'X-Forwarded-Proto': 'http', 'Host': 'localhost:8001', 'Connection': 'close', 'Accept-Language': 'en-US,en;q=0.9', 'Cookie': '_xsrf=2|159cb5ee|fde7d35de59d079ff7b5b4e029156a50|1509298869; GUID_8800=6XuSYLOxGOHGBer7Ks3o; csrftoken=zDh7M6uxWbz8G83FZHPz29PBxRsj79m9x70bYc8PBOsOJAY3F9uNq60g2nHOpP56; sessionid=wfia2uydbydieqahawxlsk2rz45uhjoc; oauthenticator-state="2|1:0|10:1515351221|20:oauthenticator-state|120:ZXlKdVpYaDBYM1Z5YkNJNklDSWlMQ0FpYzNSaGRHVmZhV1FpT2lBaVlXUTBORGMzTUdWbVptWTVORE15T0dFek9EQmxOVGhqTUdJNVlXUTBaVGNpZlE9PQ==|c1315c25a514c4e01d49edeb1a0b4f9595c88b9f309ec041d31eca10c6510030"'})
jupyterhub_1 | Traceback (most recent call last):
jupyterhub_1 | File "/opt/conda/lib/python3.5/site-packages/tornado/web.py", line 1511, in _execute
jupyterhub_1 | result = yield result
jupyterhub_1 | File "/opt/conda/lib/python3.5/site-packages/oauthenticator/oauth2.py", line 182, in get
jupyterhub_1 | user = yield self.login_user()
jupyterhub_1 | File "/opt/conda/lib/python3.5/site-packages/jupyterhub/handlers/base.py", line 407, in login_user
jupyterhub_1 | authenticated = yield self.authenticate(data)
jupyterhub_1 | File "/opt/conda/lib/python3.5/site-packages/jupyterhub/auth.py", line 227, in get_authenticated_user
jupyterhub_1 | authenticated = yield self.authenticate(handler, data)
jupyterhub_1 | File "/opt/conda/lib/python3.5/site-packages/oauthenticator/generic.py", line 101, in authenticate
jupyterhub_1 | resp = yield http_client.fetch(req)
jupyterhub_1 | tornado.httpclient.HTTPError: HTTP 405: Method Not Allowed
jupyterhub_1 |
jupyterhub_1 | [E 2018-01-07 18:53:42.965 JupyterHub log:116] {
jupyterhub_1 | "X-Forwarded-Host": "localhost:8001",
jupyterhub_1 | "Accept-Encoding": "gzip, deflate, br",
jupyterhub_1 | "X-Forwarded-Port": "8001",
jupyterhub_1 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
jupyterhub_1 | "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36",
jupyterhub_1 | "Upgrade-Insecure-Requests": "1",
jupyterhub_1 | "Cache-Control": "max-age=0",
jupyterhub_1 | "Referer": "http://localhost:8000/o/authorize/?client_id=5hICA5iNiBhBuROGzxGJqGQ7Ur7yH8dHi53aPLB5&response_type=code&state=eyJuZXh0X3VybCI6ICIiLCAic3RhdGVfaWQiOiAiYWQ0NDc3MGVmZmY5NDMyOGEzODBlNThjMGI5YWQ0ZTcifQ%3D%3D&redirect_uri=http%3A%2F%2Flocalhost%3A8001%2Fhub%2Foauth_callback",
jupyterhub_1 | "X-Forwarded-For": "172.22.0.1",
jupyterhub_1 | "X-Forwarded-Proto": "http",
jupyterhub_1 | "Host": "localhost:8001",
jupyterhub_1 | "Connection": "close",
jupyterhub_1 | "Accept-Language": "en-US,en;q=0.9",
jupyterhub_1 | "Cookie": "_xsrf=2|159cb5ee|fde7d35de59d079ff7b5b4e029156a50|1509298869; GUID_8800=6XuSYLOxGOHGBer7Ks3o; csrftoken=zDh7M6uxWbz8G83FZHPz29PBxRsj79m9x70bYc8PBOsOJAY3F9uNq60g2nHOpP56; sessionid=wfia2uydbydieqahawxlsk2rz45uhjoc; oauthenticator-state=\"2|1:0|10:1515351221|20:oauthenticator-state|120:ZXlKdVpYaDBYM1Z5YkNJNklDSWlMQ0FpYzNSaGRHVmZhV1FpT2lBaVlXUTBORGMzTUdWbVptWTVORE15T0dFek9EQmxOVGhqTUdJNVlXUTBaVGNpZlE9PQ==|c1315c25a514c4e01d49edeb1a0b4f9595c88b9f309ec041d31eca10c6510030\""
jupyterhub_1 | }
所有必要的代码和配置都可以通过上面的源链接获得。我是否错误地使用/配置了身份验证?我是否遇到了一个底层库中的错误(我特别怀疑 JupyterHub,因为它处于早期积极开发阶段)?
编辑:我已将其发布为 an issue on the OAuthenticator github ,我仍然没有得到任何帮助。我找不到以前链接这两个服务的其他人,但他们共享 OAuth2 协议(protocol),因此应该相互合作。我已经深入了解了 JupyterHub 通用 OAuthenticator 和 Django OAuth2 提供程序的源代码,但无法弄清楚为什么会抛出此错误。谁能帮我解决这个问题?
最佳答案
原来是我必须解决的一些小错误才能让它工作:
我不确定是否有必要,但我还添加了 oauth-toolkit documentation 建议的中间件:
中间件 = [ ..., 'oauth2_provider.middleware.OAuth2TokenMiddleware',]
JupyterHub 还需要用户数据 URL 来获取用户名。这必须在 OAUTH2_USERDATA_URL 环境变量中提供(同样,使用相对于 JupyterHub 服务器的 URL),并且该 URL 必须返回一个至少包含“用户名”键的 JSON blob。
从以前的代码到工作示例的完整差异可用 at this commit (以及该存储库中的完整、最小的示例)。
关于python - 将 Django OAuth2 提供程序与 JupyterHub 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48175325/
重要提示:我通过访问我雇主的 jupyterhub 网站并登录来使用 Jupyter notebooks。我实际上从未运行过 jupyterhub命令行上的命令。 我提前提到这一点是因为我在 jupy
我正在使用 Kubernetes 创建 Jupyterhub,并按照 Zero to Jupyterhub 中提供的说明进行操作文档。 jupyterhub 的基本安装工作正常,我什至可以使用 jup
我正在使用 Zero to Jupyterhub Helm 包,以便将 Jupyterhub 部署到我们的 kubernetes 集群中。各个笔记本图像需要一些额外的环境变量(主要是数据库连接信息),
我正在尝试找出使用 JWT 对 JupyterHub 用户进行身份验证的最佳方法。在我的特定用例中,客户端将首先在主网站上进行身份验证,并在稍后阶段重定向到 JupyterHub 代理(两个站点都托管
我正在尝试在 Ubuntu 16.04 上本地运行 jupyterhub;但是,我似乎无法在终端上运行 jupyterhub 命令,并且出现找不到命令的错误。我通过运行以下命令安装了 jupyterh
我已经安装了JupyterHub并运行了它。当我打开页面时,将出现以下窗口: 在那里输入什么?文档是无声的。 最佳答案 用户名是“ jovyan”,密码是“ jupyter” 关于jupyterhub
我已经设置了 Jupyterhub,并安装了 anaconda 并在我的用户主目录中创建了一个 jupyterhub 内核,位于: ~/.local/share/jupyter/kernels/ 我如
我花了很多时间尝试我在网上找到的几个解决方案来解决这个问题。没有任何效果。 Install Location: anaconda : /opt/anaconda Run JupyterHub
我正在使用 JupyterHub 在一些用户之间共享大型计算机的计算能力。主要使用的软件是使用复杂的 C/C++ 代码的 ctypes 扩展 Python 脚本。此代码并非不受内存问题和崩溃的影响。
我正在尝试在 Ubuntu 16.04 上设置 Jupyterhub 服务器,大致类似于 https://github.com/minrk/jupyterhub-demo 。 我使用此处给出的提示更改
错误指向源代码中的以下行 if not user_exists: if self.create_system_users: await maybe_fu
我已经在 ubuntu 上设置了一个 jupyterhub python notebook 服务器。我想添加一些启动脚本,以便当用户登录到笔记本服务器时,将自动加载一些包和模块。有没有我可以指定启动脚
我已经设置了一个带有 LDAP 身份验证的 jupyterhub 服务器。服务器和身份验证工作正常。但我的问题是,我需要在服务器上创建我想手动登录的用户,否则他没有家,我收到此错误。 [I 2018-
我们目前正在 docker 容器中构建一个 jupyterhub 环境,并在共享文件夹中苦苦挣扎。我们的目标是建立一个对所有用户都可写的共享文件夹。 在每个用户的主文件夹中都有一个符号链接(symbo
我已经部署了 JupyterHub 并正在修改外观。我修改了登录模板 (login.html) 以显示背景图片。问题是登录框本身包含背景图像。 看起来像这样: 登录模板代码开始: {% extends
我正在运行JupyterHub AWS EKS 集群上的 0.8.2。 问题很简单,我想知道是否可以配置 JupyterHub 以在笔记本服务器中启用多选文件并全部下载? 或者,是否可以通过某种扩展/
我正在使用默认身份验证器和默认生成器运行 Jupyter-Hub。使用系统用户名 (admin) 登录到 Jupyter-Hub。我在 JupyterHub Web 控制台中添加了一个名为 user1
所以,我在 Windows 10 上安装了 Docker。然后,在 cmd.exe ,我运行一个 docker 容器: C:\Users\user>docker start -i image_name
我是 python 和 jupyterhub 的新手,我已经在云中安装了 juputerhub ubuntu 机器。我想在不从任何地方登录的情况下访问 jupyterhub。谁能帮我解决这个问题。 我
我试图配置 jupyterhub 代理以将内容路由到 my-host-ip/notebook但我无法弄清楚解决方案。 我正在使用以下 Nginx 配置: server { listen
我是一名优秀的程序员,十分优秀!