入门指南


Red Hat build of Keycloak 26.0

Red Hat Customer Content Services

摘要

本指南帮助您练习使用红帽构建的 Keycloak 26.0 来评估它,然后再在生产环境中使用它。它包括在开发模式下安装并运行Key build of Keycloak 服务器的说明,创建域和帐户来管理用户和应用程序,以及保护单个页面应用程序(SPA)

第 1 章 开始使用

1.1. 启动前

确保您的机器或容器平台可以为 Red Hat build of Keycloak 提供足够的内存和 CPU。如需有关如何开始使用生产 大小的更多信息,请参阅概念来调整 CPU 和内存资源 大小。

确保已安装 OpenJDK 21

1.2. 下载 Red Hat build of Keycloak

红帽网站下载红帽 Keycloak 构建并提取它。

提取此文件后,您应该有一个名为 rhbk-26.0.6 的目录。

1.3. 启动 Red Hat build of Keycloak

  1. 在终端中,打开 rhbk-26.0.6 目录。
  2. 输入以下命令:

    • 在 Linux 中,运行:

      Copy to Clipboard Toggle word wrap
      bin/kc.sh start-dev
    • 在 Windows 上,运行:

      Copy to Clipboard Toggle word wrap
      bin\kc.bat start-dev

使用 start-dev 选项,您将在开发模式下启动 Red Hat build of Keycloak。在这个模式中,您可以尝试红帽构建的 Keycloak 首次启动并运行。这个模式为开发人员提供方便的默认值,比如开发一个新的 Red Hat build of Keycloak 主题。

1.4. 创建管理员用户

Red Hat build of Keycloak 没有默认的 admin 用户。您需要先创建 admin 用户,然后才能启动 Keycloak。

  1. 打开 http://localhost:8080/
  2. 使用您首选的用户名和密码填写表单。

1.5. 登录管理控制台

  1. 进入 红帽构建 Keycloak 管理控制台
  2. 使用您之前创建的用户名和密码登录。

1.6. 创建一个 realm

红帽构建的 Keycloak 中的域相当于一个租户。每个域都允许管理员创建隔离的应用程序和用户组。最初,红帽构建的 Keycloak 包含一个名为 master 的域。只使用这个域来管理红帽构建的 Keycloak,而不管理任何应用程序。

使用这些步骤来创建第一个域。

  1. 打开 Red Hat build of Keycloak Admin Console
  2. master realm 旁边的 Red Hat build of Keycloak,然后点 Create Realm
  3. Realm name 字段中输入 myrealm
  4. Create
添加 realm

1.7. 创建用户

最初,域没有用户。使用这些步骤创建用户:

  1. 验证您仍然在 myrealm 域中,这在 Manage 一词上方显示。
  2. 点左侧菜单中的 Users
  3. 单击 Create new user
  4. 使用以下值填写表单:

    • 用户名myuser
    • 名字 :任何名字
    • 姓氏 :任何姓氏
  5. Create
创建用户

此用户需要密码才能登录。设置初始密码:

  1. 单击页面顶部的 Credentials
  2. 使用密码填写 Set password 表单。
  3. Temporary 切换到 Off,以便用户不需要在第一次登录时更新此密码。
设置密码

1.8. 登录到帐户控制台

现在,您可以登录到帐户控制台以验证此用户是否已正确配置。

  1. 打开 红帽构建的 Keycloak 帐户控制台
  2. 使用您之前创建的 myuser 和密码登录。

作为帐户控制台中的用户,您可以管理帐户,包括修改配置集、添加双因素身份验证,以及包括身份提供程序帐户。

Red Hat build of Keycloak Account Console

1.9. 保护第一个应用程序

要保护第一个应用程序,请首先将应用程序注册到 Red Hat build of Keycloak 实例:

  1. 打开 Red Hat build of Keycloak Admin Console
  2. 单击左上角的 master 一词,然后单击 myrealm
  3. Clients
  4. Create client
  5. 使用以下值填写表单:

    • 客户端类型OpenID Connect
    • 客户端 IDmyclient

      添加客户端
  6. Next
  7. 确认启用了 标准流
  8. 点击 Next
  9. 在登录设置 下进行这些更改。

    • Valid 重定向 URI 设置为 https://www.keycloak.org/app/*
    • Web 源 设置为 https://www.keycloak.org
  10. 点击 Save
更新客户端

要确认客户端是否已创建成功,您可以使用 Keycloak 网站 上的 SPA 测试应用程序。

  1. 打开 https://www.keycloak.org/app/
  2. 单击 Save 以使用默认配置。
  3. Sign in 来使用之前启动的 Keycloak 服务器的红帽构建来向此应用程序进行身份验证。

1.10. 采取下一步

在生产环境中运行红帽构建的 Keycloak 之前,请考虑以下操作:

  • 切换到生产就绪数据库,如 PostgreSQL。
  • 使用您自己的证书配置 SSL。
  • 将 admin 密码切换到更安全的密码。

如需更多信息,请参阅 服务器配置指南

第 2 章 扩展

