Keycloak 如何注册Keyclope密码哈希服务提供商SPI

Keycloak 如何注册Keyclope密码哈希服务提供商SPI,keycloak,keycloak-services,Keycloak,Keycloak Services,背景 我需要将定制应用程序的用户数据库迁移到KeyClope。我已经创建了一个keydape add user.json文件,成功导入了用户。迁移的用户密码在原始系统中是散列的,但是我已经实现了一个keydove Password散列SPI服务类,它使用现有的算法来验证迁移用户的散列值和salt值。Hash-SPI类从keydove-SPI实现PasswordHashProviderFactory和PasswordHashProvider,并基于“Pbkdf2PasswordHashProvid

背景

我需要将定制应用程序的用户数据库迁移到KeyClope。我已经创建了一个
keydape add user.json
文件,成功导入了用户。迁移的用户密码在原始系统中是散列的,但是我已经实现了一个keydove Password散列SPI服务类,它使用现有的算法来验证迁移用户的散列值和salt值。Hash-SPI类从keydove-SPI实现
PasswordHashProviderFactory
PasswordHashProvider
,并基于“Pbkdf2PasswordHashProvider”

public class MyPasswordHashProvider implements PasswordHashProviderFactory, PasswordHashProvider {
public static final String ID = "XXXX";
问题

当迁移的用户尝试使用keydape进行身份验证时,
org.keydape.hash.PasswordHashManager会记录一个错误

Could not find hash provider XXXX for password
My jar包含一个初始化文件
META-INF/services/org.keydove.models.PasswordHashProviderFactory
,其中一行包含HashProvider实现的完整类名

my.folder.MyPasswordHashProvider

这是基于联邦SPI doco的,但keyClope密码散列SPI的文档似乎不存在。我遗漏了什么,或者我需要做什么才能注册并使用KeyClope的哈希提供程序?

这是一个复制/粘贴错误-初始化文件的包名“model”而不是“Hash”,因此与
PasswordHashProviderFactory不匹配

在提供者jar中,初始化文件需要命名为:

META-INF/services/org.keycloak.credential.hash.PasswordHashProviderFactory
并包含一行实现工厂类的全名-在本例中:

my.folder.MyPasswordHashProvider

在较新版本的KeyClope中(我选中了2.5.4),文件需要是
META-INF/services/org.keydrope.credential.hash.PasswordHashProviderFactory

嗨,我还需要一个自定义哈希提供程序。我也这样做了,但是当通过
standalone.sh
启动KeyClope时,发生了错误:
原因:org.keydeport.models.modeleexception:hashAlgorithm的配置无效:未找到密码哈希提供程序
,那么您是否为
hashAlgorithm
配置过任何内容?