使用JWT令牌KeyCloak JupyterHub自动签名



我们已经设法设置了jupyterhub环境(Z2JH(将KeyCloak用作身份验证服务器,并且在尝试访问JupyterHub网站时,给用户提供了输入密码屏幕。为此使用的配置在下面。

我们遇到的问题是,我们如何从另一个网站自动登录用户到JupyterHub服务器。我们没有使用KeyCloak在另一个网站上进行身份验证。因此,我们假设的登录过程将沿以下行

  • 用户登录主要网站(无KeyCloak(
  • 用户转到网页,我们应该在其中链接到jupyterhub笔记本
  • 我们使用对KeyCloak服务器的POST请求生成JWT令牌。
  • 我们以某种方式使用令牌将用户签名到JupyterHub服务器中。

我们已经成功地使用Postman成功创建了一个网络令牌,以使用客户端,秘密,用户名和密码进行发布请求。

我们的问题是,我们如何使用此令牌来登录用户?

我们可以在手动登录过程中看到回电,但我们不确定如何生成"状态"。我们假设My-Jhub Cookie已设置了某些内容,但是对我们的任何反馈或链接都将不胜感激。

https://my-jhub.xxx.net/hub/api/oauth2/authorize?client_id=jupyterhub-user-user_a = Y3ZDYYZWMZZTQ3ZMY5NZG4ODJKOTKXMTCXYJDMIIWGIM5LEHRFDXJSJSIJOGII91C2OYL3BHZHJHAWMVDHJLZT9YZT9YZT9YZWRPCMVJDHMVJDHM9MMSJ9

  auth:
       type: custom
  className: oauthenticator.generic.GenericOAuthenticator
  config:
    login_service: 'keycloak'
    client_id: 'kubernetes-cluster-dev'
    client_secret: 'yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy'
    token_url: https://keycloak.xxx.net/auth/realms/test_realm/protocol/openid-connect/token
    userdata_url: https://keycloak.xxx.net/auth/realms/test_realm/protocol/openid-connect/userinfo
    userdata_method: GET
    userdata_params: {‘state’: ‘state’}
    username_key: preferred_username
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

为了做您描述的事情,您需要在此处将KeyCloak配置为身份代理。听起来您已将JupyterHub配置为KeyCloak的客户。我的意思是jupyterhub使用和信任KeyCloak发出的代币。

如果您使用KeyCloak的身份经纪功能,并将您的"另一个网站"配置为KeyCloak中的身份提供商,那么您将能够登录您的"另一个网站",然后通过IN中的KeyCloak使用该身份jupyterhub。在这种情况下,发生的事情是,KeyCloak充当您的"另一个网站"和JupyterHub客户端之间的中介。如果KeyCloak检测到您的用户是否已通过"另一个网站"登录,则它将基于此签发其令牌,然后您的JupyterHub将能够使用此KeyCloak代币,因为它已经配置为使用KeyCloak来实现身份。

在这里查看此操作的工作方式:https://www.keycloak.org/docs/6.0/server_admin/index.html#_identity_broker

最新更新