3.3. 将 Keycloak 的红帽构建配置为 Trusted Artifact Signer 的 OpenID Connect 供应商


您可以将红帽构建的 Keycloak (RHBK)配置为红帽受信任的工件签名程序(RHTAS)服务的 OpenID Connect (OIDC)供应商。此流程指导您将 RHBK 与 RHTAS 集成。

重要

您可以在相同的 SecureSign 配置中为 Fulcio 定义几个不同的 OIDC 供应商。

先决条件

  • OpenShift Container Platform 版本 4.13 或更高版本上的 RHTAS 安装。
  • 使用 cluster-admin 角色访问 OpenShift Web 控制台。
  • 安装了 oc 二进制文件的工作站。
  • 有 1 GB 的持久性存储可用于 Keycloak PostgreSQL 数据库
  • TLS 证书和密钥

流程

  1. 使用具有 cluster-admin 角色的用户登录 OpenShift Web 控制台。
  2. 创建一个新项目来部署 Keycloak 服务。

    1. Administrator 视角中,从导航菜单中展开 Home,再单击 Projects
    2. Create Project 按钮。
    3. 新项目名称为 keycloak-system,然后点 Create 按钮。
  3. 部署 PostgreSQL 实例,供 Keycloak 用于存储持久数据。

    重要

    如果 Keycloak 已存在数据库,请替换与您的数据库实例对应的 Secret 资源 的用户名密码和数据库名称 值。您可以跳过 PostgreSQL Service 和 StatefulSet 步骤的创建,并继续下一步。

    1. 创建 Secret 资源以存储数据库信息。

      1. 从导航菜单中展开 Workloads,再单击 Secrets
      2. Project 下拉菜单中选择 keycloak-system
      3. 单击 Create 下拉菜单,再选择 Key/Value secret
      4. Secret name 字段中输入 postgresql-db
      5. Key 字段中输入 username
      6. Value 字段中输入 keycloak。这是用于向 PostgreSQL 数据库实例进行身份验证的用户名 Keycloak。
      7. 单击 Add key/value 链接,以添加另一个键值对。
      8. Key 字段中输入 password
      9. Value 字段中输入您选择的密码。这是用于向 PostgreSQL 数据库实例进行身份验证的密码 Keycloak。
      10. 单击 Add key/value 链接,以添加另一个键值对。
      11. Key 字段中输入 database
      12. Value 字段中输入 keycloak。这是用于将 Keycloak 数据存储在 PostgreSQL 数据库实例中的数据库名称。
      13. Create 按钮。
    2. 创建 PostgreSQL Service 和 StatefulSet。

      1. + 图标。
      2. 复制 Service 和 StatefulSet YAML 配置文本,并在 Import YAML 页面中,将文本粘贴到 文本编辑器框中。
      3. Create 按钮,将 Service 和 StatefulSet 添加到 keycloak-system 项目中。
  4. 从工作站打开一个终端,并登录到 OpenShift 集群:

    语法

    oc login --token=TOKEN --server=SERVER_URL_AND_PORT

    Example

    $ oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443

    注意

    您可以从 OpenShift Web 控制台查找要在命令行中使用的登录令牌和 URL。登录 OpenShift Web 控制台。点您的用户名,然后点 Copy login 命令。如果被要求,请再次提供您的用户名和密码,然后单击 Display Token 查看命令。

  5. 创建新的 Secret 资源,使其包含传输层安全(TLS)证书和对应的私钥:

    语法

    oc create secret tls SECRET_NAME -n NAMESPACE --cert CERTIFICATE_FILE_NAME --key PRIVATE_KEY_FILE_NAME

    Example

    $ oc create secret tls keycloak-tls -n keycloak-system --cert certificate.pem --key key.pem

    注意

    OpenShift 的服务服务证书可以自动生成和管理用于 Keycloak 的 TLS 证书。如需更多信息 请参阅附录。

  6. 在 OpenShift Web 控制台中,从导航菜单中展开 Operator,然后点 OperatorHub
  7. 在搜索字段中,键入 keycloak,然后单击认证红帽目录中的 Keycloak Operator 标题。
  8. 单击 Install 按钮,以显示 Operator 详情。
  9. Install Operator 页面中,从 Installed Namespace 下拉菜单中选择 keycloak-system,然后点 Install 按钮。等待安装完成。
  10. 安装完成后,点 View Operator 按钮。
  11. 在 Keycloak 标题中点 Create instance
  12. Create Keycloak 页面中,选择 YAML 视图

    1. name 行中,将 example-keycloak 替换为您的自定义名称,如 keycloak
    2. 主机名可以在 hostname 属性中明确指定,或者自动生成与其他路由类似。在 hostname 行中,将 example.org 替换为您的自定义主机名。

      注意

      有关使 OpenShift 为 Keycloak 实例生成主机名所需的步骤,请参阅附录。???

    3. spec 部分,添加您的数据库详情:

      Example

      spec:
      ...
        db:
          vendor: postgres
          host: postgresql-db
          usernameSecret:
            name: postgresql-db
            key: username
          passwordSecret:
            name: postgresql-db
            key: password
      ...

    4. 另外,在 http 属性的 spec 部分下,指定包含 TLS 证书的 Secret 资源的名称。

      Example

      spec:
      ...
        http:
          tlsSecret: keycloak-tls
      ...

    5. Create 按钮。
  13. 展开 Networking 导航菜单,再单击 Routes
  14. 要打开 Keycloak 管理控制台,请点击与 Keycloak 实例关联的路由的链接。
  15. admin 用户的默认凭据存储在名为 keycloak-initial-admin 的 Secret 中。要查找密码,展开 Workloads 导航菜单,再单击 Secrets
  16. 选择 keycloak-initial-admin Secret。
  17. Data 部分下,找到 password 键,然后点 copy content icon 图标。
  18. 在 Keycloak Administration Console 登录页面中,输入 admin 作为用户名,并粘贴上一步的内容作为密码。
  19. 创建一个名为 trusted-artifact-signer 的新域。

    1. 在导航菜单中,选择 Red Hat Build of Keycloak 下拉菜单。
    2. 选择 Create Realm
    3. 输入 trusted-artifact-signer 作为 资源名称
    4. 单击 Create 以创建新域。
  20. 创建新用户 。新用户可以登录到 Keycloak 管理控制台,也可以使用 RHTAS 为容器和提交签名。

    1. 在导航菜单的 Manage 部分下,然后选择 Clients
    2. Create Client 按钮
    3. Client Id 字段中,输入 trusted-artifact-signer
    4. 另外,您还可以在对应的字段中输入 NameDescription
    5. 点击 Next
    6. 接受新客户端创建过程的 Capability Config 步骤的默认选项。
    7. 点击 Next
    8. Valid redirect URIs 字段中,输入 *
    9. 单击 Save 以创建客户端。
  21. 在导航菜单的 Configure 部分下,选择 Realm Settings 以查找 trusted-artifact-signer 域的 Issuer URL
  22. Endpoints 旁边,单击 OpenID Endpoint Configuration 链接。
  23. issuer 属性复制 URL
  24. 在 RHTAS 的 SecureSign 资源的 .spec.fulcio.config.OIDCIssuers 部分下,将 CLIENT_ID 替换为 trusted-artifact-signer并粘贴 URL 内容来替换 RHBK_REALM_ISSUER_URL

    语法

    spec:
    ...
      fulcio:
        config:
          OIDCIssuers:
            - ClientID: CLIENT_ID
              Issuer: 'RHBK_REALM_ISSUER_URL'
              IssuerURL: 'RHBK_REALM_ISSUER_URL'
              Type: email
    ...

    Example

    spec:
    ...
      fulcio:
        config:
          OIDCIssuers:
            - ClientID: trusted-artifact-signer
              Issuer: 'https://keycloak-ingress-keycloak-system.apps.openshift.example.com/realms/trusted-artifact-signer'
              IssuerURL: 'https://keycloak-ingress-keycloak-system.apps.openshift.example.com/realms/trusted-artifact-signer'
              Type: email
    ...

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.