2016-08-01 120 views
0

背景如何註冊Keycloak密碼哈希服務提供商SPI

我需要遷移的用戶數據庫的定製應用到Keycloak。我創建了一個成功導入用戶的keycloak-add-user.json文件。遷移的用戶密碼在原始系統中被散列,但是我已經實現了Keycloak密碼散列SPI服務類,該類使用現有的算法來驗證遷移用戶的散列值和鹽值。哈希SPI類實現Keycloak SPI中的PasswordHashProviderFactoryPasswordHashProvider,並基於`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 

記錄我的罐包含初始化文件META-INF/services/org.keycloak.models.PasswordHashProviderFactory使用包含單個線HashProvider實現的完整類名。

my.folder.MyPasswordHashProvider 

這是基於聯邦SPI doco,但Keycloak Password Hash SPI的文檔似乎不存在。我錯過了什麼,或者我需要做什麼來註冊和使用我的Hash Provider和Keycloak?

回答

0

原來這是一個複製/粘貼錯誤 - 初始化文件有錯誤的軟件包名稱'model'而不是'hash',因此與PasswordHashProviderFactory不匹配。

在供應商的jar初始化文件需要被命名爲:

META-INF/services/org.keycloak.credential.hash.PasswordHashProviderFactory 

並且包含該實現工廠類的全名一行 - 在這種情況下:

my.folder.MyPasswordHashProvider 
1

在keycloak的新版本(我檢查了2.5.4),文件需要是META-INF/services/org.keycloak.credential.hash.PasswordHashProviderFactory