我们已经成功设置了jupyterhub环境(z2jh),以将Keycloak用作身份验证服务器,并且在用户尝试访问jupyterhub网站时会向其提供输入密码屏幕。用于此目的的配置如下。
我们的问题是如何从另一个网站自动将用户登录到jupyterhub服务器。我们没有使用keycloak在其他网站上进行身份验证。因此,我们假设登录过程将遵循以下步骤
我们已经成功地使用邮递员成功创建了一个Web令牌,并使用client_id,secret,用户名和密码进行了发布请求。
我们的问题是我们如何使用此令牌登录用户?
在手动登录过程中,我们可以看到回叫,但是我们不确定如何生成“状态”。 我们假设在my-jhub cookie中已设置了一些内容,但是任何指导我们的反馈或链接将不胜感激。
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
答案 0 :(得分:0)
为了执行您所描述的操作,您需要在此处将Keycloak配置为Identity Broker。听起来您已经将JupyterHub配置为Keycloak的客户端。我的意思是JupyterHub使用并信任Keycloak发行的令牌。
如果您使用Keycloak的身份代理功能,并在Keycloak中将“另一个网站”配置为身份提供者,那么您将能够登录到“另一个网站”,然后在Windows中通过Keycloak使用该身份JupyterHub。在这种情况下,Keycloak充当“另一个网站”和JupyterHub客户端之间的中介。如果Keycloak检测到您的用户已通过“另一个网站”登录,它将基于此发布自己的令牌,然后您的JupyterHub将能够使用此Keycloak令牌,因为它已配置为使用Keycloak进行身份验证。
在这里查看其工作原理:https://www.keycloak.org/docs/6.0/server_admin/index.html#_identity_broker