在自己的应用程序中使用 Keycloak 的用户

Use Keycloak`s users in own application

我们有几个应用程序在其中使用自定义实现的安全性和用户管理。现在我们可能会切换到 keycloak,因为它是一个更好的解决方案。

在每个应用程序中,我们在多个地方使用我们的用户模型,例如 Product (f.e。creator_id = 1) a.s.o。 这里有人问了类似的问题

我的问题是:

如何在不将用户迁移到 keycloak 的情况下保留我们的用户模型,但使用 keycloak 进行身份验证和用户管理?以及如何同步用户注册过程(使用Keycloak)?一个有用的示例将非常有帮助。

我建议实施自定义 User Storage SPI (https://www.keycloak.org/docs/latest/server_development/index.html#_user-storage-spi),在登录时将用户数据从自定义数据库即时导入 Keycloak 的数据库- 每个用户的时间。 在您的应用程序前面,您可以使用适当的 Keycloak 适配器和自定义 filter/interceptor 将 Keycloak 特定用户模型(参见 org.keycloak.KeycloakPrincipal)转换为您自己的用户模型。

我为几个客户做了这个,效果很好。使用这种方法,通常不需要更改受保护应用程序的代码。

对于用户注册过程,只需在 keycloak 登录页面上放置一个 link,将用户定向到您当前的注册实施。为此,您需要在 Keycloak 中使用自定义登录主题。但是,您可能无论如何都需要该自定义方案来根据您自己的外观自定义 Keycloak 登录页面。