SPI

2016-08-01 22 views
0

背景SPI

私はKeycloakにオーダーメイドのアプリケーションのためのユーザデータベースを移行する必要があります。ユーザーを正しくインポートするファイルkeycloak-add-user.jsonを作成しました。移行されたユーザーパスワードは元のシステムでハッシュされていますが、既存のアルゴリズムを使用して移行されたユーザーのハッシュ値とソルト値を検証するKeycloak Password Hash SPIサービスクラスを実装しました。 Hash SPIクラスはKeycloak SPIからPasswordHashProviderFactoryPasswordHashProviderを実装し、 `Pbkdf2PasswordHashProvider 'に基づいています。

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

問題

移行されたユーザーは、keycloakエラーが私のjarファイルを含む単一の行で初期化ファイルMETA-INF/services/org.keycloak.models.PasswordHashProviderFactoryが含まれているorg.keycloak.hash.PasswordHashManager

Could not find hash provider XXXX for password 

によってログに記録されるで認証しようとするとHashProvider実装の完全なクラス名。

my.folder.MyPasswordHashProvider 

これは、連盟のSPI DOCOに基づいていますが、KeycloakパスワードハッシュSPIのドキュメントが存在しないように思われました。何が欠けているのですか、またはKeycloakでハッシュプロバイダを登録して使用するために何をする必要がありますか?

答えて

0

これはコピー/ペーストエラーであることが判明しました。初期化ファイルの名前が「ハッシュ」ではなく「モデル」であるため、PasswordHashProviderFactoryと一致しませんでした。で

my.folder.MyPasswordHashProvider 
1

: - この場合は

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

と実装ファクトリクラスの完全な名前を持つ単一の行が含まれている:初期化ファイルの名前を付ける必要があり、プロバイダジャーで

新しいバージョンのキークローキング(私は2.5.4をチェックしました)、ファイルはMETA-INF/services/org.keycloak.credential.hash.PasswordHashProviderFactory

である必要があります