プロバイダー・インターフェイスユーザー・ストレージSPIを実装する場合、プロバイダー・クラスとプロバイダー・ファクトリーを定義する必要があります。プロバイダー・クラス・インスタンスは、プロバイダー・ファクトリーによってトランザクション毎に作成されます。プロバイダー・クラスは、ユーザーのルックアップやその他の操作などの重い処理をすべて請け負います。インターフェイスを実装する必要があります。インターフェイスは非常に稀薄だと思うかもしれません。この章の後半で、ユーザー統合の重要性をサポートするために、プロバイダー・クラスが実装するかもしれないミックスイン・インターフェイスがあることが分かります。インスタンスはトランザクション毎に都度作成されます。メソッドが呼び出され、次にインスタンスがガーベッジ・コレクション処理されます。インスタンスはプロバイダー・ファクトリーにより作成されます。インターフェイスを実装します。実装する場合、具体的なプロバイダー・クラスをテンプレート・パラメーターとして指定する必要があります。ランタイムがこのクラスをイントロスペクトしてその機能(それが実装する他のインターフェイス)をスキャンするので、これは必須です。いう名前の場合、ファクトリー・クラスは以下のように表示されます。メソッドはユーザー・ストレージ・プロバイダーの名前を返します。Federationページ内に表示されます。メソッドは、プロバイダー・クラスのインスタンスの割り当てを担当します。パラメーターを受け取ります。このオブジェクトは、ランタイム内で他のさまざまなコンポーネントへアクセスできるようにするだけでなく、他の情報やメタデータを参照することにも使用できます。パラメーターは、特定のレルム内でプロバイダーがどのように有効にされ設定されたかを表します。他にも機能がありますが、それはこの章で後ほど説明します。インターフェイスを注意深く見てみると、ユーザーを検索したり管理したりするメソッドが定義されていないことに気がつくでしょう。して定義されており、外部ユーザーストアが持つ機能に依存しています。して実装することだけです。SPI説明org.keycloak.storage.user.UserLookupProviderこのインターフェイスは外部ストアからのユーザーをログインさせるのに必要です。ほとんど(全ての?)プロバイダーはこのインターフェイスを実装します。org.keycloak.storage.user.UserQueryProvider1つ以上のユーザーを検索する複雑なクエリーを定義します。管理コンソールでユーザーを閲覧・管理する場合はこのインターフェイスを実装する必要があります。org.keycloak.storage.user.UserRegistrationProviderプロバイダーがユーザーの削除をサポートする場合はこのインターフェイスを実装します。org.keycloak.storage.user.UserBulkUpdateProviderプロバイダーがユーザーのバルク更新をサポートする場合はこのインターフェイスを実装します。org.keycloak.credential.CredentialInputValidatorプロバイダーが1つ以上の異なるクレデンシャル・タイプを検証する(たとえば、プロバイダーがパスワード検証をする)場合はこのインターフェイスを実装します。org.keycloak.credential.CredentialInputUpdaterプロバイダーが1つ以上の異なるクレデンシャル・タイプを更新する場合はこのインターフェイスを実装します。定義されたメソッドのほとんどは、ユーザーの表現が返されるか、または渡されます。インターフェイスによって定義されます。アプリ開発者はこのインターフェイスを実装する必要があります。これは、外部ユーザーストアとKeycloakが使用するユーザー・メタモデルとの間のマッピングを提供します。実装は、ユーザー名、名前、電子メール、ロール、グループ・マッピング、その他の任意の属性などのユーザーに関するメタデータの読み取りと更新のためのアクセスを提供します。