У меня было аналогичное требование использовать Jupyterhub из моего приложения. Мое требование состояло в том, чтобы обойти вход в Jupyterhub и использовать вход в мое приложение для входа в Jupyterhub. Я проверил различные механизмы аутентификации и не нашел ничего, что можно было бы использовать напрямую. Наконец, я внес изменения в один из пользовательских плагинов аутентификации. Подробности приведены ниже.
Я изменил плагин jhub_remote_user_authenticator. Ниже представлена основная функция, отвечающая за аутентификацию. (remote_user_auth.py)
class RemoteUserLoginHandler(BaseHandler):
def get(self):
header_name = self.authenticator.header_name
remote_user = self.request.headers.get(header_name, "")
if remote_user == "":
raise web.HTTPError(401)
else:
user = self.user_from_username(remote_user)
self.set_login_cookie(user)
self.redirect(url_path_join(self.hub.server.base_url, 'home'))
Этот плагин проверяет аргумент REMOTE_USER в заголовке запроса и входит в систему как этот конкретный пользователь. Это очень полезно, если мы используем сервер Apache httpd с SSO.
Я изменил этот плагин, чтобы выполнить простой вход в систему. Это очень простой. Я объясняю это просто в качестве примера. Вы можете изменить это в соответствии с вашими требованиями. Модифицированный код приведен ниже.
class RemoteUserLoginHandler(BaseHandler):
def get(self):
remote_user = self.get_argument('user', None, True)
if remote_user == "":
raise web.HTTPError(401)
else:
user = self.user_from_username(remote_user)
self.set_login_cookie(user)
self.redirect(url_path_join(self.hub.server.base_url, 'home'))
Теперь с этим измененным плагином, если вы получите доступ к концентратору jupyter с аргументом user=, откроется блокнот для соответствующего пользователя. Это также позволит обойти экран входа в систему.
http://jupyterhuburl:port/hub/login?user=amal --> Это откроет блокнот для пользователя amal.
http://jupyterhuburl:port/hub/login?user=demouser --> Это откроет блокнот для пользователя demouser.
Вы можете изменить эту функцию в соответствии с вашими требованиями. Это всего лишь пример. Мы можем добавить изменить это, чтобы обеспечить более безопасный вход в систему.
person
Amal G Jose
schedule
04.04.2018