Keycloak JupyterHub для автоматического входа с использованием токена JWT - PullRequest
1 голос
/ 05 июля 2019

Нам удалось настроить нашу среду jupyterhub (z2jh) для использования Keycloak в качестве сервера аутентификации, и пользователям предоставляется экран ввода пароля при попытке доступа к веб-сайту jupyterhub.Конфигурация, используемая для этого, приведена ниже.

Вопрос, который у нас возникает, заключается в том, как автоматически выполнять вход пользователей на сервер jupyterhub с другого веб-сайта.Мы не используем keycloak для аутентификации на другом сайте.Таким образом, процесс входа в систему, который мы предполагаем, будет следующим:

  • Пользователь заходит на основной веб-сайт (без ключа)
  • Пользователь переходит на веб-страницу, где мы должны получить ссылку на jupyterhub.notebook
  • Мы генерируем токен JWT, используя запрос к серверу keycloak.
  • Каким-то образом мы используем токен для входа пользователя на сервер jupyterhub.

Мыудалось успешно создать веб-токен с помощью почтальона, чтобы отправить запрос с использованием client_id, secret, имени пользователя и пароля.

Наш вопрос: как мы используем этот токен для входа в систему?

Мы можем видеть во время ручного входа в систему обратный вызов, но мы не уверены, как нам сгенерировать «состояние».Мы предполагаем, что в cookie-файле my-jhub что-то установлено, но любые отзывы или ссылки, которыми мы будем руководствоваться, будут высоко оценены.

https://my -jhub.xxx.net / hub / api / oauth2 /санкционировать? client_id = jupyterhub-пользователем user_a & redirect_uri =% 2Fuser% 2Fuser_a% 2Foauth_callback & response_type = код и состояние = eyJ1dwLkIjogImU2ZWY3ZDYyZWMzZTQ3ZmY5Nzg4ODJkOTkxMTcxYjdmIiwgIm5leHRfdXJsIjogIi91c2oyL3BhZHJhaWMvdHJlZT9yZWRpcmVjdHM9MSJ9

1025
hub
  extraEnv: 
    OAUTH2_AUTHORIZE_URL: https://keycloak.xxx.net/auth/realms/test_realm/protocol/openid-connect/auth
    OAUTH2_TOKEN_URL: https://keycloak.xxx.net/auth/realms/test_realm/protocol/openid-connect/token
    OAUTH_CALLBACK_URL: http://my-jhub.xxx.net/hub/oauth_callback

1 Ответ

0 голосов
/ 05 июля 2019

Чтобы сделать то, что вы описываете, вам нужно настроить Keycloak как Identity Broker здесь.Похоже, вы настроили JupyterHub в качестве клиента для Keycloak.Под этим я подразумеваю, что JupyterHub использует токены, выданные Keycloak, и доверяет им.

Если вы используете функцию идентификации ключей в Keycloak и сконфигурируете свой «другой сайт» в качестве провайдера идентификации в Keycloak, то выиметь возможность войти на свой «другой сайт», а затем использовать эту идентификацию через Keycloak в JupyterHub.В этом сценарии происходит то, что Keycloak выступает в качестве посредника между вашим «другим сайтом» и вашим клиентом JupyterHub.Если Keycloak обнаружит, что ваш пользователь вошел в систему через «другой веб-сайт», он выдаст свой собственный токен на основании этого, и тогда ваш JupyterHub сможет использовать этот токен Keycloak, поскольку он уже настроен для использования Keycloak для идентификации.

Посмотрите здесь, как это работает: https://www.keycloak.org/docs/6.0/server_admin/index.html#_identity_broker

...