我有一个设置,其中Keycloak充当身份代理。在Keycloak中配置了两个Oauth2.0身份提供者。用户转到我的应用程序,被转到Keycloak,然后出现两个按钮。这些按钮可用于使用JWT1或JWT2进行身份验证。一旦用户通过身份验证,keycloak将接收IdP令牌并将其自己的IdP令牌发布到客户端,该令牌包含从所选IdP接收的JWT令牌中的声明。到目前一切尚好。
现在,我有了将应用程序嵌入到另一个CRM平台中的用例。假设这个客户关系管理平台使用IdP 1,这样用户就可以访问客户关系管理,并通过IdP 1进行身份验证。然后,用户可以点击一个按钮并转到我的应用程序。当然,我们不希望用户再次使用相同的IdP进行身份验证,但现在首先要通过Keycloak。
我的问题是,有没有办法让Keycloak使用用户在访问IdP平台时收到的JWT1令牌,让Keycloak丰富它并发布JWT令牌,就像用户通过Keycloak进行身份验证一样?
发布于 2019-11-19 20:31:16
考虑实现自定义的Authenticator,它将在来自CRM的Keycloak用户中登录。我们的目标是在Keycloak中启动SSO会话。
假设当用户点击客户关系管理中的按钮访问你的应用程序时,Keycloak将可以访问IDP1提供的一些数据,这些数据可能有助于识别哪个用户执行了此类操作。所以我们开始吧:
自己的自定义密钥掩码身份验证器将利用来自IDP1的信息(您可以以某种方式利用提到的JWT令牌)
还要注意,您必须解决Keycloak和IdP1之间的会话空闲同步的潜在问题。
https://stackoverflow.com/questions/58931035
复制相似问题