Keycloak 如何注册Keyclope密码哈希服务提供商SPI
背景 我需要将定制应用程序的用户数据库迁移到KeyClope。我已经创建了一个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
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
配置过任何内容?