After some additional sleuthing I realized I wasn't passing the
'Authorization' header with the contents API request. Thinking this might be
the problem I added the header, but then got the following response in the
console running jupyterhub:

[E 2017-07-22 10:05:45.125 JupyterHub web:1590] Uncaught exception GET
/hub/user/millejoh/api/contents/ (::ffff:127.0.0.1)
    HTTPServerRequest(protocol='http', host='127.0.0.1:8000', method='GET',
uri='/hub/user/millejoh/api/contents/', version='HTTP/1.1',
remote_ip='::ffff:127.0.0.1', headers={'X-Forwarded-Host': '127.0.0.1:8000',
'X-Forwarded-Proto': 'http', 'X-Forwarded-Port': '8000', 'X-Forwarded-For':
'::ffff:127.0.0.1', 'Authorization': 'token
bb5e49ad68dc4f5abdaccd954abb8742', 'X-Xsrftoken':
'2|d136b4d2|ee8d84ef6c536241a6e09c36453a9328|1497490250', 'Cookie':
'_xsrf=2|d136b4d2|ee8d84ef6c536241a6e09c36453a9328|1497490250',
'Accept-Encoding': 'deflate, gzip', 'Accept': '*/*', 'User-Agent':
'curl/7.54.0', 'Host': '127.0.0.1:8000', 'Connection': 'close'})
    Traceback (most recent call last):
      File
"/home/millejoh/miniconda3/envs/jupyterhub/lib/python3.6/site-packages/torna
do/web.py", line 1511, in _execute
        result = yield result
      File
"/home/millejoh/miniconda3/envs/jupyterhub/lib/python3.6/site-packages/jupyt
erhub/handlers/base.py", line 520, in get
        if current_user.spawner:
    AttributeError: 'User' object has no attribute 'spawner'

[E 2017-07-22 10:05:45.223 JupyterHub log:99] {
      "X-Forwarded-Host": "127.0.0.1:8000",
      "X-Forwarded-Proto": "http",
      "X-Forwarded-Port": "8000",
      "X-Forwarded-For": "::ffff:127.0.0.1",
      "Authorization": "token [secret]",
      "X-Xsrftoken":
"2|d136b4d2|ee8d84ef6c536241a6e09c36453a9328|1497490250",
      "Cookie":
"_xsrf=2|d136b4d2|ee8d84ef6c536241a6e09c36453a9328|1497490250",
      "Accept-Encoding": "deflate, gzip",
      "Accept": "*/*",
      "User-Agent": "curl/7.54.0",
      "Host": "127.0.0.1:8000",
      "Connection": "close"
    }
[E 2017-07-22 10:05:45.225 JupyterHub log:100] 500 GET
/hub/user/millejoh/api/contents/ (millejoh@::ffff:127.0.0.1) 96.56ms

-----Original Message-----
From: John Miller [mailto:[email protected]] 
Sent: Friday, July 21, 2017 5:22 PM
To: [email protected]
Subject: Emacs IPython Notebook and Jupyterhub

Getting EIN working with Jupyterhub has been a long standing request, and I
have been trying to get this implemented the past couple days. Unfortunately
I've come against a wall and wonder if someone here might be able to provide
some guidance.

At the moment I am using the REST API as documented on the website
(https://jupyterhub.readthedocs.io/en/latest/_static/rest-api/index.html)
and things go pretty well, up to a certain point. Here is the sequence of
events I have programmed:

1. After supplying a url, user name, and password, ein sends a query to
'/hub/api/authorizations/token'.
2. We store the token, make sure the Authorization header looks like the
example code at (https://jupyterhub.readthedocs.io/en/latest/rest.html) then
query '/hub/api/user/[user]/server' to start a notebook server.
3. EIN queries '/hub/api/user/[user]' to get information about this user,
most importantly we are looking for the server path for the newly started
server.
4. Use the server path to use EIN's usual facilities for accessing the
notebook server.

Things work great up until step 4. EIN will try querying, as an example,
'http://127.0.0.1:8000/user/millejoh/api/contents' and Jupyterhub will
respond by redirecting to the hub login page. Interestingly enough a call to
'http://127.0.0.1:8000/user/millejoh/api' works as expected, that is it will
return JSON with the version of the running notebook server.

Apparently authenticating via '/hub/api/authentications/token' doesn't
really authenticate, at least as far as access to the contents API is
concerned? Is there something else EIN needs to be doing to ingratiate
itself to jupyterhub and convince the hub it really is a nice guy/gal and
promises to play nice with everyone?

Best regards,

John




-- 
You received this message because you are subscribed to the Google Groups 
"Project Jupyter" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jupyter/000701d302fc%24d41c6080%247c552180%24%40gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to