3.3. 将 Keycloak 的红帽构建配置为 Trusted Artifact Signer 的 OpenID Connect 供应商
您可以将红帽构建的 Keycloak (RHBK)配置为红帽受信任的工件签名程序(RHTAS)服务的 OpenID Connect (OIDC)供应商。此流程指导您将 RHBK 与 RHTAS 集成。
您可以在相同的 SecureSign 配置中为 Fulcio 定义几个不同的 OIDC 供应商。
先决条件
流程
-
使用具有
cluster-admin
角色的用户登录 OpenShift Web 控制台。 创建一个新项目来部署 Keycloak 服务。
- 从 Administrator 视角中,从导航菜单中展开 Home,再单击 Projects。
- 点 Create Project 按钮。
-
新项目名称为
keycloak-system
,然后点 Create 按钮。
部署 PostgreSQL 实例,供 Keycloak 用于存储持久数据。
重要如果 Keycloak 已存在数据库,请替换与您的数据库实例对应的
Secret
资源的用户名
、密码和数据库名称
值。您可以跳过 PostgreSQL Service 和 StatefulSet 步骤的创建,并继续下一步。
创建
Secret
资源以存储数据库信息。- 从导航菜单中展开 Workloads,再单击 Secrets。
-
从 Project 下拉菜单中选择
keycloak-system
。 - 单击 Create 下拉菜单,再选择 Key/Value secret。
-
在 Secret name 字段中输入
postgresql-db
。 -
在 Key 字段中输入
username
。 -
在 Value 字段中输入
keycloak
。这是用于向 PostgreSQL 数据库实例进行身份验证的用户名 Keycloak。 - 单击 Add key/value 链接,以添加另一个键值对。
-
在 Key 字段中输入
password
。 - 在 Value 字段中输入您选择的密码。这是用于向 PostgreSQL 数据库实例进行身份验证的密码 Keycloak。
- 单击 Add key/value 链接,以添加另一个键值对。
-
在 Key 字段中输入
database
。 -
在 Value 字段中输入
keycloak
。这是用于将 Keycloak 数据存储在 PostgreSQL 数据库实例中的数据库名称。 - 点 Create 按钮。
创建 PostgreSQL Service 和 StatefulSet。
- 点 + 图标。
- 复制 Service 和 StatefulSet YAML 配置文本,并在 Import YAML 页面中,将文本粘贴到 文本编辑器框中。
-
点 Create 按钮,将 Service 和 StatefulSet 添加到
keycloak-system
项目中。
从工作站打开一个终端,并登录到 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 查看命令。
创建新的
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 证书。如需更多信息 , 请参阅附录。
- 在 OpenShift Web 控制台中,从导航菜单中展开 Operator,然后点 OperatorHub。
- 在搜索字段中,键入 keycloak,然后单击认证红帽目录中的 Keycloak Operator 标题。
- 单击 Install 按钮,以显示 Operator 详情。
-
在 Install Operator 页面中,从 Installed Namespace 下拉菜单中选择
keycloak-system
,然后点 Install 按钮。等待安装完成。 - 安装完成后,点 View Operator 按钮。
- 在 Keycloak 标题中点 Create instance。
在 Create Keycloak 页面中,选择 YAML 视图。
-
在
name
行中,将example-keycloak
替换为您的自定义名称,如keycloak
。 主机名可以在
hostname
属性中明确指定,或者自动生成与其他路由类似。在hostname
行中,将example.org
替换为您的自定义主机名。注意有关使 OpenShift 为 Keycloak 实例生成主机名所需的步骤,请参阅附录。???
在
spec
部分,添加您的数据库详情:Example
spec: ... db: vendor: postgres host: postgresql-db usernameSecret: name: postgresql-db key: username passwordSecret: name: postgresql-db key: password ...
另外,在
http
属性的spec
部分下,指定包含 TLS 证书的Secret
资源的名称。Example
spec: ... http: tlsSecret: keycloak-tls ...
- 点 Create 按钮。
-
在
- 展开 Networking 导航菜单,再单击 Routes。
- 要打开 Keycloak 管理控制台,请点击与 Keycloak 实例关联的路由的链接。
-
admin
用户的默认凭据存储在名为 keycloak-initial-admin 的 Secret 中。要查找密码,展开 Workloads 导航菜单,再单击 Secrets。 - 选择 keycloak-initial-admin Secret。
-
在 Data 部分下,找到 password 键,然后点
图标。
-
在 Keycloak Administration Console 登录页面中,输入
admin
作为用户名,并粘贴上一步的内容作为密码。 创建一个名为
trusted-artifact-signer
的新域。- 在导航菜单中,选择 Red Hat Build of Keycloak 下拉菜单。
- 选择 Create Realm。
-
输入
trusted-artifact-signer
作为 资源名称。 - 单击 Create 以创建新域。
创建新用户 。新用户可以登录到 Keycloak 管理控制台,也可以使用 RHTAS 为容器和提交签名。
- 在导航菜单的 Manage 部分下,然后选择 Clients。
- 点 Create Client 按钮
-
在 Client Id 字段中,输入
trusted-artifact-signer
。 - 另外,您还可以在对应的字段中输入 Name 和 Description。
- 点击 Next。
- 接受新客户端创建过程的 Capability Config 步骤的默认选项。
- 点击 Next。
-
在 Valid redirect URIs 字段中,输入
*
。 - 单击 Save 以创建客户端。
-
在导航菜单的 Configure 部分下,选择 Realm Settings 以查找
trusted-artifact-signer
域的 Issuer URL。 - 在 Endpoints 旁边,单击 OpenID Endpoint Configuration 链接。
-
从
issuer
属性复制 URL。 在 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 ...