многопользовательская аутентификация на jupyterhub - PullRequest
0 голосов
/ 19 сентября 2018

В моем развертывании JupyterHub для аутентификации пользователей используется Okta.У меня есть собственный Authenticator, который проверяет пользователя по Okta, но затем возвращает определенного пользователя someUser независимо от того, какой пользователь на самом деле.Это было сделано для того, чтобы избежать обработки системных разрешений и обеспечить легкий обмен записными книжками и работающими ядрами между пользователями.

Теперь я хотел бы знать, кто является аутентифицированным пользователем, для удобства использования, а не для обеспечения безопасности.На документах я видел, что это можно сделать с помощью auth_state.Я добавил несколько ключей к auth_state, как показано в примере:

class MyAuthenticator(Authenticator):
    @gen.coroutine
    def authenticate(self, handler, data=None):
        username = ...
        return {
            'name': 'someUser',
            'auth_state': {
                'user': username,
            },
        }

    @gen.coroutine
    def pre_spawn_start(self, user, spawner):
        """Pass upstream_token to spawner via environment variable"""
        auth_state = yield user.get_auth_state()
        if not auth_state:
            # auth_state not enabled
            return
        spawner.environment['OKTA_USER'] = auth_state['user']

Сначала это привело к пустому auth_state;Затем я увидел, что необходимо применить некоторые конфигурации, поэтому я добавил c.Authenticator.enable_auth_state = True в файл конфигурации JupyterHub и export JUPYTERHUB_CRYPT_KEY=$(openssl rand -hex 32) для процесса JupyterHub.

Однако, когда я пытаюсь после этого перезапустить службу JupyterHub,он не загружается должным образом.Журналы показывают, что он продолжает пытаться сделать:

Loading cookie_secret from ....../jupyterhub_cookie_secret

, но нет правильного сообщения об ошибке, которое я мог бы найти где-либо.

Если я закомментирую c.Authenticator.enable_auth_stateконфигурация, он загружается нормально, эта строка загрузки cookie появляется в журнале только один раз.

В коде указано, что cryptography должно быть установлено, поэтому я убедился, что это,Я также попытался изменить код по умолчанию для параметра enable_auth_state вместо того, чтобы делать это через config, но получил те же результаты.

Мой главный вопрос: что я делаю неправильно и как я могу получить auth_stateработать как положено?

Или я просто все делаю неправильно и должен просто прекратить использование someUser и разрешить легкий обмен ядром другим способом?

...