6.3. 模型接口
功能 接口 中定义的大多数方法都返回或以用户的表示形式传递。这些表示由 org.keycloak.models.UserModel
接口定义。需要应用程序开发人员才能实施此接口。它提供了外部用户存储和红帽构建的 Keycloak 使用的用户 metamodel 之间的映射。
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
软件包中还有其他模型类,它们代表红帽构建的 Keycloak metamodel: RealmModel
、RoleModel
、GroupModel
和 ClientModel
的其他部分。
6.3.1. 存储 Ids
UserModel
的一个重要方法是 getId ()
方法。在实施 UserModel
开发人员时,必须了解用户 ID 格式。格式必须是:
"f:" + component id + ":" + external id
红帽构建的 Keycloak 运行时通常必须通过用户 ID 查找用户。用户 id 包含足够信息,因此运行时不必查询系统中的每个 UserStorageProvider
来查找用户。
组件 ID 是从 ComponentModel.getId ()
返回的 id。组件Model
在创建供应商类时作为参数传递,以便您可以从那里获取它。外部 id 是您的供应商类需要在外部存储中查找用户的信息。这通常是一个用户名或 uid。例如,它可能类似如下:
f:332a234e31234:wburke
当运行时按 id 进行查找时,id 会被解析,以获取组件 ID。组件 ID 用于查找最初用于加载用户的 UserStorageProvider
。然后,该提供程序会传递 id。提供商再次解析 id 来获取外部 ID,它将用来在外部用户存储中查找用户。