启动红帽构建的 Keycloak 后,请考虑使用这些扩展和调整指南将您的实例调整为所需的负载:

  • 尽可能减少资源利用率
  • 实现目标响应时间
  • 最小化数据库池争用
  • 解决内存不足错误或过度垃圾回收开销
  • 通过水平扩展提供高可用性

2.1. 垂直扩展

当您监控红帽构建的 Keycloak 工作负载时,请检查 CPU 或内存是否位于或过度使用。查阅 概念以调整 CPU 和内存资源大小,以更好地调整 Java 虚拟机(JVM)可用的资源。

在增加 JVM 可用的内存量前,特别是遇到内存不足错误时,最好使用堆转储决定什么占用量。过多的响应时间可能还表示 HTTP 工作队列太大,对负载的调优比简单地提供更多内存要好。请参见以下部分。

2.1.1. 常见调优选项

红帽构建的 Keycloak 根据您提供的内核数自动调整已使用的线程数量。手动更改线程数可以提高整体吞吐量。如需了解更多详细信息,请参阅配置线程池的概念。但是,更改线程数必须与其他 JVM 资源(如数据库连接)一同使用;否则,您可能会在其它位置移动瓶颈。如需了解更多详细信息,请参阅数据库连接池的概念

要限制排队工作的内存使用率并为负载她提供,请参阅有关 配置线程池的概念

如果您在获取数据库连接时出现超时,您应该考虑增加可用连接数。如需了解更多详细信息,请参阅数据库连接池的概念

2.1.2. 垂直自动扩展

有些平台(如 Kubernetes)提供了垂直自动扩展的机制。如果需要重启服务器实例,则红帽构建的 Keycloak 不建议使用垂直自动扩展,目前是 Kubernetes 上的 Java 的情况。您可以考虑提供更高的 CPU 和/或内存限值,以便 JVM 根据需要在这些限制内调整。

2.2. 横向扩展

单个红帽构建的 Keycloak 实例容易受到可用性问题的影响。如果实例停机,您将遇到完全中断,直到另一个实例启动为止。通过在不同的机器上运行两个或多个群集成员,您可以大大增加红帽构建的 Keycloak 的可用性。

单个 JVM 对它可以处理的并发请求数量有限制。其他服务器实例可提供大致线性的吞吐量扩展,直到相关的资源(如数据库或分布式缓存)限制该扩展。

通常,请考虑允许红帽构建 Keycloak Operator 来处理横向扩展问题。使用 Operator 时,根据需要设置 Keycloak 自定义资源 spec.instances,以水平扩展。如需了解更多详细信息,请参阅使用 Red Hat build of Keycloak Operator 部署红帽构建的 Keycloak for HA

如果没有使用 Operator,请查看以下内容:

  • 您的实例可能更高的可用性位于独立的机器上。在 Kubernetes 上,使用 Pod anti-affinitity 来强制执行这一点。
  • 使用分布式缓存;对于多站点集群,将外部缓存用于群集成员来共享同一状态。有关相关配置的详情,请参阅配置分布式缓存。嵌入的 Infinispan 缓存具有横向扩展的注意事项,包括:

    • 您的实例需要一种方式来互相发现。如需更多信息,请参阅配置分布式缓存中的发现
    • 此缓存不适用于跨越多个可用区(也称扩展集群)的集群。对于嵌入式 Infinispan 缓存,可处理一个可用区中的所有实例。目标是避免在响应时间内扩大通信不必要的往返。在 Kubernetes 上,使用 Pod 关联性来强制实施这种 Pod 分组。
    • 这个缓存不会正常处理多个成员加入或同时保留。特别是,同时离开的成员可能会导致数据丢失。在 Kubernetes 中,您可以使用带有默认串行处理的 StatefulSet 来确保 Pod 按顺序启动和停止。

为了避免整个站点不可用时丢失服务可用性,请参阅高可用性指南以了解有关多站点部署的更多信息。请参阅多站点部署

2.2.1. 横向自动扩展

水平自动扩展允许根据需要添加或删除红帽构建的 Keycloak 实例。请记住,启动时间不是即时的,应该使用优化的镜像来最大程度减少开始时间。

在使用嵌入的 Infinispan 缓存集群时,动态添加或删除群集成员需要 Infinispan 来执行 Infinispan 缓存重新平衡,如果这些缓存中有很多条目,这可能会变得昂贵。要最大程度减少此时间,我们默认将会话相关缓存中的条目数限制为 10000。请注意,只有在配置中没有显式禁用 persistent-user-sessions 功能时,才能进行这个优化。

在 Kubernetes 中,Keycloak 自定义资源是可扩展的,这意味着它可以被内置的自动扩展器 作为目标。

法律通告

Copyright © 2024 Red Hat, Inc.
根据 Apache 许可证(版本 2.0)授权(License");除非遵守许可证,您可能不能使用此文件。您可以在以下位置获取许可证副本
除非适用法律或同意编写,许可证下的软件将由"AS IS"BASIS 分发,WITHOUT WARRANTIES 或 CONDITIONS OF ANY KIND,可以是表达或表示的。有关许可证下的权限和限制的具体语言,请参阅许可证。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat, Inc.