7.3. モデルインターフェイス
機能 インターフェイス で定義されるメソッドのほとんどは、ユーザーの表現を返すか、渡されます。これらの表現は、org.keycloak.models.UserModel
インターフェイスで定義されます。アプリケーション開発者は、このインターフェイスを実装する必要があります。Red Hat build of Keycloak が使用する外部ユーザーストアとユーザーメタモデル間でマッピングを行います。
package org.keycloak.models; public interface UserModel extends RoleMapperModel { String getId(); String getUsername(); void setUsername(String username); String getFirstName(); void setFirstName(String firstName); String getLastName(); void setLastName(String lastName); String getEmail(); void setEmail(String email); ... }
UserModel
実装は、ユーザー名、名前、電子メール、ロール、グループマッピング、その他の任意の属性などのユーザーに関するメタデータの読み取りおよび更新へのアクセスを提供します。
org.keycloak.models
パッケージには、Red Hat build of Keycloak メタモデルの他の部分を表す他のモデルクラスがあります (RealmModel
、RoleModel
、GroupModel
、および ClientModel
)。
7.3.1. ストレージ ID
UserModel
の重要なメソッドの 1 つとして、getId()
メソッドがあります。UserModel
の開発者は、ユーザー ID 形式を認識する必要があります。形式は以下のとおりです。
"f:" + component id + ":" + external id
Red Hat build of Keycloak ランタイムは、多くの場合、ユーザー ID でユーザーを検索する必要があります。ユーザー ID には十分な情報が含まれているため、ランタイムは、システム内のすべての UserStorageProvider
を紹介して、ユーザーを見つける必要はありません。
コンポーネント ID は、ComponentModel.getId()
から返される ID です。ComponentModel
はプロバイダークラスの作成時にパラメーターとして渡され、そこから取得できるようにします。外部 ID は、プロバイダークラスが外部ストアでのユーザー検索に必要な情報です。通常これはユーザー名または uid です。たとえば、以下のようになります。
f:332a234e31234:wburke
ランタイムが ID でルックアップを行う場合、ID はコンポーネント ID を取得するよう解析されます。コンポーネント ID は、ユーザーの読み込みに最初に使用された UserStorageProvider
を見つけるために使用されます。その後、そのプロバイダーには ID が渡されます。プロバイダーが再び ID を解析して外部 ID を取得し、外部ユーザーストレージでのユーザー検索に使用されます。