如何注册Keycloak密码哈希服务提供商SPI
How to Register Keycloak Password Hash Service Provider SPI
背景
我需要将定制应用程序的用户数据库迁移到 Keycloak。我创建了一个成功导入用户的 keycloak-add-user.json
文件。迁移的用户密码在原始系统中进行了哈希处理,但是我已经实现了 Keycloak 密码哈希 SPI 服务 class,它使用现有算法来验证迁移用户的哈希值和盐值。 Hash SPI class 实现了 Keycloak SPI 的 PasswordHashProviderFactory
和 PasswordHashProvider
,并基于“Pbkdf2PasswordHashProvider”。
public class MyPasswordHashProvider implements PasswordHashProviderFactory, PasswordHashProvider {
public static final String ID = "XXXX";
问题
当迁移的用户尝试使用 keycloak 进行身份验证时,org.keycloak.hash.PasswordHashManager
会记录错误
Could not find hash provider XXXX for password
我的 jar 包含一个初始化文件 META-INF/services/org.keycloak.models.PasswordHashProviderFactory
,其中一行包含 HashProvider 实现的完整 class 名称。
my.folder.MyPasswordHashProvider
这是基于 Federation SPI doco,但 Keycloak Password Hash SPI 的文档似乎不存在。我缺少什么,或者我需要做什么来注册和使用我的 Hash Provider with Keycloak?
这被证明是一个 copy/paste 错误 - 初始化文件有错误的包名称 'model' 而不是 'hash',因此与 PasswordHashProviderFactory
不匹配.
在提供程序 jar 中,初始化文件需要命名:
META-INF/services/org.keycloak.credential.hash.PasswordHashProviderFactory
并包含一行带有实现工厂的全名 class - 在本例中:
my.folder.MyPasswordHashProvider
在较新版本的keycloak中(我检查了2.5.4),文件需要是META-INF/services/org.keycloak.credential.hash.PasswordHashProviderFactory
背景
我需要将定制应用程序的用户数据库迁移到 Keycloak。我创建了一个成功导入用户的 keycloak-add-user.json
文件。迁移的用户密码在原始系统中进行了哈希处理,但是我已经实现了 Keycloak 密码哈希 SPI 服务 class,它使用现有算法来验证迁移用户的哈希值和盐值。 Hash SPI class 实现了 Keycloak SPI 的 PasswordHashProviderFactory
和 PasswordHashProvider
,并基于“Pbkdf2PasswordHashProvider”。
public class MyPasswordHashProvider implements PasswordHashProviderFactory, PasswordHashProvider {
public static final String ID = "XXXX";
问题
当迁移的用户尝试使用 keycloak 进行身份验证时,org.keycloak.hash.PasswordHashManager
Could not find hash provider XXXX for password
我的 jar 包含一个初始化文件 META-INF/services/org.keycloak.models.PasswordHashProviderFactory
,其中一行包含 HashProvider 实现的完整 class 名称。
my.folder.MyPasswordHashProvider
这是基于 Federation SPI doco,但 Keycloak Password Hash SPI 的文档似乎不存在。我缺少什么,或者我需要做什么来注册和使用我的 Hash Provider with Keycloak?
这被证明是一个 copy/paste 错误 - 初始化文件有错误的包名称 'model' 而不是 'hash',因此与 PasswordHashProviderFactory
不匹配.
在提供程序 jar 中,初始化文件需要命名:
META-INF/services/org.keycloak.credential.hash.PasswordHashProviderFactory
并包含一行带有实现工厂的全名 class - 在本例中:
my.folder.MyPasswordHashProvider
在较新版本的keycloak中(我检查了2.5.4),文件需要是META-INF/services/org.keycloak.credential.hash.PasswordHashProviderFactory