tornado.httpclient.HTTPError: HTTP 401: Unauthorized

Hi guys, I launched binder on Google Cloud, I see binder page, but when I try to add repository - Im getting Internal Server Error.
I checked the logs and found this one

[I 190208 08:39:41 repoproviders:441] Using cached ref for https://api.github.com/repos/minrk/ligo-binder/commits/master: b8259dac9eb4aa5f2d65d8881f2da94a4952a195
[E 190208 08:39:41 web:1621] Uncaught exception GET /build/gh/minrk/ligo-binder/master (234.234.23.23)
    HTTPServerRequest(protocol='http', host='binder.givemefive.in', method='GET', uri='/build/gh/minrk/ligo-binder/master', version='HTTP/1.1', remote_ip='234.234.23.23')
    Traceback (most recent call last):
      File "/usr/local/lib/python3.6/site-packages/tornado/web.py", line 1543, in _execute
        result = yield result
      File "/usr/local/lib/python3.6/site-packages/tornado/gen.py", line 1099, in run
        value = future.result()
      File "/usr/local/lib/python3.6/site-packages/binderhub/builder.py", line 273, in get
        image_manifest = await self.registry.get_image_manifest(*'/'.join(image_name.split('/')[-2:]).split(':', 1))
      File "/usr/local/lib/python3.6/site-packages/tornado/gen.py", line 1107, in run
        yielded = self.gen.throw(*exc_info)
      File "/usr/local/lib/python3.6/site-packages/binderhub/registry.py", line 199, in get_image_manifest
        auth_resp = yield client.fetch(auth_req)
      File "/usr/local/lib/python3.6/site-packages/tornado/gen.py", line 1099, in run
        value = future.result()
    tornado.httpclient.HTTPError: HTTP 401: Unauthorized

I got stuck.
I will appreciate any help!

hey - could you post a link (or copy/paste the text of) your config.yml and secret.yml file? (make sure to redact the sensitive info). Usually errors and such are a result of something in one of those files!

config.yaml

config:
  BinderHub:
    use_registry: true
    image_prefix: gcr.io/binder-mybinder5/binder-prod-
config:
  BinderHub:
    hub_url: http://external_ip_that_I_got_from_get_svc_proxy-public_command

secret.yaml

jupyterhub:
  hub:
    services:
      binder:
        apiToken: xxxxxxx
  proxy:
    secretToken: xxxxxxx

registry:
  url: https://gcr.io
  password: |
    {
      "type": "service_account",
      "project_id": "xxxxx",
      "private_key_id": "xxxxxx",
      "private_key": "xxxxxx"
      "client_email": "xxxxx@xxxxxx",
      "client_id": "xxxxxxx",
      "auth_uri": "https://accounts.google.com/o/oauth2/auth",
      "token_uri": "https://oauth2.googleapis.com/token",
      "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
      "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/xxxxx
    }

config:
  GitHubRepoProvider:
    access_token: my_github_token

I tried Docker also, but had the same error

@sharypovandrey Recently I am also facing the same problem which you are facing.
Please tell me how did you solve this. It will be much appreciated.

1 Like

Hey! I dont remember certain steps but what helped me is CORS settings.
Please try to add

cors: &cors
  allowOrigin: '*'

to secret.yaml

and then helm upgrade binder jupyterhub/binderhub --version=0.2.0-6bfd93b -f secret.yaml -f config.yaml

but it beware its not secure way

and also check that you have set IP addresses correct

@sharypovandrey Thanks for reply!

Can you explain you are talking about which IP Addresses?
Also at which level I have to add cors in secret.yaml. Is it at root level?

@choldgraf I’m also facing the same issue from a log time. I’m using DockerHub with DigitalOcean

Here is my secret.yaml

cors: &cors
  allowOrigin: '*'
jupyterhub:
  hub:
    extraConfigMap:
      cors: *cors
    services:
      binder:
        apiToken: XXXXXXXX
  proxy:
    secretToken: XXXXXXXX
registry:
  username: hmharshit
  password: XXXXXXXX

It would be much appreciated if you can share your secret.yaml and config.yaml which are working after rectifying 401 issue.