7.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: RealmModelRoleModelGroupModelClientModel 的其他部分。

7.3.1. 存储 Ids

UserModel 的一个重要方法是 getId () 方法。在实施 UserModel 开发人员时,必须了解用户 id 格式。格式必须是:

"f:" + component id + ":" + external id

红帽构建的 Keycloak 运行时通常必须通过用户 ID 查找用户。用户 id 包含足够信息,以便运行时不必查询系统中的每个 UserStorageProvider 来查找用户。

组件 id 是从 ComponentModel.getId () 返回的 id。在创建供应商类时,component Model 作为参数传递,以便您可以从那里获取它。外部 ID 是您的供应商类需要在外部存储中查找用户的信息。这通常是用户名或 uid。例如,它可能类似如下:

f:332a234e31234:wburke

当运行时按 id 进行查找时,会解析 id 来获取组件 ID。组件 ID 用于找到最初用于加载用户的 UserStorageProvider。然后,该提供程序通过 id。该提供程序再次解析 id 以获取外部 ID,它将用于在外部用户存储中查找用户。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.