Keycloak 用户联合使用现有 MySQL 数据库进行用户身份验证

Keycloak User federation using existing MySQL database for users authentication

我正在尝试为我们的组织设置 Keycloak 服务器。我有几个问题。

  1. 我们如何使用我们现有的用户数据库来验证用户 - 用户联盟。 Keycloak 只有 LADP/Kerberos 个选项。是否有任何可用于 MySQL 用户身份验证的自定义插件,或者我们可以通过一些数据库适配器使用现有的连接器本身 (LDAP/Kerberos) 吗?
  2. 是否可以在 Keycloak 环境中拥有多个身份提供者 -(将 Keycloak 作为少数服务的 IDP,而将 Keycloak Google IDP 用于其他服务)。

我已经按照官方文档进行了操作,但是由于某些原因无法查看link的内容。任何指向正确指南的有用链接都会很棒。

您应该实施自己的用户存储 SPI 以将您的 MySQL 数据库集成为外部用户存储数据库

https://www.keycloak.org/docs/latest/server_development/index.html#_user-storage-spi

检查 Keycloak 自定义用户联盟

这意味着,在Keycloak用户名/密码登录时使用不同的数据源(或进程)

参见 =>

  1. https://github.com/keycloak/keycloak-documentation/blob/master/server_development/topics/user-storage/simple-example.adoc
  2. https://tech.smartling.com/migrate-to-keycloak-with-zero-downtime-8dcab9e7cb2c github => (https://github.com/Smartling/keycloak-user-migration-provider)

首先 link => 解释如何将外部数据库配置为 keycloak。

第二个 link(需要更改)=> 这些示例可以这样更改,

  • 您可以创建自定义联合实施,
  • 它将调用您的服务,
  • 您的服务将查询您的数据库
  • 您的服务将响应您的结果

第二个例子(我的建议)将抽象你的自定义代码(联合过程,你的服务)和keycloak。 Keycloak 只调用你的服务,其他一切都是你的实现。

我回答了一个关于现有数据库用户和 keycloak 身份验证的类似问题 (link here)

我将自己的解决方案发布为多 RDBMS 实现(oracle、mysql、postgresl、sqlserver)来解决简单的数据库联合需求,支持 bcrypt 和多种类型的哈希。

这是一个可配置的 keycloak 自定义提供程序,您只需设置一些 SQL 查询即可使用。

它已经与新的 keycloak quarkus 部署兼容。

随时克隆、分叉、贡献或做任何你需要的事情来解决你的问题。

GitHub 回购:

https://github.com/opensingular/singular-keycloak-database-federation