keycloak 跳过登录页面登录

Keycloak login by skipping the login page

我有 2 个不同的应用程序:比如 Application1 和 Application2。

我已经将 Application2 与 keycloak 集成在一起,我可以使用 Keycloak 的登录页面登录到此应用程序。

现在我想要的是,如果我登录到我的 Application1(没有 keycloak),我应该能够调用一些 API 的 keycloak 来登录到 application2(没有呈现 keycloak 的登录页面)。

可行吗?如果是,如何?

非常感谢任何帮助。

谢谢

TLDR;不,这不可能。

您可以登录 Keycloak 并通过 API 为用户获取访问令牌,但它只能用于代表用户在 Application2 上调用 APIs。因此,如果您不打算显示 Application2 UI 并且用户将在 Application1.

中看到 Application2 API 调用的结果,这将很有用

原因是 Keycloak 与其他 SSO 解决方案一样,使用 cookie 来跟踪 SSO 会话。因此,如果您的用户登录到 Application2,he/she 将在其浏览器上拥有 Keycloak SSO cookie。因此,当用户第一次访问 Application1(如果 Application1 与 Keycloak 集成)时,因为它没有会话,he/she 被重定向到 Keycloak 登录页面,Keycloak 会注意到 SSO cookie 在那里并且是有效,因此将用户视为已登录用户,不会呈现任何登录 UI,只是将其重定向回 Application1。

您无法通过 API 访问该 Keycloak cookie,即使可以,您也无法在 Keycloak 域的用户浏览器上设置它。