Red Hat Single Sign-On for OpenShift
用于 Red Hat Single Sign-On 7.5
摘要
使开源包含更多 复制链接链接已复制到粘贴板!
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。如需了解更多详细信息,请参阅 CTO Chris Wright 信息 . :leveloffset: +0
第 1 章 Red Hat Single Sign-On for OpenShift 简介 复制链接链接已复制到粘贴板!
1.1. 什么是 Red Hat Single Sign-On? 复制链接链接已复制到粘贴板!
Red Hat Single Sign-On 是一个集成式登录解决方案,可作为红帽 JBoss 中间件用于 OpenShift 容器化镜像。Red Hat Single Sign-On for OpenShift 镜像为用户提供了一个身份验证服务器,供用户集中管理、注销、注册和管理 Web 应用、移动应用和 RESTful Web 服务的用户帐户。
Red Hat Single Sign-On for OpenShift 在以下平台上提供:x86_64、IBM Z 和 IBM Power Systems。
1.2. 用于这个软件的模板 复制链接链接已复制到粘贴板!
红帽使用 Red Hat Single Sign-On for OpenShift 镜像版本号 7.5.3 提供多个 OpenShift 应用程序模板。这些模板定义开发基于 Red Hat Single Sign-On 7.5.3 服务器部署所需的资源。模板主要被分成两类:直通模板和再加密模板。还存在其他一些模板。
1.2.1. passthrough 模板 复制链接链接已复制到粘贴板!
这些模板要求事先存在 HTTPS、JGroups 密钥存储以及 Red Hat Single Sign-On 服务器的信任存储。它们使用 passthrough TLS 终止保护 TLS 通信。
- sso75-https :同一 pod 上由内部 H2 数据库支持的 Red Hat Single Sign-On 7.5.3。
- sso75-postgresql :红帽 Single Sign-On 7.5.3,由单独 pod 上的临时 PostgreSQL 数据库支持。
- sso75-postgresql-persistent: Red Hat Single Sign-On 7.5.3,由单独 pod 上的持久 PostgreSQL 数据库支持。
Red Hat Single Sign-On with MySQL / MariaDB 数据库的模板已被删除,且在 Red Hat Single Sign-On 版本 7.4 后不可用。
1.2.2. 重新加密模板 复制链接链接已复制到粘贴板!
这些模板使用 OpenShift 的内部服务 服务 x509 证书 secret,自动创建用于提供安全内容的 HTTPS 密钥存储。JGroups 集群流量使用 AUTH 协议进行身份验证,并使用 ASYM_ENCRYPT 协议加密。Red Hat Single Sign-On 服务器信任存储也自动创建,其中包含 /var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt CA 证书文件,用于为 HTTPS 密钥存储签名。
此外,Red Hat Single Sign-On 服务器的信任存储会预先填充 Java 系统路径中所有已知的可信 CA 证书文件。这些模板使用再加密 TLS 终止来保护 TLS 通信。
-
sso75-x509-https :红帽单点登录 7.5.3 (带有自动生成的 HTTPS 密钥存储)和红帽单点登录信任存储(由内部 H2 数据库支持)。
ASYM_ENCRYPTJGroups 协议用于加密集群流量。 -
sso75-x509-postgresql-persistent: Red Hat Single Sign-On 7.5.3 (带有自动生成的 HTTPS 密钥存储)和红帽单点登录信任存储(由持久 PostgreSQL 数据库支持)。
ASYM_ENCRYPTJGroups 协议用于加密集群流量。
1.2.3. 其他模板 复制链接链接已复制到粘贴板!
另外还提供了与 Red Hat Single Sign-On 集成的其他模板:
- eap64-sso-s2i :启用了红帽 JBoss 企业应用平台 6.4 的单点登录。
- eap71-sso-s2i :启用了红帽 JBoss 企业应用平台 7.1 的单点登录。
- datavirt63-secure-s2i :启用了红帽 JBoss 数据虚拟化 6.3 的单点登录.
这些模板包含特定于 Red Hat Single Sign-On 的环境变量,用于在部署时自动 Red Hat Single Sign-On 客户端注册。
1.3. 版本兼容性和支持 复制链接链接已复制到粘贴板!
有关 OpenShift 镜像版本兼容性的详情,请查看 支持的配置 页面。
7.0 和 7.3 之间的 OpenShift 镜像版本号的 Red Hat Single Sign-On 已被弃用,它们将不再接收镜像和应用程序模板的更新。
要部署新应用,请使用 Red Hat Single Sign-On for OpenShift 镜像的版本 7.4 或 7.5.3,以及特定于这些镜像版本的应用模板。
第 2 章 Configuring Red Hat Single Sign-On for OpenShift 复制链接链接已复制到粘贴板!
2.1. 为 OpenShift 镜像流和应用程序模板使用 Red Hat Single Sign-On 复制链接链接已复制到粘贴板!
从安全 Red Hat Registry: registry.redhat.io 需要身份验证时,会按需拉取用于 OpenShift 镜像的 Red Hat JBoss Middleware。要检索内容,您需要使用红帽帐户登录 registry。
要在 OpenShift 等共享环境中使用 registry.redhat.io 中的容器镜像,建议管理员使用 Registry 服务帐户(也称为身份验证令牌)来代替个人的红帽客户门户网站凭证。
流程
- 要创建 Registry Service Account,请导航到 Registry Service Account Management Application,并在需要时登录。
- 在 Registry Service Accounts 页面中,点 Create Service Account。
为服务帐户提供名称,如 registry.redhat.io-sa。它将以固定、随机字符串开头。
- 为服务帐户输入描述,例如使用 registry.redhat.io 中的容器镜像。
- 点 Create。
- 创建服务帐户后,点 Registry Service Accounts 页面中的" 帐户名称" 列中的 registry.redhat.io-sa 链接。
- 最后,单击 OpenShift Secret 选项卡,然后执行该页面中列出的所有步骤。
如需更多信息,请参阅 Red Hat Container Registry 身份验证 文章。
流程
-
确保您已作为集群管理员或具有全局
openshift项目的项目管理员访问权限的用户身份登录: 根据您的 OpenShift Container Platform 版本选择命令。
如果您在 master 主机(一些)上运行基于 OpenShift Container Platform v3 的集群实例,请执行以下操作:
oc login -u system:admin
$ oc login -u system:adminCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您正在运行基于 OpenShift Container Platform v4 的集群实例,以 kubeadmin 用户身份登录 CLI :
oc login -u kubeadmin -p password https://openshift.example.com:6443
$ oc login -u kubeadmin -p password https://openshift.example.com:6443Copy to Clipboard Copied! Toggle word wrap Toggle overflow
运行以下命令更新
openshift项目中的 OpenShift 的 Red Hat Single Sign-On 7.5.3 资源集:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,在
openshift项目中安装 Red Hat Single Sign-On 7.5.3 OpenShift 镜像流:oc -n openshift import-image rh-sso-7/sso75-openshift-rhel8:7.5 --from=registry.redhat.io/rh-sso-7/sso75-openshift-rhel8:7.5 --confirm
$ oc -n openshift import-image rh-sso-7/sso75-openshift-rhel8:7.5 --from=registry.redhat.io/rh-sso-7/sso75-openshift-rhel8:7.5 --confirmCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2. 部署 Red Hat Single Sign-On 镜像 复制链接链接已复制到粘贴板!
2.2.1. 准备部署 复制链接链接已复制到粘贴板!
流程
- 使用包含 cluster:admin 角色的用户登录 OpenShift CLI。
创建一个新项目:
oc new-project sso-app-demo
$ oc new-project sso-app-demoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
view角色添加到default服务帐户。这可让服务帐户查看 sso-app-demo 命名空间中的所有资源,这是管理集群所必需的。oc policy add-role-to-user view system:serviceaccount:$(oc project -q):default
$ oc policy add-role-to-user view system:serviceaccount:$(oc project -q):defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2.2. 使用应用程序模板部署 Red Hat Single Sign-On 镜像 复制链接链接已复制到粘贴板!
您可以使用以下接口之一部署模板:
2.2.2.1. 使用 OpenShift CLI 部署模板 复制链接链接已复制到粘贴板!
前提条件
流程
列出可用的 Red Hat Single Sign-On 应用程序模板:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 部署所选对象:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2.2.2. 使用 OpenShift 3.x Web 控制台部署模板 复制链接链接已复制到粘贴板!
前提条件
流程
- 登录 OpenShift Web 控制台并选择 sso-app-demo 项目空间。
- 单击 Add to Project,然后 Browse Catalog 列出默认镜像流和模板。
- 使用 Filter by Keyword 搜索栏,将列表限制为与 sso 匹配的列表。您可能需要单击 Middleware,然后 集成 以显示所需的应用程序模板。
- 选择 Red Hat Single Sign-On 应用程序模板。这个示例使用 Red Hat Single Sign-On 7.5 (Ephemeral)。
- 在 信息 步骤中点 Next。
- 从 Add to Project 下拉菜单中选择 sso-app-demo 项目空间。然后单击"下一步"。
- 在 绑定 步骤中 ,选择 Do not bind 按钮。点 Create 继续。
- 在 结果 步骤中,单击 Continue to the project overview 链接,以验证部署的状态。
2.2.2.3. 使用 OpenShift 4.x Web 控制台部署模板 复制链接链接已复制到粘贴板!
前提条件
流程
- 登录 OpenShift Web 控制台并选择 sso-app-demo 项目空间。
在左侧边栏中,点 Administrator 选项卡,然后点 < /> Developer。
单击 From Catalog。
搜索 sso。
选择 OpenJDK (Ephemeral)上的 Red Hat Single Sign-On 7.5 等模板。
点 Instantiate Template。
- 如果需要,调整模板参数,然后单击 创建。
验证 OpenShift 镜像的 Red Hat Single Sign-On 已部署。
2.3. 访问 Red Hat Single Sign-On Pod 的 Administrator 控制台 复制链接链接已复制到粘贴板!
流程
部署模板后,标识可用的路由。
oc get routes
$ oc get routes NAME HOST/PORT sso sso-sso-app-demo.openshift.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 访问红帽单点登录管理控制台。
https://sso-sso-app-demo.openshift.example.com/auth/admin
https://sso-sso-app-demo.openshift.example.com/auth/adminCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 提供 管理员帐户的登录凭据。
第 3 章 执行高级步骤 复制链接链接已复制到粘贴板!
本章论述了高级流程,如为 Red Hat Single Sign-On 服务器设置密钥存储和信任存储,以及创建管理员帐户,以及可用的红帽单点登录客户端方法概述,以及有关配置集群的指导。
3.1. 部署 passthrough TLS 终止模板 复制链接链接已复制到粘贴板!
您可以使用这些模板进行部署。它们要求 HTTPS、JGroups 密钥存储和 Red Hat Single Sign-On 服务器信任存储已经存在,因此可用于使用自定义 HTTPS、JGroup 密钥存储和红帽单点登录服务器信任存储实例化 Red Hat Single Sign-On server pod。
3.1.1. 准备部署 复制链接链接已复制到粘贴板!
流程
- 使用包含 cluster:admin 角色的用户登录 OpenShift CLI。
创建一个新项目:
oc new-project sso-app-demo
$ oc new-project sso-app-demoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
view角色添加到default服务帐户。这可让服务帐户查看 sso-app-demo 命名空间中的所有资源,这是管理集群所必需的。oc policy add-role-to-user view system:serviceaccount:$(oc project -q):default
$ oc policy add-role-to-user view system:serviceaccount:$(oc project -q):defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow
在这一流程中,openssl 工具包用于生成 HTTPS 密钥存储的 CA 证书,并为 Red Hat Single Sign-On 服务器创建信任存储。keytool 是 Java Development Kit 中包含的软件包,然后用于生成这些密钥存储的自签名证书。
使用重新加密 TLS 终止的 红帽单点登录应用模板 不需要 或 期望 HTTPS 和 JGroups 密钥存储以及 Red Hat Single Sign-On server truststore 在手前准备。
如果要使用现有的 HTTPS / JGroups 密钥存储来调配 Red Hat Single Sign-On 服务器,请使用一些直通模板。
再加密模板使用 OpenShift 的内部服务 服务 x509 证书机密 来自动创建 HTTPS 和 JGroups 密钥存储。
Red Hat Single Sign-On 服务器信任存储也会自动创建,其中包含 /var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt CA 证书文件,用于创建这些集群证书。此外,Red Hat Single Sign-On 服务器的信任存储会预先填充 Java 系统路径中所有已知的可信 CA 证书文件。
前提条件
使用 passthrough TLS 终止的 Red Hat Single Sign-On 应用程序模板需要部署以下内容:
- 用于加密 https 流量的 HTTPS 密钥存储,
- JGroups 密钥存储 用于加密集群中节点之间的 JGroups 通信,以及
- Red Hat Single Sign-On server truststore 用来保护 Red Hat Single Sign-On 请求
对于生产环境,红帽建议您使用通过已验证的证书颁发机构(CA)为 SSL 加密连接(HTTPS)购买的 SSL 证书。
如需有关如何使用自签名或购买的 SSL 证书创建密钥存储的更多信息,请参阅 JBoss 企业应用平台安全指南。
创建 HTTPS 密钥存储:
流程
生成 CA 证书。选择 并记得密码。提供相同的密码,当使用以下 CA 证书为证书签名请求进行签名 时:
openssl req -new -newkey rsa:4096 -x509 -keyout xpaas.key -out xpaas.crt -days 365 -subj "/CN=xpaas-sso-demo.ca"
$ openssl req -new -newkey rsa:4096 -x509 -keyout xpaas.key -out xpaas.crt -days 365 -subj "/CN=xpaas-sso-demo.ca"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为 HTTPS 密钥存储生成私钥。提供
mykeystorepass作为密钥存储密码:keytool -genkeypair -keyalg RSA -keysize 2048 -dname "CN=secure-sso-sso-app-demo.openshift.example.com" -alias jboss -keystore keystore.jks
$ keytool -genkeypair -keyalg RSA -keysize 2048 -dname "CN=secure-sso-sso-app-demo.openshift.example.com" -alias jboss -keystore keystore.jksCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为 HTTPS 密钥存储生成证书签名请求。提供
mykeystorepass作为密钥存储密码:keytool -certreq -keyalg rsa -alias jboss -keystore keystore.jks -file sso.csr
$ keytool -certreq -keyalg rsa -alias jboss -keystore keystore.jks -file sso.csrCopy to Clipboard Copied! Toggle word wrap Toggle overflow
使用 CA 证书为证书签名请求签名。提供 用于生成 CA 证书的 相同密码:
openssl x509 -req <(printf "subjectAltName=DNS:secure-sso-sso-app-demo.openshift.example.com") -CA xpaas.crt -CAkey xpaas.key -in sso.csr -out sso.crt -days 365 -CAcreateserial
$ openssl x509 -req <(printf "subjectAltName=DNS:secure-sso-sso-app-demo.openshift.example.com") -CA xpaas.crt -CAkey xpaas.key -in sso.csr -out sso.crt -days 365 -CAcreateserialCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意要使上述命令在一行上工作,该命令包含进程替换(<
()语法)。确保您的当前 shell 环境支持此类语法。否则,您可能会在意外令牌 '(' 消息旁边遇到语法错误。将 CA 证书导入到 HTTPS 密钥存储中。提供
mykeystorepass作为密钥存储密码。回复yestoTrust this certificate? [no]:question:keytool -import -file xpaas.crt -alias xpaas.ca -keystore keystore.jks
$ keytool -import -file xpaas.crt -alias xpaas.ca -keystore keystore.jksCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将签名的证书签名请求导入到 HTTPS 密钥存储。提供
mykeystorepass作为密钥存储密码:keytool -import -file sso.crt -alias jboss -keystore keystore.jks
$ keytool -import -file sso.crt -alias jboss -keystore keystore.jksCopy to Clipboard Copied! Toggle word wrap Toggle overflow
为 JGroups 密钥存储生成安全密钥:
提供密码 作为密钥存储密码:
keytool -genseckey -alias secret-key -storetype JCEKS -keystore jgroups.jceks
$ keytool -genseckey -alias secret-key -storetype JCEKS -keystore jgroups.jceks
将 CA 证书导入到新的 Red Hat Single Sign-On 服务器信任存储中:
提供 mykeystorepass 作为信任存储密码。回复 yes to Trust this certificate? [no]: question:
keytool -import -file xpaas.crt -alias xpaas.ca -keystore truststore.jks
$ keytool -import -file xpaas.crt -alias xpaas.ca -keystore truststore.jks
3.1.3. 创建 secret 复制链接链接已复制到粘贴板!
流程
您要创建名为机密的对象,供 OpenShift 用于存放敏感信息,如密码或密钥存储。
为 HTTPS 和 JGroups 密钥存储创建机密,以及红帽单点登录服务器信任存储( 在上一节中 生成)。
oc create secret generic sso-app-secret --from-file=keystore.jks --from-file=jgroups.jceks --from-file=truststore.jks
$ oc create secret generic sso-app-secret --from-file=keystore.jks --from-file=jgroups.jceks --from-file=truststore.jksCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将这些 secret 链接到用于运行 Red Hat Single Sign-On Pod 的默认服务帐户。
oc secrets link default sso-app-secret
$ oc secrets link default sso-app-secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.4. 使用 OpenShift CLI 部署 Passthrough TLS 模板 复制链接链接已复制到粘贴板!
创建密钥存储 和机密后,使用 oc 命令部署直通 TLS 终止模板。???
3.1.4.1. oc 命令指南 复制链接链接已复制到粘贴板!
在以下 oc 命令中,SSO_ADMIN_USERNAME、SSO_ADMIN_PASSWORD、HTTPS_PASSWORD、JGROUPS_ENCRYPT_PASSWORD 和 SSO_TRUSTSTORE_PASSWORD 变量的值与 sso75-https 红帽 Single Sign-On 应用程序模板中的默认值匹配。
对于生产环境,红帽建议您咨询组织的上门策略,以获取为 Red Hat Single Sign-On 服务器的管理员用户帐户生成强用户名和密码的说明,以及用于 HTTPS 和 JGroups 密钥存储的密码,以及红帽单点登录服务器的信任存储。
此外,当您创建模板时,使密码与创建密钥存储时提供的密码匹配。如果您使用了不同的用户名或密码,请修改模板中参数的值以匹配您的环境。
您可以使用以下 keytool 命令确定与证书关联的别名名称。keytool 是 Java Development Kit 中包含的软件包。
keytool -v -list -keystore keystore.jks | grep Alias
$ keytool -v -list -keystore keystore.jks | grep Alias
Enter keystore password: mykeystorepass
Alias name: xpaas.ca
Alias name: jboss
keytool -v -list -keystore jgroups.jceks -storetype jceks | grep Alias
$ keytool -v -list -keystore jgroups.jceks -storetype jceks | grep Alias
Enter keystore password: password
Alias name: secret-key
以下命令中的 SSO_ADMIN_USERNAME、SSO_ADMIN_PASSWORD 和 SSO_REALM 模板参数是可选的。
3.1.4.2. oc 命令示例 复制链接链接已复制到粘贴板!
3.2. 为 Red Hat Single Sign-On 服务器自定义主机名 复制链接链接已复制到粘贴板!
hostname SPI 引入了为 Red Hat Single Sign-On 服务器配置主机名的灵活方法。默认主机名供应商 1 是默认的。这个供应商比 原始请求 供应商提供改进的功能,该供应商现已弃用。如果没有额外的设置,它将使用请求标头来确定与原始请求供应商类似的主机名。
有关 默认 供应商的配置选项,请参阅 服务器安装和配置指南。frontendUrl 选项可以通过 SSO_FRONTEND_URL 环境变量进行配置。
为向后兼容,如果同时设置了 SSO_HOSTNAME,则 SSO_FRONTEND_URL 设置将被忽略。
主机名提供程序的另一个选项 是固定的,它允许配置固定主机名。后者可确保只能使用有效主机名,并允许内部应用程序通过备选 URL 调用红帽单点登录服务器。
流程
运行以下命令为 Red Hat Single Sign-On 服务器设置 固定的 主机名 SPI 供应商:
使用 SSO_HOSTNAME 环境变量(设为 Red Hat Single Sign-On 服务器)将 Red Hat Single Sign-On for OpenShift 镜像部署 Red Hat Single Sign-On。
$ oc new-app --template=sso75-x509-https \ -p SSO_HOSTNAME="rh-sso-server.openshift.example.com"
$ oc new-app --template=sso75-x509-https \ -p SSO_HOSTNAME="rh-sso-server.openshift.example.com"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 识别红帽单点登录服务的路由名称。
$ oc get routes NAME HOST/PORT sso sso-sso-app-demo.openshift.example.com
$ oc get routes NAME HOST/PORT sso sso-sso-app-demo.openshift.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更改
host:字段,使其与上方 SSO_HOSTNAME 环境变量的值指定的主机名匹配。注意根据需要,在以下命令中调整
rh-sso-server.openshift.example.com值。oc patch route/sso --type=json -p '[{"op": "replace", "path": "/spec/host", "value": "rh-sso-server.openshift.example.com"}]'$ oc patch route/sso --type=json -p '[{"op": "replace", "path": "/spec/host", "value": "rh-sso-server.openshift.example.com"}]'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果成功,上一个命令会返回以下输出:
route "sso" patched
route "sso" patchedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3. 连接到外部数据库 复制链接链接已复制到粘贴板!
Red Hat Single Sign-On 可以被配置为连接到外部(至 OpenShift 集群)数据库。为了达到此目的,您需要修改 sso-{database name} Endpoints 对象以指向正确的地址。该过程在 OpenShift 手册 中介绍。
最简单的入门方式是从模板部署 Red Hat Single Sign-On,然后修改 Endpoints 对象。您可能还需要更新 DeploymentConfig 中的一些数据源配置变量。完成后,只需推出新的部署即可。
3.4. 使用自定义 JDBC 驱动程序 复制链接链接已复制到粘贴板!
要连接到任何数据库,必须存在该数据库的 JDBC 驱动程序,并且正确配置了 Red Hat Single Sign-On。目前,镜像中唯一可用的 JDBC 驱动程序是 PostgreSQL JDBC 驱动程序。对于任何其他数据库,您需要使用自定义 JDBC 驱动程序和 CLI 脚本扩展 Red Hat Single Sign-On 镜像,以注册并设置连接属性。以下步骤演示了如何进行此操作,将 MariaDB 驱动程序作为示例。相应地更新其他数据库驱动程序的示例。
流程
- 创建一个空目录。
- 将 JDBC 驱动程序二进制文件下载到这个目录中。
在此目录中创建一个新的
Dockerfile文件,其内容如下:对于其他数据库,将mariadb-java-client-2.5.4.jar替换为对应驱动程序的文件名:FROM rh-sso-7/sso75-openshift-rhel8:latest COPY sso-extensions.cli /opt/eap/extensions/ COPY mariadb-java-client-2.5.4.jar /opt/eap/extensions/jdbc-driver.jar
FROM rh-sso-7/sso75-openshift-rhel8:latest COPY sso-extensions.cli /opt/eap/extensions/ COPY mariadb-java-client-2.5.4.jar /opt/eap/extensions/jdbc-driver.jarCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在这个目录中创建一个新的
sso-extensions.cli文件,其内容如下:根据部署需求,更新它中的变量的值:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在这个目录中,通过输入以下命令来构建您的镜像,将
project/name:tag替换为任意名称。Docker可以替代podman。podman build -t docker-registry-default/project/name:tag .
$ podman build -t docker-registry-default/project/name:tag .Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 构建完成后,将镜像推送到 OpenShift 用于部署镜像的 registry。详情请参阅 OpenShift 指南。
如果要将此镜像与您在上一步中构建的自定义 JDBC 驱动程序一起使用,且现有红帽单点登录 OpenShift DeploymentConfig 之前由一些 Red Hat Single Sign-On OpenShift 模板创建,您需要修补 DeploymentConfig 定义。输入以下命令:
oc patch dc/sso --type=json -p '[{"op": "replace", "path": "/spec/triggers/0/imageChangeParams/from/name", "value": "sso75-openshift-rhel8-image-with-custom-jdbc-driver:latest"}]'$ oc patch dc/sso --type=json -p '[{"op": "replace", "path": "/spec/triggers/0/imageChangeParams/from/name", "value": "sso75-openshift-rhel8-image-with-custom-jdbc-driver:latest"}]' "sso" patchedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令假定红帽单点登录镜像与自定义 JDBC 驱动程序的镜像流名称和标签组合为"sso75-openshift-rhel8-image-with-custom-jdbc-driver:latest"。
3.5. 为 Red Hat Single Sign-On Server 创建管理员帐户 复制链接链接已复制到粘贴板!
Red Hat Single Sign-On 没有提供任何预先配置的管理帐户。需要此管理员帐户登录 主域 管理控制台并执行服务器维护操作,如创建域或用户或注册由红帽单点登录保护的应用程序。
可以创建管理员帐户:
- 在部署 Red Hat Single Sign-On 应用程序模板时,为 SSO_ADMIN_USERNAME 和 SSO_ADMIN_PASSWORD 参数 提供值,或者
- 通过 与特定 Red Hat Single Sign-On pod 的远程 shell 会话,如果部署了 Red Hat Single Sign-On for OpenShift 镜像,则没有应用程序模板。
Red Hat Single Sign-On 允许由 Welcome Page Web 表单创建初始管理员帐户,但只有从 localhost 访问 Welcome Page 时,这种管理员帐户创建方法不适用于 OpenShift 镜像。
3.5.1. 使用模板参数创建管理员帐户 复制链接链接已复制到粘贴板!
在部署 Red Hat Single Sign-On 应用程序模板时,SSO_ADMIN_USERNAME 和 SSO_ADMIN_PASSWORD 参数表示要为 master 域创建 Red Hat Single Sign-On 服务器的用户名和密码。
这两个参数都是必需的。如果没有指定,它们在模板实例化时自动生成并显示为 OpenShift 说明消息。
Red Hat Single Sign-On 服务器的管理员帐户的寿命取决于用于存储 Red Hat Single Sign-On 服务器的数据库的存储类型:
- 对于内存数据库模式(sso75-https 和 sso75-x509-https 模板),该帐户存在于特定 Red Hat Single Sign-On pod 的生命周期中(存储的帐户数据在 pod 销毁时丢失),
- 对于临时数据库模式 sso75-postgresql 模板,该帐户存在于数据库 Pod 的生命周期中。即使 Red Hat Single Sign-On pod 被销毁,存储在的帐户数据也会保留,假设数据库 pod 仍在运行,
- 对于持久数据库模式(sso75-postgresql-persistent 和 sso75-x509-postgresql-persistent 模板),该帐户存在于用于存放数据库数据的持久性卷生命周期中。这意味着,即使在 Red Hat Single Sign-On 和数据库 pod 都被销毁时,存储的帐户数据也会保留。
部署 Red Hat Single Sign-On 应用程序模板是一种常见做法,以便为应用程序获取对应的 OpenShift 部署配置,然后多次重复利用该部署配置(只要需要实例化新的红帽单点登录应用程序)。
如果是 临时或持久数据库模式,在创建 RH_SSO 服务器管理员帐户后,请在部署新的红帽单点登录应用程序前从部署配置中删除 SSO_ADMIN_USERNAME 和 SSO_ADMIN_PASSWORD 变量。
流程
运行以下命令,以准备以前创建的 Red Hat Single Sign-On 应用程序的部署配置,以便在创建管理员帐户后重复使用:
识别 Red Hat Single Sign-On 应用的部署配置。
oc get dc -o name
$ oc get dc -o name deploymentconfig/sso deploymentconfig/sso-postgresqlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 清除 SSO_ADMIN_USERNAME 和 SSO_ADMIN_PASSWORD 变量设置。
oc set env dc/sso \ -e SSO_ADMIN_USERNAME="" \ -e SSO_ADMIN_PASSWORD=""
$ oc set env dc/sso \ -e SSO_ADMIN_USERNAME="" \ -e SSO_ADMIN_PASSWORD=""Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5.2. 通过远程 shell 会话创建 Red Hat Single Sign-On Pod 的管理员帐户 复制链接链接已复制到粘贴板!
在不使用模板的情况下,您可以使用下列命令为 Red Hat Single Sign-On 服务器的主域创建管理员帐户,而无需使用模板。
前提条件
- Red Hat Single Sign-On 应用 pod 已经启动。
流程
识别 Red Hat Single Sign-On 应用容器集。
oc get pods
$ oc get pods NAME READY STATUS RESTARTS AGE sso-12-pt93n 1/1 Running 0 1m sso-postgresql-6-d97pf 1/1 Running 0 2mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 打开远程 shell 会话,连接到适用于 OpenShift 容器的 Red Hat Single Sign-On。
oc rsh sso-12-pt93n
$ oc rsh sso-12-pt93n sh-4.2$Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
add-user-keycloak.sh脚本,在命令行中为master域创建 Red Hat Single Sign-On 服务器管理员帐户。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意上例中的 'sso_admin' / 'sso_password' 凭证仅用于演示目的。有关如何创建安全用户名和密码的指导,请参考您所在机构中的密码策略。
重新启动底层 JBoss EAP 服务器实例,以加载新添加的用户帐户。等待服务器正确重启。
./jboss-cli.sh --connect ':reload'
sh-4.2$ ./jboss-cli.sh --connect ':reload' { "outcome" => "success", "result" => undefined }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告在重启服务器时,只需在运行的 Red Hat Single Sign-On 容器中而非整个容器内重新启动 JBoss EAP 进程。这是因为重启整个容器会从头开始重新创建,而不考虑
master域的红帽单点登录服务器管理帐户。-
使用上述步骤中创建的凭据,登录 Red Hat Single Sign-On 服务器的
masterrealm 的管理控制台。在浏览器中,导航到 http://sso-<project-name>.<hostname>/auth/admin for the Red Hat Single Sign-On web 服务器,或导航到 https://secure-sso-<project-name>.<hostname>/auth/admin for the encrypted Red Hat Single Sign-On web 服务器,并指定用于创建管理员用户的用户名和密码。
3.6. 自定义 Red Hat Single Sign-On 镜像的默认行为 复制链接链接已复制到粘贴板!
您可以更改 Red Hat Single Sign-On 镜像的默认行为,如 enable TechPreview 功能或启用调试。本节论述了如何使用 JAVA_OPTS_APPEND 变量进行此更改。
前提条件
此流程假设之前使用以下模板 部署了 Red Hat Single Sign-On for OpenShift 镜像:
- sso75-postgresql
- sso75-postgresql-persistent
- sso75-x509-postgresql-persistent
流程
您可以使用 OpenShift Web 控制台或 CLI 更改默认行为。
如果使用 OpenShift Web 控制台,请将 JAVA_OPTS_APPEND 变量添加到 sso 部署配置中。例如,要启用 TechPreview 功能,您可以按照如下所示设置 变量:
JAVA_OPTS_APPEND="-Dkeycloak.profile=preview"
JAVA_OPTS_APPEND="-Dkeycloak.profile=preview"
如果使用 CLI,则使用以下命令启用 TechPreview 功能,当使用先决条件下提到的模板部署了 Red Hat Single Sign-On pod。
缩减 Red Hat Single Sign-On pod:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在前面的命令中,将显示
sso-postgresql,因为 PostgreSQL 模板用于部署用于 OpenShift 镜像的 Red Hat Single Sign-On。编辑部署配置,以设置 JAVA_OPTS_APPEND 变量。例如,要启用 TechPreview 功能,您可以按照如下所示设置 变量:
oc env dc/sso -e "JAVA_OPTS_APPEND=-Dkeycloak.profile=preview"
$ oc env dc/sso -e "JAVA_OPTS_APPEND=-Dkeycloak.profile=preview"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 扩展 Red Hat Single Sign-On pod:
oc scale --replicas=1 dc sso
$ oc scale --replicas=1 dc sso deploymentconfig "sso" scaledCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 测试您选择的 TechPreview 功能。
3.7. 部署过程 复制链接链接已复制到粘贴板!
部署之后,sso75-https 和 sso75-x509-https 模板创建一个 pod,其中包含数据库和 Red Hat Single Sign-On 服务器。sso75-postgresql、sso75-postgresql-persistent 和 sso75-x509-postgresql-persistent 模板创建两个 pod,一个用于数据库服务器,另一个用于红帽单点登录 Web 服务器。
启动 Red Hat Single Sign-On Web 服务器 pod 后,可在自定义配置的主机名或默认主机名访问它:
- http://sso-<project-name& gt; . <hostname> /auth/admin: 用于 Red Hat Single Sign-On web 服务器,以及
- https://secure-sso-<project-name& gt; . <hostname> /auth/admin: 用于加密的 Red Hat Single Sign-On web 服务器。
使用 管理员用户凭据,登录 主 域的管理控制台。
3.8. Red Hat Single Sign-On 客户端 复制链接链接已复制到粘贴板!
客户端是请求用户身份验证的红帽单点登录实体。客户端可以是请求 Red Hat Single Sign-On 的应用程序来提供用户身份验证,或者可以发出访问令牌的请求来代表经过身份验证的用户启动服务。如需更多信息,请参阅 Red Hat Single Sign-On 文档中的管理客户端一章。
Red Hat Single Sign-On 提供 OpenID-Connect 和 SAML 客户端协议。
OpenID-Connect 是首选协议,使用三种不同的访问类型:
- 公共 :对于直接在浏览器中运行的 JavaScript 应用程序,无需服务器配置。
- 机密 :用于服务器端客户端(如 EAP Web 应用)需要执行浏览器登录。
- 仅限 bearer-only :对允许 bearer 令牌请求的后端服务使用。
需要在应用程序 web.xml 文件的 < ;auth-method > 键中指定客户端类型。此文件在部署时由镜像读取。将 < auth-method> 元素的值设置为:
- 适用于 OpenID Connect 客户端的 KEYCLOAK。
- KEYCLOAK-SAML 用于 SAML 客户端。
以下是用来配置 OIDC 客户端的应用程序 web.xml 的示例片段:
...
<login-config>
<auth-method>KEYCLOAK</auth-method>
</login-config>
...
...
<login-config>
<auth-method>KEYCLOAK</auth-method>
</login-config>
...
3.8.1. 自动和手动 Red Hat Single Sign-On 客户端注册方法 复制链接链接已复制到粘贴板!
客户端应用程序可使用特定于 eap64-sso-s2i、eap71-sso-s2i、Datavirt63-secure-s2i 和 datavirt63-secure-s2i 的变量传递的凭证自动注册到 Red Hat Single Sign-On 域。
另外,您可以通过配置和导出 Red Hat Single Sign-On 客户端适配器来手动注册客户端应用程序,并将其包括在客户端应用程序配置中。
3.8.1.1. 自动 Red Hat Single Sign-On 客户端注册 复制链接链接已复制到粘贴板!
自动 Red Hat Single Sign-On 客户端注册是由特定于 eap64-sso-s2i、 eap71-sso-s2i 和 datavirt63-secure-s2i 模板的单点登录环境变量来确定。然后,模板中提供的 Red Hat Single Sign-On 凭证用于在部署客户端应用程序期间将客户端注册到 Red Hat Sign-On realm。
Red Hat Single Sign-On 环境变量包括在 eap64-sso-s2i、eap71-sso-s2i 和 datavirt63-secure-s2i 模板有:
| 变量 | Description |
|---|---|
| HOSTNAME_HTTP | http 服务路由的自定义主机名。保留 <application-name>.<project>.<default-domain-suffix> 的默认主机名的空白 |
| HOSTNAME_HTTPS | https 服务路由的自定义主机名。保留 <application-name>.<project>.<default-domain-suffix> 的默认主机名的空白 |
| SSO_URL | Red Hat Single Sign-On web 服务器身份验证地址:https://secure-sso- <project-name> . <hostname>/auth |
| SSO_REALM | 为此流程创建的 Red Hat Single Sign-On 域。 |
| SSO_USERNAME | realm 管理用户 的名称。 |
| SSO_PASSWORD | 用户的密码。 |
| SSO_PUBLIC_KEY | 域生成的公钥。它位于 Red Hat Single Sign-On 控制台的 Realm Settings 的 Keys 选项卡中。 |
| SSO_BEARER_ONLY | 如果设置为 true,则 OpenID Connect 客户端以 bearer-only 的形式注册。 |
| SSO_ENABLE_CORS | 如果设置为 true,则 Red Hat Single Sign-On adapter 启用 Cross-Origin Resource Sharing (CORS)。 |
如果 Red Hat Single Sign-On 客户端使用 SAML 协议,则需要配置以下附加变量:
| 变量 | Description |
|---|---|
| SSO_SAML_KEYSTORE_SECRET | 用于访问 SAML 密钥存储的机密。默认值为 sso-app-secret。 |
| SSO_SAML_KEYSTORE | SAML 密钥存储机密中的密钥存储文件名.默认为 keystore.jks。 |
| SSO_SAML_KEYSTORE_PASSWORD | SAML 的密钥存储密码。默认为 mykeystorepass。 |
| SSO_SAML_CERTIFICATE_NAME | 用于 SAML 的键/证书的别名。默认值为 jboss。 |
请参阅 工作流示例:在 Red Hat Single Sign-On with OpenID-Connect Client 的 Red Hat Single Sign-On 中自动注册 EAP 应用程序,以获取使用 OpenID-Connect 客户端自动客户端注册方法的端到端示例。
3.8.1.2. 手动 Red Hat Single Sign-On 客户端注册 复制链接链接已复制到粘贴板!
手动 Red Hat Single Sign-On 客户端注册是通过客户端应用程序 ... /configuration/ 目录中是否存在部署文件来确定。这些文件从 Red Hat Single Sign-On Web 控制台中的客户端适配器导出。此文件的名称与 OpenID-Connect 和 SAML 客户端不同:
| OpenID-Connect | ../configuration/secure-deployments |
| SAML | ../configuration/secure-saml-deployments |
在部署应用程序时,这些文件被复制到 standalone-openshift.xml 中的 Red Hat Single Sign-On 适配器配置部分。
有两种将 Red Hat Single Sign-On 适配器配置传递给客户端应用程序的方法:
- 修改部署文件,使其包含 Red Hat Single Sign-On 适配器配置,以便在部署时将其包含在 standalone-openshift.xml 文件中,或者
- 在客户端应用程序的 ../WEB-INF 目录中,手动包含 OpenID-Connect keycloak.json 文件,或将 SAML keycloak-saml.xml 文件包含。
请参阅 工作流示例: 手动配置应用程序以使用 Red Hat Single Sign-On 身份验证,使用 SAML 客户端作为手动红帽单点登录客户端注册方法的端到端示例。
3.9. 将红帽单点登录库与 OpenShift secret 搭配使用 复制链接链接已复制到粘贴板!
Red Hat Single Sign-On 管理支持中的多个字段从外部密码库获取 secret 值,请参阅 服务器管理指南。以下示例演示了如何在 OpenShift 中设置基于文件的纯文本 vault,并将其设置为用于获取 SMTP 密码。
流程
使用 SSO_VAULT_DIR 环境变量为 vault 指定目录。您可以在部署配置的环境中直接引入 SSO_VAULT_DIR 环境变量。也可以通过在模板中适当位置添加以下代码片段,将其包含在模板中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意只有在设置了 SSO_VAULT_DIR 环境变量时,才会配置文件 plaintext vault 供应商。
在 OpenShift 集群中创建 secret:
oc create secret generic rhsso-vault-secrets --from-literal=master_smtp-password=mySMTPPsswd
$ oc create secret generic rhsso-vault-secrets --from-literal=master_smtp-password=mySMTPPsswdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
${SSO_VAULT_DIR}作为路径将卷挂载到部署配置。对于已在运行的部署:oc set volume dc/sso --add --mount-path=${SSO_VAULT_DIR} --secret-name=rhsso-vault-secrets$ oc set volume dc/sso --add --mount-path=${SSO_VAULT_DIR} --secret-name=rhsso-vault-secretsCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
创建 pod 后,您可以使用 Red Hat Single Sign-On 配置中的自定义字符串来引用该 secret。例如,要使用本教程中创建的 mySMTPPswd secret,您可以使用 smtp 密码配置中的
masterrealm 中的${vault.smtp-password},在使用时,它将被替换。mySMTPPsswd
3.10. 限制 复制链接链接已复制到粘贴板!
OpenShift 目前不接受来自外部提供程序的 OpenShift 角色映射。如果 Red Hat Single Sign-On 用作 OpenShift 的身份验证网关,在 Red Hat Single Sign-On 中创建的用户必须使用 OpenShift Administrator oc adm policy 命令添加的角色。
例如,允许 Red Hat Single Sign-On-created 用户在 OpenShift 中查看项目命名空间:
oc adm policy add-role-to-user view <user-name> -n <project-name>
$ oc adm policy add-role-to-user view <user-name> -n <project-name>
第 4 章 教程 复制链接链接已复制到粘贴板!
本章的教程假定您有一个与执行 OpenShift Container Platform 集群安装相同的 OpenShift 实例。
4.1. 为 OpenShift 镜像版本的新 Red Hat Single Sign-On 更新数据库 复制链接链接已复制到粘贴板!
请注意,以下与更新相关:
- 从早期版本的 Red Hat Single Sign-On for OpenShift 的滚动更新改为版本 7.5.3,因为数据库和缓存不向后兼容。
- 用于 OpenShift 7.5.3 的红帽单点登录需要 PostgreSQL 服务器版本 13.5。如果您有一个过时的 PostgreSQL 版本,请在更新数据库前更新 PostgreSQL 版本。
- 从 Red Hat Single Sign-On for OpenShift 版本中的实例在升级前无法运行。它们不能对同一数据库同时运行。
- 预生成的脚本不可用。它们会根据数据库动态生成。
您有三种更新数据库的选择:
- 如果您有一个过时的 PostgreSQL 服务器版本,升级 PostgreSQL 服务器,然后迁移数据库。
- 允许 Red Hat Single Sign-On 7.5.3 自动迁移数据库模式
- 手动更新数据库
默认情况下,当您首次启动 Red Hat Single Sign-On 7.5.3 时,数据库会自动迁移。
4.1.1. PostgreSQL 版本升级和数据库迁移 复制链接链接已复制到粘贴板!
Red Hat Single Sign-On 7.5.3 模板中提供的 PostgreSQL 服务器可能与之前使用的版本不同。例如,请考虑这种情况:
- 您使用 PostgreSQL 服务器的版本 10,运行带有 PostgreSQL 容器集的 Red Hat Single Sign-On for OpenShift 容器镜像。
- Red Hat Single Sign-On 7.5.3 容器镜像需要 PostgreSQL pod 使用 PostgreSQL 服务器的版本 13.5。
以下流程描述了如何将 PostgreSQL 版本升级到 13.5,然后迁移数据库。
流程
首先执行数据库级别备份。
oc rsh <POSTGRE-SQL-POD> pg_dump -C <DATABASE> rhsso_db.bak
$ oc rsh <POSTGRE-SQL-POD> pg_dump -C <DATABASE> rhsso_db.bakCopy to Clipboard Copied! Toggle word wrap Toggle overflow 缩减
sso容器集。oc scale dc/sso --replicas=0
$ oc scale dc/sso --replicas=0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
dc/sso-postgresql.oc edit dc/sso-postgresql
$ oc edit dc/sso-postgresqlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
ImageStreamTag切换到:postgresql:13-el8。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
再次等待
sso-postgresqlpod 正在运行并稳定。 确保 pod
sso-postgresql具有正确的版本。oc rsh dc/sso-postgresql /bin/bash -c "psql --version"
$ oc rsh dc/sso-postgresql /bin/bash -c "psql --version" psql (PostgreSQL) 13.5Copy to Clipboard Copied! Toggle word wrap Toggle overflow 取消设置变量
POSTGRESQL_UPGRADE,并再次部署sso-postgresqlpod。oc set env dc/sso-postgresql POSTGRESQL_UPGRADE-
$ oc set env dc/sso-postgresql POSTGRESQL_UPGRADE-Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
确认 Pod
sso-posgresql正在运行的最后一个时间。 运行以下命令更新
openshift项目中的 OpenShift 的 Red Hat Single Sign-On 7.5.3 资源集:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,在
openshift项目中安装 Red Hat Single Sign-On 7.5.3 OpenShift 镜像流:oc -n openshift import-image rh-sso-7/sso75-openshift-rhel8:7.5 --from=registry.redhat.io/rh-sso-7/sso75-openshift-rhel8:7.5 --confirm
$ oc -n openshift import-image rh-sso-7/sso75-openshift-rhel8:7.5 --from=registry.redhat.io/rh-sso-7/sso75-openshift-rhel8:7.5 --confirmCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更新现有部署配置中的镜像更改触发器,以引用 Red Hat Single Sign-On 7.5.3 镜像。
oc patch dc/sso --type=json -p '[{"op": "replace", "path": "/spec/triggers/0/imageChangeParams/from/name", "value": "sso75-openshift-rhel8:7.5"}]'$ oc patch dc/sso --type=json -p '[{"op": "replace", "path": "/spec/triggers/0/imageChangeParams/from/name", "value": "sso75-openshift-rhel8:7.5"}]' "sso" patchedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 开始根据镜像更改触发器中定义的最新镜像推出新的 Red Hat Single Sign-On 7.5.3 镜像。
oc rollout latest dc/sso
$ oc rollout latest dc/ssoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
ssopod 扩展至一个副本。注意您可能希望从
dc/sso中暂时增加存活和就绪度探测阈值和值(以秒为单位)。此步骤在第一次引导时执行数据库升级,这可能需要一些时间。oc scale --replicas=1 dc/sso
$ oc scale --replicas=1 dc/ssoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果您有多个副本,请考虑扩展至一个副本。在 Red Hat Single Sign-On 启动后,您可以将 缩减回原始副本数。
4.1.2. 自动数据库迁移 复制链接链接已复制到粘贴板!
此流程假设您正在运行一个早期版本的 Red Hat Single Sign-On for OpenShift 镜像,由在一个单独的 pod 中运行的 PostgreSQL 数据库(以临时或持久模式部署)支持。
前提条件
- 执行 为 OpenShift 部署准备红帽单点登录身份验证 中所述的步骤。
流程
使用以下步骤自动迁移数据库架构:
识别用于部署容器的部署配置,该配置运行了 OpenShift 镜像的红帽单点登录版本。
oc get dc -o name --selector=application=sso
$ oc get dc -o name --selector=application=sso deploymentconfig/sso deploymentconfig/sso-postgresqlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 停止当前命名空间中为 OpenShift 镜像运行之前版本的 Red Hat Single Sign-On 的所有 pod。它们不能对同一数据库同时运行。
oc scale --replicas=0 dc/sso
$ oc scale --replicas=0 dc/sso deploymentconfig "sso" scaledCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更新现有部署配置中的镜像更改触发器,以引用 Red Hat Single Sign-On 7.5.3 镜像。
oc patch dc/sso --type=json -p '[{"op": "replace", "path": "/spec/triggers/0/imageChangeParams/from/name", "value": "sso75-openshift-rhel8:7.5"}]'$ oc patch dc/sso --type=json -p '[{"op": "replace", "path": "/spec/triggers/0/imageChangeParams/from/name", "value": "sso75-openshift-rhel8:7.5"}]' "sso" patchedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 开始根据镜像更改触发器中定义的最新镜像推出新的 Red Hat Single Sign-On 7.5.3 镜像。
oc rollout latest dc/sso
$ oc rollout latest dc/sso deploymentconfig "sso" rolled outCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用修改后的部署配置部署红帽 Single Sign-On 7.5.3 容器。
oc scale --replicas=1 dc/sso
$ oc scale --replicas=1 dc/sso deploymentconfig "sso" scaledCopy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)验证数据库是否已成功更新。
oc get pods --selector=application=sso
$ oc get pods --selector=application=sso NAME READY STATUS RESTARTS AGE sso-4-vg21r 1/1 Running 0 1h sso-postgresql-1-t871r 1/1 Running 0 2hCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc logs sso-4-vg21r | grep 'Updating'
$ oc logs sso-4-vg21r | grep 'Updating' 11:23:45,160 INFO [org.keycloak.connections.jpa.updater.liquibase.LiquibaseJpaUpdaterProvider] (ServerService Thread Pool -- 58) Updating database. Using changelog META-INF/jpa-changelog-master.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.1.3. 手动数据库迁移 复制链接链接已复制到粘贴板!
数据库迁移过程更新数据架构,并执行数据操作。在动态生成 SQL 迁移文件之前,这个过程还会停止运行之前版本的 Red Hat Single Sign-On for OpenShift 镜像的所有 pod。
此流程假设您正在运行一个早期版本的 Red Hat Single Sign-On for OpenShift 镜像,该镜像由 PostgreSQL 数据库(以临时或持久模式部署)支持,并在单独的 pod 上运行。
流程
为脚本生成准备环境。
- 使用正确的数据源配置 Red Hat Single Sign-On 7.5.3,
在
standalone-openshift.xml文件中设置以下配置选项:-
initializeEmpty=false, -
migrationStrategy=manual, 和 -
migrationExportto the pod 文件系统中的位置,应存储输出 SQL 迁移文件(例如,migrationExport="${jboss.home.dir}/keycloak-database-update.sql)。
-
流程
执行以下步骤为数据库生成 SQL 迁移文件:
准备 OpenShift 数据库迁移作业模板,以生成 SQL 文件。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp job-to-migrate-db-to-sso75.yaml.orig \ job-to-migrate-db-to-sso75.yaml$ cp job-to-migrate-db-to-sso75.yaml.orig \ job-to-migrate-db-to-sso75.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 从用于运行 OpenShift 镜像的 Red Hat Single Sign-On 版本的部署配置中,复制数据源定义和数据库访问凭据,使其适合数据库迁移作业模板的位置。
使用以下脚本复制
DB_SERVICE_PREFIX_MAPPING和TX_DATABASE_PREFIX_MAPPING变量值,以及特定于特定数据源的环境变量的值( <PREFIX>_JNDI、<PREFIX>_USERNAME、<PREFIX>_PASSWORD和<PREFIX>_) DATABASE),从名为sso的部署配置到名为job-to-migrate-db-to-sso75.yaml的数据库作业模板。注意虽然
DB_SERVICE_PREFIX_MAPPING环境变量允许 以逗号分隔的 < name>-<database_type>=<PREFIX > triplets 列表 作为其值,本例脚本只接受一个数据源行程序定义用于演示目的。您可以修改 脚本来处理多个数据源定义。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行脚本。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 预先配置的来源构建 Red Hat Single Sign- On 7.5.3 数据库迁移镜像,并等待构建完成。
oc get is -n openshift | grep sso75 | cut -d ' ' -f1
$ oc get is -n openshift | grep sso75 | cut -d ' ' -f1 sso75-openshift-rhel8Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc logs -f bc/sso75-db-migration-image --follow
$ oc logs -f bc/sso75-db-migration-image --follow Cloning "https://github.com/iankko/openshift-examples.git#KEYCLOAK-8500" ... ... Push successfulCopy to Clipboard Copied! Toggle word wrap Toggle overflow 通过引用内置的
sso75-db-migration-image镜像,更新数据库迁移作业(job-to-migrate-db-to-sso75.yaml)的模板。获取镜像的 docker pull 引用。
PULL_REF=$(oc get istag -n $(oc project -q) --no-headers | grep sso75-db-migration-image | tr -s ' ' | cut -d ' ' -f 2)
$ PULL_REF=$(oc get istag -n $(oc project -q) --no-headers | grep sso75-db-migration-image | tr -s ' ' | cut -d ' ' -f 2)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将作业模板的 <<SSO_IMAGE_VALUE>> 字段替换为 pull 规格。
sed -i "s#<<SSO_IMAGE_VALUE>>#$PULL_REF#g" job-to-migrate-db-to-sso75.yaml
$ sed -i "s#<<SSO_IMAGE_VALUE>>#$PULL_REF#g" job-to-migrate-db-to-sso75.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 验证字段是否已更新。
从作业模板实例化数据库迁移作业。
oc create -f job-to-migrate-db-to-sso75.yaml
$ oc create -f job-to-migrate-db-to-sso75.yaml job "job-to-migrate-db-to-sso75" createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要数据库迁移过程处理数据 schema 更新并执行相关的数据,因此在动态生成 SQL 迁移文件前,停止所有运行 Red Hat Single Sign-On for OpenShift 镜像的 pod。
识别用于部署容器的部署配置,该配置运行了 OpenShift 镜像的红帽单点登录版本。
oc get dc -o name --selector=application=sso
$ oc get dc -o name --selector=application=sso deploymentconfig/sso deploymentconfig/sso-postgresqlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 停止当前命名空间中为 OpenShift 镜像运行之前版本的 Red Hat Single Sign-On 的所有 pod。
oc scale --replicas=0 dc/sso
$ oc scale --replicas=0 dc/sso deploymentconfig "sso" scaledCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行数据库迁移作业,并等待 pod 正确运行。
oc get jobs
$ oc get jobs NAME DESIRED SUCCESSFUL AGE job-to-migrate-db-to-sso75 1 0 3mCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc scale --replicas=1 job/job-to-migrate-db-to-sso75
$ oc scale --replicas=1 job/job-to-migrate-db-to-sso75 job "job-to-migrate-db-to-sso75" scaledCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pods
$ oc get pods NAME READY STATUS RESTARTS AGE sso-postgresql-1-n5p16 1/1 Running 1 19h job-to-migrate-db-to-sso75-b87bb 1/1 Running 0 1m sso75-db-migration-image-1-build 0/1 Completed 0 27mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意默认情况下,数据库迁移作业在生成迁移文件后在
600 秒后自动终止。您可以调整这个时间段。从 pod 获取动态生成的 SQL 数据库迁移文件。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
检查
keycloak-database-update.sql文件,以便在手动数据库更新过程中对 Red Hat Single Sign-On 7.5.3 版本进行的更改。 手动应用数据库更新。
如果运行一些之前版本的 Red Hat Single Sign-On for OpenShift 镜像,则由以临时或持久模式部署的 PostgreSQL 数据库支持,请在单独的 pod 上运行:
将生成的 SQL 迁移文件复制到 PostgreSQL pod。
oc rsync --no-perms=true ./db-update/ sso-postgresql-1-n5p16:/tmp
$ oc rsync --no-perms=true ./db-update/ sso-postgresql-1-n5p16:/tmp sending incremental file list sent 77 bytes received 11 bytes 176.00 bytes/sec total size is 26,333 speedup is 299.24Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动连接到 PostgreSQL pod 的 shell 会话。
oc rsh sso-postgresql-1-n5p16
$ oc rsh sso-postgresql-1-n5p16 sh-4.2$Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
psql工具手动应用数据库更新。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要将
<PREFIX>_USERNAME和<PREFIX>_DATABASE替换为 上一节中 检索到的实际数据库凭证。另外,在提示时使用 <PREFIX>_PASSWORD作为数据库的密码。- 关闭与 PostgreSQL pod 的 shell 会话。继续 更新镜像更改触发器步骤。
更新现有部署配置中的镜像更改触发器,以引用 Red Hat Single Sign-On 7.5.3 镜像。
oc patch dc/sso --type=json -p '[{"op": "replace", "path": "/spec/triggers/0/imageChangeParams/from/name", "value": "sso75-openshift-rhel8:7.5"}]'$ oc patch dc/sso --type=json -p '[{"op": "replace", "path": "/spec/triggers/0/imageChangeParams/from/name", "value": "sso75-openshift-rhel8:7.5"}]' "sso" patchedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 开始根据镜像更改触发器中定义的最新镜像推出新的 Red Hat Single Sign-On 7.5.3 镜像。
oc rollout latest dc/sso
$ oc rollout latest dc/sso deploymentconfig "sso" rolled outCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用修改后的部署配置部署红帽 Single Sign-On 7.5.3 容器。
oc scale --replicas=1 dc/sso
$ oc scale --replicas=1 dc/sso deploymentconfig "sso" scaledCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2. 跨环境迁移红帽单点登录服务器数据库 复制链接链接已复制到粘贴板!
本教程重点介绍将 Red Hat Single Sign-On 服务器数据库从一个环境迁移到另一个环境或迁移到其他数据库。
在 Red Hat Single Sign-On 7.5.3 数据库引导中触发了 Red Hat Single Sign-On 7.5.3 数据库的导出和导入,并通过 Java 系统属性传递其参数。这意味着在一个 Red Hat Single Sign-On 服务器引导时,只执行可能的迁移操作之一、导出 或 导入。
4.2.1. 部署 Red Hat Single Sign-On PostgreSQL 应用程序模板 复制链接链接已复制到粘贴板!
前提条件
流程
- 登录 OpenShift Web 控制台并选择 sso-app-demo 项目空间。
- 点 Add to project 列出默认镜像流和模板。
- 使用 Filter by keyword 搜索栏,将列表限制为与 sso 匹配的列表。您可能需要点击 See all 以显示所需的应用程序模板。
选择 sso75-postgresql Red Hat Single Sign-On 应用程序模板。在部署模板时,请确保 保持 SSO_REALM 变量未设置 (默认值)。
警告当在 Red Hat Single Sign-On for OpenShift 镜像上设置了 SSO_REALM 配置变量时,将执行数据库导入,以创建 变量中请求的 Red Hat Single Sign-On 服务器域。要使数据库导出正确执行,无法在此类镜像上同时定义 SSO_REALM 配置变量。
单击 Create 以部署应用模板并启动 pod 部署。这可能需要几分钟时间。
然后,使用 管理员帐户 访问 Red Hat Single Sign-On Web 控制台 https://secure-sso- <sso-app-demo& gt; . <openshift32.example.com> /auth/admin。
注意这个示例工作流使用自生成的 CA 为演示目的提供端到端工作流。访问 Red Hat Single Sign-On Web 控制台将会显示不安全的连接警告。
对于生产环境,红帽建议您使用从验证的证书颁发机构购买的 SSL 证书。
4.2.2. (可选)创建要导出的额外域和用户 复制链接链接已复制到粘贴板!
在执行 Red Hat Single Sign-On 7.5.3 服务器数据库导出时,只会导出数据库中当前的域和用户。如果导出的 JSON 文件还应包含额外的红帽单点登录域和用户,则需要创建它们。使用这些步骤。
创建数据库后,可以导出数据库。
前提条件
- 创建新的域和用户。
流程
获取 Red Hat Single Sign-On 部署配置,并将它缩减为零。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 指示在 Red Hat Single Sign-On 7.5.3 服务器上部署的 Red Hat Single Sign-On 7.5.3 服务器,以便在 Red Hat Single Sign-On 服务器引导时执行数据库导出。
oc set env dc/sso \ -e "JAVA_OPTS_APPEND= \ -Dkeycloak.migration.action=export \ -Dkeycloak.migration.provider=singleFile \ -Dkeycloak.migration.file=/tmp/demorealm-export.json"$ oc set env dc/sso \ -e "JAVA_OPTS_APPEND= \ -Dkeycloak.migration.action=export \ -Dkeycloak.migration.provider=singleFile \ -Dkeycloak.migration.file=/tmp/demorealm-export.json"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 扩展 Red Hat Single Sign-On 部署配置备份。这将启动 Red Hat Single Sign-On 服务器并导出其数据库。
oc scale --replicas=1 dc sso
$ oc scale --replicas=1 dc sso deploymentconfig "sso" scaledCopy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)验证导出是否成功。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.4. 检索并导入导出的 JSON 文件 复制链接链接已复制到粘贴板!
流程
从 pod 检索 Red Hat Single Sign-On 数据库的 JSON 文件。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)将 Red Hat Single Sign-On 数据库的 JSON 文件导入到其他环境中运行的红帽单点登录服务器。
注意要导入到不是由在 OpenShift 上运行的红帽单点登录服务器,请参阅 导入和导出数据库。
当 Red Hat Single Sign-On 服务器作为 OpenShift 上的 Red Hat Single Sign-On 7.5.3 容器运行时,使用 Admin Console Export/Import 功能将资源从以前导出的 JSON 文件导入到红帽单点登录服务器数据库中。
-
使用用于创建管理员用户的凭据,登录 Red Hat Single Sign-On 服务器的
masterrealm 的管理控制台。在浏览器中,导航到 http://sso-<project-name>.<hostname>/auth/admin for the Red Hat Single Sign-On web 服务器,或导航到 https://secure-sso-<project-name>.<hostname>/auth/admin for the encrypted Red Hat Single Sign-On web 服务器。 -
在侧边栏的顶部,选择 Red Hat Single Sign-On 域的名称、用户、客户端、域角色和客户端角色。这个示例使用
master域。 - 单击侧栏底部的 Manage 部分下的 Import 链接。
-
在打开的页面中,单击 Select file,然后指定本地文件系统中导出的
demorealm-export.jsonJSON 文件的位置。 -
从 Import from realm 下拉菜单中选择要从中导入数据的 Red Hat Single Sign-On realm 的名称。这个示例使用
master域。 - 选择应导入哪些用户、客户端、域角色和客户端角色(默认为导入)。
选择要执行的策略,当资源已存在时(一个 Fail、Skip 或 Overwrite)。
注意如果当前数据库中已存在具有相同标识符的对象,尝试导入对象(用户、客户端、域角色或客户端角色)。使用 Skip 策略导入
demorealm-export.json文件中存在的对象,但当前数据库中不存在。点 Import 执行导入。
当将对象从非主域导入到
master域时,点 Import 按钮后,有时可能会遇到类似如下的错误:
在这种情况下,首先需要创建缺少的客户端,将 Access Type 设置为仅限 bearer-only。这些客户端可以通过从创建导出 JSON 文件的来源 Red Hat Single Sign-On 服务器手动复制到目标 Red Hat Single Sign-On 服务器(其中导入 JSON 文件)来创建这些客户端。创建必要的客户端后,再次单击 导入 按钮。
为抑制 上述 错误消息,需要创建缺少的
realm-management客户端、仅 bearer-only Access Type,然后再次单击 Import 按钮。对于 Skip import 策略,新添加的对象被标记为 ADDED,被跳过的对象被标记为 SKIPPED,在导入结果页面中的 操作 列中。
如果您选择了 Admin Console 导入,您可以覆盖资源(覆盖 策略)。在生产系统中,谨慎使用此功能。
-
使用用于创建管理员用户的凭据,登录 Red Hat Single Sign-On 服务器的
4.3. 配置 OpenShift 3.11 以使用 Red Hat Single Sign-On 进行身份验证 复制链接链接已复制到粘贴板!
将 OpenShift 3.11 配置为使用 Red Hat Single Sign-On 部署作为 OpenShift 的授权网关。
这个示例添加了 Red Hat Single Sign-On 作为身份验证方法,以及安装 OpenShift Container Platform 集群过程中配置的身份提供程序。配置完成后,Red Hat Single Sign-On 方法也将可用(与配置的身份提供程序一致)供用户登录 OpenShift Web 控制台。
4.3.1. 配置红帽单点登录凭证 复制链接链接已复制到粘贴板!
前提条件
流程
使用 Red Hat Single Sign-On 部署期间创建的 xref:sso-On web 服务器 https://secure-sso-sso-app-demo 登录加密的 Red Hat Single Sign-On web 服务器。openshift32.example.com/auth/admin 使用 Red Hat Single Sign-On 部署期间创建的 xref:sso-administrator-setup[administrator 帐户。
创建 Realm
- 将光标悬停在侧边栏顶部的 realm 命名空间(默认为 Master),然后单击 Add Realm。
- 输入域名称(本例使用 OpenShift),然后单击 Create。
创建用户
创建一个测试用户,可用于演示启用了 Red Hat Single Sign-On 的 OpenShift 登录:
- 单击 Manage 栏中的 Users,以查看该域的用户信息。
- 单击 添加用户。
- 输入有效 用户名 (本例使用 testuser)和任何其他可选信息,然后单击 Save。
编辑用户配置:
- 单击用户空间中的 Credentials 选项卡,并为该用户输入密码。
- 确保 Temporary Password 选项设为 Off,以使其不会在稍后提示输入密码,然后单击 Reset Password 以设置用户密码。弹出窗口提示其他确认。
创建并配置 OpenID-Connect 客户端
- 单击 Manage 栏中的 Clients,再单击 Create。
- 输入 客户端 ID。这个示例使用 openshift-demo。
- 从下拉菜单中选择一个 Client Protocol (本例使用 openid-connect),然后点击 Save。您将进入 openshift-demo 客户端的配置 Settings 页面。
- 从 Access Type 下拉菜单中选择 confidential。这是服务器端应用程序的访问类型。
- 在 Valid Redirect URIs 对话框中,输入 OpenShift Web 控制台的 URI,本例中为 https://openshift.example.com:8443/*。
在下一节的 OpenShift 主控机上配置 OpenID-Connect 的客户端 Secret。现在,您可以在 Credentials 标签页下复制它。这个 secret 是 <7b0384a2-b832-16c5-9d73-2957842e89h7>。
4.3.2. 为红帽单点登录身份验证配置 OpenShift Master 复制链接链接已复制到粘贴板!
登录 OpenShift 主控机 CLI。
前提条件
您必须具有编辑 /etc/origin/master/master-config.yaml 文件的权限。
流程
编辑 /etc/origin/master/master-config.yaml 文件并找到 identityProviders 部分。例如,如果 OpenShift 主控机配置了 HTPassword 身份提供程序,则 identityProviders 部分类似如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 添加 Red Hat Single Sign-On 作为二级身份提供程序,其内容类似于以下代码片段:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - clientSecret 的 Red Hat Single Sign-On Secret hash 位于 Red Hat Single Sign-On web 控制台中: Clients → openshift-demo → Credentials
通过 Red Hat Single Sign-On 应用发出请求,可以找到 urls 的端点。例如:
<curl -k https://secure-sso-sso-app-demo.openshift32.example.com/auth/realms/OpenShift/.well-known/openid-configuration | python -m json.tool>
<curl -k https://secure-sso-sso-app-demo.openshift32.example.com/auth/realms/OpenShift/.well-known/openid-configuration | python -m json.tool>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 响应包括 authorization_endpoint、token_endpoint 和 userinfo_endpoint。
- 这个示例工作流使用自生成的 CA 为演示目的提供端到端工作流。因此,ca 作为 < ca: xpaas.crt> 提供。此 CA 证书还必须复制到 /etc/origin/master 文件夹。如果使用从验证的证书颁发机构购买的证书,则不需要这样做。
保存配置并重启 OpenShift master:
systemctl restart atomic-openshift-master
$ systemctl restart atomic-openshift-masterCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.3. 登录 OpenShift 复制链接链接已复制到粘贴板!
流程
导航到 OpenShift Web 控制台,本例中为 https://openshift.example.com:8443/console。
OpenShift 登录页面现在提供了使用 htpasswd_auth 或 rh-sso 身份提供程序登录的选项?前者仍然可用,因为它存在于 /etc/origin/master/master-config.yaml 中。
选择 rh-sso,再使用在红帽单点登录中创建的 testuser 用户登录 OpenShift。
testuser 直到在 OpenShift CLI 中添加项目前,没有项目可见。这是在 OpenShift 中提供用户特权的唯一方法,因为它目前不接受外部角色映射。
要为 sso-app-demo 提供 testuser
视图特权,请使用 OpenShift CLI:oc adm policy add-role-to-user view testuser -n sso-app-demo
$ oc adm policy add-role-to-user view testuser -n sso-app-demoCopy to Clipboard Copied! Toggle word wrap Toggle overflow
要在 OpenShift 上部署现有应用,您可以使用二进制源功能。
以下示例使用 app-jee-jsp 和 service-jee-jaxrs Quickstart 部署 EAP 6.4 / 7.1 / 7.1 / 7.1 JSP 服务应用,此应用使用红帽单点登录进行身份验证。
前提条件
- OpenShift 镜像的 Red Hat Single Sign-On 之前使用以下模板之一进行部署:
- sso75-postgresql
- sso75-postgresql-persistent
- sso75-x509-postgresql-persistent
EAP 6.4 / 7.1 / 7.1 服务应用需要专用的红帽单点登录域、用户名和密码才能使用 Red Hat Single Sign-On 进行身份验证。在部署了 Red Hat Single Sign-On for OpenShift 镜像后执行以下步骤:
创建 Red Hat Single Sign-On Realm
登录红帽单点登录服务器的管理控制台。
https://secure-sso-sso-app-demo.openshift.example.com/auth/admin
- 将光标悬停在侧边栏顶部的 realm 命名空间(默认为 Master),然后单击 Add Realm。
-
输入域名称(本例使用
demo),然后单击 Create。
复制公钥
在新创建的 demo 域中,单击 Keys 选项卡,然后选择 Active 选项卡,然后复制已生成的 RSA 类型的公钥。
默认情况下,Red Hat Single Sign-On for OpenShift 镜像版本 7.5.3 生成多个密钥,如 HS256、RS256 或 AES。要为 OpenShift 7.5.3 镜像复制 Red Hat Single Sign-On 的公钥信息,请单击 Keys 选项卡,然后选择 Active 选项卡,然后单击 键表中的公钥 按钮,其中密钥与 RSA 匹配。然后选择并复制显示的弹出窗口的内容。
稍后需要有关公钥的信息,以便部署启用了 Red Hat Single Sign-On 的 EAP 6.4 / 7.1 JSP 应用。???
创建红帽单点登录角色
service-jee-jaxrs quickstart 通过该服务公开三个端点:
-
公共- 不需要身份验证。 -
安全- 可以被具有用户角色的用户调用。 -
admin- 可由具有admin角色的用户调用。
在 Red Hat Single Sign-On 中创建用户 和 admin 角色。这些角色将分配给红帽单点登录应用程序用户,以对用户应用程序的访问权限进行身份验证。
单击 Configure 栏中的 Roles,以列出此域的角色。
注意这是一个新域,因此只有默认(
offline_access和uma_authorization)角色。- 单击 Add Role。
-
输入角色名称(
用户),然后单击 Save。
为 admin 角色重复上述步骤。
创建 Red Hat Single Sign-On Realm Management 用户
- 单击 Manage 栏中的 Users,以查看该域的用户信息。
- 点 Add User。
-
输入有效 用户名 (本例使用 user
appuser),然后单击 Save。 编辑用户配置:
-
单击用户空间中的 Credentials 选项卡,再输入用户的密码(本例使用密码
apppassword)。 - 确保 Temporary Password 选项设为 Off,以使其不会在稍后提示输入密码,然后单击 Reset Password 以设置用户密码。弹出窗口将提示您确认。
-
单击用户空间中的 Credentials 选项卡,再输入用户的密码(本例使用密码
4.4.1.2. 将用户角色分配给域管理用户 复制链接链接已复制到粘贴板!
执行以下步骤将之前创建的 appuser 用户 与红帽 Single Sign-On 角色关联:
-
单击 Role 映射,以列出域和客户端角色配置。在 Available Roles 中,选择之前创建的
用户角色,然后点击 Add selected>。 单击 Client Roles,从列表中选择 realm-management 条目,再选择 Available Roles 列表中的每条记录。
注意您可以通过按住 Ctrl 键并同时点击第一个
模拟条目来一次性选择多个项目。在保持 Ctrl 键和左键键时,请将列表的末尾移至view-clients条目,并确保选中每个记录。- 点 Add selected > 将角色分配给客户端。
流程
为 EAP 6.4 / 7.1 / 7.1 JSP 应用创建一个新项目。
oc new-project eap-app-demo
$ oc new-project eap-app-demoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
view角色添加到default服务帐户。这可让服务帐户查看eap-app-demo命名空间中的所有资源,这是管理集群所必需的。oc policy add-role-to-user view system:serviceaccount:$(oc project -q):default
$ oc policy add-role-to-user view system:serviceaccount:$(oc project -q):defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow EAP 模板需要 SSL 密钥存储和 JGroups 密钥存储 :本例使用
keytool(由 Java Development Kit 附带的软件包)为这些密钥存储生成自签名证书。为 SSL 密钥存储生成安全密钥(本示例将
密码用作密钥存储的密码)。keytool -genkeypair \ -dname "CN=secure-eap-app-eap-app-demo.openshift.example.com" \ -alias https \ -storetype JKS \ -keystore eapkeystore.jks
$ keytool -genkeypair \ -dname "CN=secure-eap-app-eap-app-demo.openshift.example.com" \ -alias https \ -storetype JKS \ -keystore eapkeystore.jksCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为 JGroups 密钥存储生成安全密钥(本示例将
密码用作密钥存储的密码)。keytool -genseckey \ -alias jgroups \ -storetype JCEKS \ -keystore eapjgroups.jceks
$ keytool -genseckey \ -alias jgroups \ -storetype JCEKS \ -keystore eapjgroups.jceksCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 SSL 和 JGroup 密钥存储文件,为 OpenShift 机密生成 EAP 6.4 / 7.1。
oc create secret generic eap-ssl-secret --from-file=eapkeystore.jks
$ oc create secret generic eap-ssl-secret --from-file=eapkeystore.jksCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc create secret generic eap-jgroup-secret --from-file=eapjgroups.jceks
$ oc create secret generic eap-jgroup-secret --from-file=eapjgroups.jceksCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将 EAP 应用机密添加到
default服务帐户。oc secrets link default eap-ssl-secret eap-jgroup-secret
$ oc secrets link default eap-ssl-secret eap-jgroup-secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4.1.4. 部署 EAP 6.4 / 7.1 JSP 应用的二进制构建 复制链接链接已复制到粘贴板!
流程
克隆源代码。
git clone https://github.com/keycloak/keycloak-quickstarts.git
$ git clone https://github.com/keycloak/keycloak-quickstarts.gitCopy to Clipboard Copied! Toggle word wrap Toggle overflow 构建 service-jee-jaxrs 和 app-jee-jsp 应用程序。
构建
service-jee-jaxrs应用。cd keycloak-quickstarts/service-jee-jaxrs/
$ cd keycloak-quickstarts/service-jee-jaxrs/Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注释掉
maven-enforcer-plugin插件的app-jee-jsp/config/keycloak.json要求并构建app-jee-jsp应用。service-jee-jaxrs]$ cd ../app-jee-jsp/
service-jee-jaxrs]$ cd ../app-jee-jsp/Copy to Clipboard Copied! Toggle word wrap Toggle overflow app-jee-jsp]$ sed -i /\<executions\>/s/^/\<\!--/ pom.xml
app-jee-jsp]$ sed -i /\<executions\>/s/^/\<\!--/ pom.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow app-jee-jsp]$ sed -i '/\(<\/executions>\)/a\-->' pom.xml
app-jee-jsp]$ sed -i '/\(<\/executions>\)/a\-->' pom.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要app-jee-jsp 快速入门要求您配置适配器配置文件,并且适配器配置文件(
keycloak.json)位于快速启动的config/目录中,以成功构建快速入门。但本例稍后通过为 EAP 6.4 / 7.1 用于 OpenShift 映像的所选环境变量配置适配器,因此此时不需要指定keycloak.json适配器配置文件的形式。
在本地文件系统中准备目录结构。
主二进制构建目录的 deployments/ 子目录中的应用存档直接复制到 OpenShift 上构建的镜像的 标准部署目录中。若要部署应用,包含 Web 应用数据的目录层次结构必须正确结构化。
在本地文件系统和其中的 deployments/ 子目录中为二进制构建创建主目录。将之前构建的 WAR 存档(由 service-jee-jaxrs 和 app-jee-jsp Quickstart)复制到 deployments/ 子目录:
app-jee-jsp]$ ls config pom.xml README.md src target
app-jee-jsp]$ ls config pom.xml README.md src targetCopy to Clipboard Copied! Toggle word wrap Toggle overflow app-jee-jsp]$ mkdir -p sso-eap7-bin-demo/deployments
app-jee-jsp]$ mkdir -p sso-eap7-bin-demo/deploymentsCopy to Clipboard Copied! Toggle word wrap Toggle overflow app-jee-jsp]$ cp target/app-jsp.war sso-eap7-bin-demo/deployments/
app-jee-jsp]$ cp target/app-jsp.war sso-eap7-bin-demo/deployments/Copy to Clipboard Copied! Toggle word wrap Toggle overflow app-jee-jsp]$ cp ../service-jee-jaxrs/target/service.war sso-eap7-bin-demo/deployments/
app-jee-jsp]$ cp ../service-jee-jaxrs/target/service.war sso-eap7-bin-demo/deployments/Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意标准部署目录的位置取决于用于部署应用的底层基础镜像。请查看下表:
Expand 表 4.1. Deployments 目录的标准位置 Base Image (s)的底层名称 Deployments 目录的标准位置 EAP for OpenShift 6.4 and 7.1
$JBOSS_HOME/standalone/deployments
用于 OpenShift 的 Java S2I
/deployments
JWS for OpenShift
$JWS_HOME/webapps
确定 EAP 6.4 / 7.1 映像的镜像流。
oc get is -n openshift | grep eap | cut -d ' ' -f 1
$ oc get is -n openshift | grep eap | cut -d ' ' -f 1 jboss-eap64-openshift jboss-eap71-openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow
创建新二进制构建,指定镜像流和应用程序名称。
注意将
--image-stream=jboss-eap71-openshift参数替换为以下 oc 命令中的一个--image-stream=jboss-eap64-openshift,以在 JBoss EAP 6.4 的 JBoss EAP 6.4 顶部部署 JSP 应用。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动二进制构建。指示
oc可执行文件使用在上一步中创建的二进制构建目录作为包含 OpenShift 构建的二进制输入的目录。???在 app-jee-jsp 工作目录中,发出以下命令。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 基于构建创建一个新的 OpenShift 应用。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 停止当前命名空间中运行的所有 EAP 6.4 / 7.1 / 7.1 应用的容器。
oc get dc -o name
$ oc get dc -o name deploymentconfig/eap-appCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc scale dc/eap-app --replicas=0
$ oc scale dc/eap-app --replicas=0 deploymentconfig "eap-app" scaledCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在部署之前,进一步配置 EAP 6.4 / 7.1 JSP 应用。
配置应用,使其包含关于 Red Hat Single Sign-On 服务器实例的正确详细信息。
警告确保将以下 SSO_PUBLIC_KEY 变量的值替换为已 复制的
demo域的 RSA 公钥的实际内容。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 SSL 和 JGroups 密钥存储的详细信息来配置应用。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为之前创建的 SSL 和 JGroups 机密定义 OpenShift 卷。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置应用的部署配置,以在
默认的OpenShift 服务帐户下运行应用容器集(默认设置)。oc patch dc/eap-app --type=json \ -p '[{"op": "add", "path": "/spec/template/spec/serviceAccountName", "value": "default"}]'$ oc patch dc/eap-app --type=json \ -p '[{"op": "add", "path": "/spec/template/spec/serviceAccountName", "value": "default"}]' "eap-app" patchedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
使用修改后的部署配置,部署 EAP 6.4 / 7.1 应用的容器。
oc scale dc/eap-app --replicas=1
$ oc scale dc/eap-app --replicas=1 deploymentconfig "eap-app" scaledCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将服务作为路由公开。
oc get svc -o name
$ oc get svc -o name service/eap-appCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc get route
$ oc get route No resources found.Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc expose svc/eap-app
$ oc expose svc/eap-app route "eap-app" exposedCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc get route
$ oc get route NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD eap-app eap-app-eap-app-demo.openshift.example.com eap-app 8080-tcp NoneCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4.1.5. 访问应用程序 复制链接链接已复制到粘贴板!
使用 URL http://eap-app-eap-app-demo.openshift.example.com/app-jsp 访问浏览器中的应用程序。您应该会在以下镜像中看到类似如下的输出:
流程
执行以下步骤来测试应用程序:
单击 INVOKE PUBLIC 按钮,以访问不需要身份验证的
公共端点。您应看到 Message: public 输出。
单击 LOGIN 按钮,以根据
demo域重定向到 Red Hat Single Sign-On 服务器实例。指定之前配置的 Red Hat Single Sign-On 用户的用户名和密码(
appuser/apppassword)。点登录。以下镜像中详述了应用程序更改:
单击 INVOKE SECURED 按钮,以访问
安全端点。您应看到 Message: secure 输出。
点击 INVOKE ADMIN 按钮访问
admin端点。您应该看到 403 Forbidden 输出。
注意admin端点要求具有adminRed Hat Single Sign-On 角色的用户正确调用。对appuser的访问是禁止的,因为它们只有用户角色特权,允许他们访问受保护的端点。
流程
执行以下步骤将 appuser 添加到 admin Red Hat Single Sign-On 角色:
访问红帽单点登录服务器的管理控制台。
https://secure-sso-sso-app-demo.openshift.example.com/auth/admin.
-
单击 Manage 栏中的 Users,以查看
demo域的用户信息。 - 点 View all users 按钮。
- 单击 appuser 的 ID 链接,或者点击 Actions 列中的 Edit 按钮。
- 点 Role Mappings 选项卡。
-
从 Realm Roles 行的 Available Roles 列表中选择
admin条目。 -
点 Add selected > 按钮为用户添加
admin角色。 返回到 EAP 6.4 / 7.1 JSP 服务应用。
http://eap-app-eap-app-demo.openshift.example.com/app-jsp.
-
单击 LOGOUT 按钮,以重新加载
appuser的角色映射。 -
再次单击 LOGIN 按钮,再单击 provider
appuser凭据。 再次点击 INVOKE ADMIN 按钮。
您应看到 Message: admin 输出。
本例使用 OpenID-Connect 客户端适配器为 EAP 项目准备 Red Hat Single Sign-On realm、角色和用户凭证。然后,EAP 中为 OpenShift 模板提供了这些凭据,以自动进行 Red Hat Single Sign-On 客户端注册。部署后,可使用 Red Hat Single Sign-On 用户进行验证并访问 JBoss EAP。
这个示例使用 OpenID-Connect 客户端,但也可以使用 SAML 客户端。如需了解更多与 OpenID - Connect 和 SAML 客户端的不同的更多信息,请参阅 Red Hat Single Sign-On Client Registration Methods。
前提条件
4.5.1. 为 OpenShift 部署准备红帽单点登录身份验证 复制链接链接已复制到粘贴板!
使用包含 cluster:admin 角色的用户登录 OpenShift CLI。
创建一个新项目:
oc new-project eap-app-demo
$ oc new-project eap-app-demoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
view角色添加到default服务帐户。这可让服务帐户查看eap-app-demo命名空间中的所有资源,这是管理集群所必需的。oc policy add-role-to-user view system:serviceaccount:$(oc project -q):default
$ oc policy add-role-to-user view system:serviceaccount:$(oc project -q):defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow EAP 模板需要 SSL 密钥存储和 JGroups 密钥存储 :
本例使用keytool(由 Java Development Kit 附带的软件包)为这些密钥存储生成自签名证书。以下命令将提示输入密码。
为 SSL 密钥存储生成安全密钥:
keytool -genkeypair -alias https -storetype JKS -keystore eapkeystore.jks
$ keytool -genkeypair -alias https -storetype JKS -keystore eapkeystore.jksCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为 JGroups 密钥存储生成安全密钥:
keytool -genseckey -alias jgroups -storetype JCEKS -keystore eapjgroups.jceks
$ keytool -genseckey -alias jgroups -storetype JCEKS -keystore eapjgroups.jceksCopy to Clipboard Copied! Toggle word wrap Toggle overflow
使用 SSL 和 JGroup 密钥存储文件为 OpenShift 机密生成 EAP:
oc create secret generic eap-ssl-secret --from-file=eapkeystore.jks oc create secret generic eap-jgroup-secret --from-file=eapjgroups.jceks
$ oc create secret generic eap-ssl-secret --from-file=eapkeystore.jks $ oc create secret generic eap-jgroup-secret --from-file=eapjgroups.jceksCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将 EAP secret 添加到
default服务帐户:oc secrets link default eap-ssl-secret eap-jgroup-secret
$ oc secrets link default eap-ssl-secret eap-jgroup-secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.5.2. 准备 Red Hat Single Sign-On 凭证 复制链接链接已复制到粘贴板!
使用 Red Hat Single Sign-On 部署期间创建的 管理员帐户,登录到加密 Red Hat Single Sign -On Web 服务器 https://secure-sso- <project-name>。<hostname > /auth/admin。
流程
创建 Realm
- 将光标悬停在侧栏顶部的 realm 命名空间上,然后单击 Add Realm。
- 输入域名称(本例使用 eap-demo),然后单击 Create。
复制公钥
在新创建的 eap-demo 域中,单击 Keys 选项卡并复制生成的公钥。这个示例使用变量 < realm-public-key> 作为 brevity。这稍后用于部署支持 Red Hat Single Sign-On 的 JBoss EAP 镜像。
创建角色
在红帽单点登录中创建一个角色,其名称对应于 example EAP 应用的 web.xml 中定义的 JEE 角色。为 Red Hat Single Sign-On 应用用户 分配此角色,以对用户应用程序的访问权限进行身份验证。
- 单击 Configure 栏中的 Roles,以列出此域的角色。这是一个新域,因此应该只有默认的 offline_access 角色。
- 单击 Add Role。
- 输入角色名称(本示例使用角色 eap-user-role),然后单击 Save。
创建用户和分配角色
创建两个用户: - 为 域管理用户 分配 realm-management 角色,以处理 Red Hat Single Sign-On 服务器中的自动 Red Hat Single Sign-On 客户端注册。- 为应用用户 分配 JEE 角色(在上一步中创建的 JEE 角色),以验证用户应用程序的访问权限。
创建 域管理用户 :
- 单击 Manage 栏中的 Users,以查看该域的用户信息。
- 单击 添加用户。
- 输入有效 用户名 (本例使用用户 eap-mgmt-user)并单击 Save。
- 编辑用户配置。单击用户空间中的 Credentials 选项卡,并为该用户输入密码。确认密码之后,您可以点击 Reset Password 来设置用户密码。弹出窗口提示其他确认。
- 单击 Role 映射,以列出域和客户端角色配置。在 Client Roles 下拉菜单中,选择 realm-management 并将所有可用的角色添加到用户。这提供了用户 Red Hat Single Sign-On 服务器权限,可供 JBoss EAP 镜像用于创建客户端。
创建应用程序用户 :
- 单击 Manage 栏中的 Users,以查看该域的用户信息。
- 单击 添加用户。
- 输入有效的 Username 和 application 用户 的任何其他可选信息,然后单击 Save。
- 编辑用户配置。单击用户空间中的 Credentials 选项卡,并为该用户输入密码。确认密码之后,您可以点击 Reset Password 来设置用户密码。弹出窗口提示其他确认。
- 单击 Role 映射,以列出域和客户端角色配置。在 Available Roles 中,添加之前创建的角色。
4.5.3. 部署启用了红帽单点登录的 JBoss EAP 镜像 复制链接链接已复制到粘贴板!
流程
- 返回到 OpenShift Web 控制台,再单击 Add to project 列出默认镜像流和模板。
- 使用 Filter by keyword 搜索栏,将列表限制为与 sso 匹配的列表。您可能需要点击 See all 以显示所需的应用程序模板。
选择 eap71-sso-s2i 镜像,以列出所有部署参数。包含以下 Red Hat Single Sign-On 参数以在 EAP 构建期间配置 Red Hat Single Sign-On 凭证:
Expand 变量 值示例 APPLICATION_NAME
sso
HOSTNAME_HTTPS
secure-sample-jsp.eap-app-demo.openshift32.example.com
HOSTNAME_HTTP
sample-jsp.eap-app-demo.openshift32.example.com
SOURCE_REPOSITORY_URL
https://repository-example.com/developer/application
SSO_URL
https://secure-sso-sso-app-demo.openshift32.example.com/auth
SSO_REALM
eap-demo
SSO_USERNAME
eap-mgmt-user
SSO_PASSWORD
password
SSO_PUBLIC_KEY
<realm-public-key>
HTTPS_KEYSTORE
eapkeystore.jks
HTTPS_PASSWORD
password
HTTPS_SECRET
eap-ssl-secret
JGROUPS_ENCRYPT_KEYSTORE
eapjgroups.jceks
JGROUPS_ENCRYPT_PASSWORD
password
JGROUPS_ENCRYPT_SECRET
eap-jgroup-secret
- 单击 Create 以部署 JBoss EAP 镜像。
JBoss EAP 镜像部署可能需要几分钟时间。
4.5.4. 使用 Red Hat Single Sign-On 登录 JBoss EAP 服务器 复制链接链接已复制到粘贴板!
流程
- 访问 JBoss EAP 应用服务器,再单击 登录。您将被重定向到 Red Hat Single Sign-On 登录。
- 使用示例中创建的 Red Hat Single Sign-On 用户登录。您已通过 Red Hat Single Sign-On 服务器进行身份验证,并返回到 JBoss EAP 应用服务器。
4.6. 在带有 SAML 客户端的 Red Hat Single Sign-On 中手动注册 EAP 应用程序 复制链接链接已复制到粘贴板!
本示例为 EAP 项目准备红帽单点登录域、角色和用户凭据,并为 OpenShift 部署配置 EAP。部署后,可使用 Red Hat Single Sign-On 用户进行验证并访问 JBoss EAP。
这个示例使用 SAML 客户端,但也可以使用 OpenID-Connect 客户端。有关 SAML 和 OpenID 连接客户端之间的区别,请参阅 Red Hat Single Sign-On Client Registration Methods。../advanced_concepts/advanced_concepts.xml#SSO-Clients
前提条件
4.6.1. 准备 Red Hat Single Sign-On 凭证 复制链接链接已复制到粘贴板!
流程
使用 Red Hat Single Sign-On 部署期间创建的 管理员帐户,登录到加密 Red Hat Single Sign -On Web 服务器 https://secure-sso- <project-name>。<hostname > /auth/admin。
创建 Realm
- 将光标悬停在侧边栏顶部的 realm 命名空间(默认为 Master),然后单击 Add Realm。
- 输入域名称(本示例使用 saml-demo),然后单击 Create。
复制公钥
在新创建的 saml-demo 域中,单击 Keys 选项卡并复制生成的公钥。本例将变量 realm-public-key 用于 brevity。稍后需要此操作来部署启用了 Red Hat Single Sign-On 的 JBoss EAP 镜像。
创建角色
在红帽单点登录中创建一个角色,其名称对应于 example EAP 应用的 web.xml 中定义的 JEE 角色。该角色将分配给 Red Hat Single Sign-On 应用用户,以对用户应用程序的访问权限进行身份验证。
- 单击 Configure 栏中的 Roles,以列出此域的角色。这是一个新域,因此应该只有默认的 offline_access 角色。
- 单击 Add Role。
- 输入角色名称(本示例使用角色 saml-user-role),然后单击 Save。
创建用户和分配角色
创建两个用户: - 为 域管理用户 分配 realm-management 角色,以处理 Red Hat Single Sign-On 服务器中的自动 Red Hat Single Sign-On 客户端注册。- 为应用用户 分配 JEE 角色(在上一步中创建的 JEE 角色),以验证用户应用程序的访问权限。
创建 域管理用户 :
- 单击 Manage 栏中的 Users,以查看该域的用户信息。
- 单击 添加用户。
- 输入有效 用户名 (本例使用用户 app-mgmt-user)并单击 Save。
- 编辑用户配置。单击用户空间中的 Credentials 选项卡,并为该用户输入密码。确认密码之后,您可以点击 Reset Password 来设置用户密码。弹出窗口提示其他确认。
创建应用程序用户 :
- 单击 Manage 栏中的 Users,以查看该域的用户信息。
- 单击 添加用户。
- 输入有效的 Username 和 application 用户 的任何其他可选信息,然后单击 Save。
- 编辑用户配置。单击用户空间中的 Credentials 选项卡,并为该用户输入密码。确认密码之后,您可以点击 Reset Password 来设置用户密码。弹出窗口提示其他确认。
- 单击 Role 映射,以列出域和客户端角色配置。在 Available Roles 中,添加之前创建的角色。
创建并配置 SAML 客户端 :
客户端是请求用户身份验证的红帽单点登录实体。本例将 SAML 客户端配置为处理 EAP 应用的身份验证。本节保存了两个文件: keystore.jks 和 keycloak-saml-subsystem.xml,后者稍后在流程中需要。
创建 SAML 客户端:
- 单击 Configure 栏中的 Clients,以列出 realm 中的客户端。点 Create。
- 输入有效的 客户端 ID。这个示例使用 sso-saml-demo。
- 在 Client Protocol 下拉菜单中,选择 saml。
- 输入应用程序的 Root URL。这个示例使用 https://demoapp-eap-app-demo.openshift32.example.com。
- 点 Save。
配置 SAML 客户端:
在 Settings 选项卡中,为新 sso-saml-demo 客户端设置 Root URL 和 Valid Redirect URL:
- 对于 Root URL,请输入创建客户端时使用的相同地址。这个示例使用 https://demoapp-eap-app-demo.openshift32.example.com。
- 对于 Valid Redirect URL,在用户登录时输入要重定向到 的地址。这个示例使用相对于 root https://demoapp-eap-app-demo.openshift32.example.com/* 的重定向地址。
导出 SAML 密钥:
- 点 sso-saml-demo 客户端空间中的 SAML Keys 选项卡,再单击 Export。
- 在本例中,将 归档格式 保留为 JKS。这个示例使用 sso-saml-demo 的默认 Key Alias,以及 saml-demo 的默认 Realm Certificate Alias。
- 输入 "密钥密码" 和 "存储密码 "。这个示例同时使用 password。
- 单击 Download,再保存 keystore-saml.jks 文件,供日后使用。
- 单击 sso-saml-demo 客户端,以返回到为下一步准备的客户端空间。
下载客户端适配器:
- 单击 Installation。
- 使用格式选项 下拉菜单选择格式。这个示例使用 Keycloak SAML Wildfly/JBoss 子系统。
- 单击 Download,再保存文件 keycloak-saml-subsystem.xml。
keystore-saml.jks 将与下一节中的其他 EAP 密钥存储一起使用,以便为 EAP 应用项目创建 OpenShift 机密。将 keystore-saml.jks 文件复制到 OpenShift 节点。
keycloak-saml-subsystem.xml 将被修改并在应用部署中使用。将它作为 secure-saml-deployments 复制到应用的 /configuration 文件夹中。
4.6.2. 为 OpenShift 部署准备红帽单点登录身份验证 复制链接链接已复制到粘贴板!
使用包含 cluster:admin 角色的用户登录 OpenShift CLI。
流程
创建一个新项目:
oc new-project eap-app-demo
$ oc new-project eap-app-demoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
view角色添加到default服务帐户。这可让服务帐户查看eap-app-demo命名空间中的所有资源,这是管理集群所必需的。oc policy add-role-to-user view system:serviceaccount:$(oc project -q):default
$ oc policy add-role-to-user view system:serviceaccount:$(oc project -q):defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow EAP 模板需要 SSL 密钥存储和 JGroups 密钥存储 :
本例使用keytool(由 Java Development Kit 附带的软件包)为这些密钥存储生成自签名证书。以下命令将提示输入密码。
为 SSL 密钥存储生成安全密钥:
keytool -genkeypair -alias https -storetype JKS -keystore eapkeystore.jks
$ keytool -genkeypair -alias https -storetype JKS -keystore eapkeystore.jksCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为 JGroups 密钥存储生成安全密钥:
keytool -genseckey -alias jgroups -storetype JCEKS -keystore eapjgroups.jceks
$ keytool -genseckey -alias jgroups -storetype JCEKS -keystore eapjgroups.jceksCopy to Clipboard Copied! Toggle word wrap Toggle overflow
使用 SSL 和 JGroup 密钥存储文件为 OpenShift 机密生成 EAP:
oc create secret generic eap-ssl-secret --from-file=eapkeystore.jks oc create secret generic eap-jgroup-secret --from-file=eapjgroups.jceks
$ oc create secret generic eap-ssl-secret --from-file=eapkeystore.jks $ oc create secret generic eap-jgroup-secret --from-file=eapjgroups.jceksCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将 EAP 应用机密添加到之前创建的 EAP 服务帐户:
oc secrets link default eap-ssl-secret eap-jgroup-secret
$ oc secrets link default eap-ssl-secret eap-jgroup-secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.6.3. 修改 secure-saml-deployments 文件 复制链接链接已复制到粘贴板!
前提条件
- keycloak-saml-subsystem.xml 从上一节中的红帽单点登录客户端导出至应用的 /configuration 文件夹中,并重命名了 secure-saml-deployments。EAP 在启动文件并将其复制到 Red Hat Sign-On SAML 适配器配置中的 standalone-openshift.xml 文件时进行搜索。
流程
- 在文本编辑器中打开 /configuration/secure-saml-deployments 文件。
- 将 secure-deployment name 标签的 YOUR-WAR.war 值替换为 application .war 文件。这个示例使用 sso-saml-demo.war。
- 将 SPECIFY YOUR LOGOUT PAGE! memory page 标签的值 替换为 url,以便在从应用程序注销时重定向用户。这个示例使用 /index.jsp。
删除 & lt;PrivateKeyPem& gt; 和 < CertificatePem > 标签和密钥,并将它替换为密钥存储信息:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow keystore-saml.jks 的挂载路径(本例中为 /etc/eap-secret-volume/keystore-saml.jks)可以在应用模板中通过参数 EAP_HTTPS_KEYSTORE_DIR 指定。
当从 Red Hat Sign-On 客户端导出 SAML 密钥时,为 PrivateKey 和证书配置别名和密码。删除第二个 & lt;CertificatePem > 标签和密钥,并将其替换为 realm 证书信息:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 当从 Red Hat Single Sign-On 客户端导出 SAML 密钥时,配置了证书别名和密码。
- 保存并关闭 /configuration/secure-saml-deployments 文件。
4.6.4. 在应用程序 web.xml中配置 SAML 客户端注册 复制链接链接已复制到粘贴板!
客户端类型必须通过应用程序 web.xml 中的 <auth-method > 键指定。此文件在部署时由镜像读取。
打开应用程序 web.xml 文件,并确保它包含以下内容:
... <login-config> <auth-method>KEYCLOAK-SAML</auth-method> </login-config> ...
...
<login-config>
<auth-method>KEYCLOAK-SAML</auth-method>
</login-config>
...
4.6.5. 部署应用程序 复制链接链接已复制到粘贴板!
您不需要包含镜像的任何 Red Hat Single Sign-On 配置,因为应用程序本身已配置了该配置。导航到应用程序登录页面,将您重定向到 Red Hat Single Sign-On 登录。使用之前创建的应用程序 用户,通过 Red Hat Single Sign-On 登录应用程序。
第 5 章 参考 复制链接链接已复制到粘贴板!
5.1. 工件存储库镜像 复制链接链接已复制到粘贴板!
Maven 中的存储库包含各种类型的构建工件和依赖项(所有项目 jar、库 jar、插件或任何其他项目特定工件)。它还指定在执行 S2I 构建期间从哪里下载工件的位置。除了使用中央存储库外,组织还是一种常见做法,用于部署本地自定义存储库(mirror)。
使用镜像的好处包括:
- 同步镜像的可用性,地理上、更快速。
- 能够更好地控制存储库内容。
- 有可能在不同团队(开发人员、CI)之间共享工件,而无需依赖公共服务器和存储库。
- 改进构建时间。
通常,存储库管理器可以充当镜像的本地缓存。假设存储库管理器已在 http://10.0.0.1:8080/repository/internal/ 部署在并可访问,那么 S2I 构建可以通过按照以下流程向构建配置提供 MAVEN_MIRROR_URL 环境变量来使用这个管理器:
流程
识别构建配置的名称,以针对其应用
MAVEN_MIRROR_URL变量。oc get bc -o name
$ oc get bc -o name buildconfig/ssoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
MAVEN_MIRROR_URL环境变量更新sso的构建配置。oc set env bc/sso \ -e MAVEN_MIRROR_URL="http://10.0.0.1:8080/repository/internal/"
$ oc set env bc/sso \ -e MAVEN_MIRROR_URL="http://10.0.0.1:8080/repository/internal/" buildconfig "sso" updatedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证设置。
oc set env bc/sso --list buildconfigs sso
$ oc set env bc/sso --list # buildconfigs sso MAVEN_MIRROR_URL=http://10.0.0.1:8080/repository/internal/Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 调度应用的新构建。
在应用构建过程中,您会注意到从存储库管理器中提取 Maven 依赖项,而不是默认的公共存储库。另外,在构建完成后,您将看到镜像已填充了构建期间检索和使用的所有依赖项。
5.2. 环境变量 复制链接链接已复制到粘贴板!
5.2.1. 信息环境变量 复制链接链接已复制到粘贴板!
以下信息环境变量旨在传达有关镜像的信息,而不由用户修改:
| 变量名称 | Description | 值示例 |
|---|---|---|
| AB_JOLOKIA_AUTH_OPENSHIFT | - | true |
| AB_JOLOKIA_HTTPS | - | true |
| AB_JOLOKIA_PASSWORD_RANDOM | - | true |
| JBOSS_IMAGE_NAME | 镜像名称,与 "name" 标签相同。 | rh-sso-7/sso75-openshift-rhel8 |
| JBOSS_IMAGE_VERSION | 镜像版本,与 "version" 标签相同。 | 7.5 |
| JBOSS_MODULES_SYSTEM_PKGS | - | org.jboss.logmanager,jdk.nashorn.api |
5.2.2. 配置环境变量 复制链接链接已复制到粘贴板!
配置环境变量的设计旨在方便地调整镜像,而无需重建,用户应根据需要设置。
| 变量名称 | Description | 值示例 |
|---|---|---|
| AB_JOLOKIA_AUTH_OPENSHIFT |
切换到 OpenShift TLS 通信的客户端身份验证。此参数的值可以是相对区分的名称,它必须包含在呈现的客户端证书中。启用此参数将自动将 Jolokia 切换为 https 通信模式。默认 CA 证书设置为 | true |
| AB_JOLOKIA_CONFIG |
如果设置使用此文件(包括路径)作为 Jolokia JVM 代理属性(如 Jolokia 的 参考手册中所述)。如果没有设置,则使用本文档中定义的设置创建 | /opt/jolokia/custom.properties |
| AB_JOLOKIA_DISCOVERY_ENABLED | 启用 Jolokia 发现。默认为 false。 | true |
| AB_JOLOKIA_HOST | 要绑定到的主机地址。默认值为 0.0.0.0。 | 127.0.0.1 |
| AB_JOLOKIA_HTTPS |
在与 https 的安全通讯中切换。如果 AB_JOLOKIA_OPTS 中没有提供 serverCert 配置,则默认生成自签名证书。注意:如果将值设为空字符串,则 https | true |
| AB_JOLOKIA_ID | 要使用的代理 ID (默认情况下 $HOSTNAME,它是容器 ID)。 | openjdk-app-1-xqlsj |
| AB_JOLOKIA_OFF |
如果集禁用 Jolokia 激活(例如,回显一个空值)。默认情况下启用 Jolokia。注意:如果将值设为空字符串,则 https | true |
| AB_JOLOKIA_OPTS |
要附加到代理配置中的其他选项。它们应当以 | backlog=20 |
| AB_JOLOKIA_PASSWORD | 用于基本身份验证的密码。默认情况下关闭身份验证。 | mypassword |
| AB_JOLOKIA_PASSWORD_RANDOM | 如果设置,则会为 AB_JOLOKIA_PASSWORD 生成随机值,并将其保存在 /opt/jolokia/etc/jolokia.pw 文件中。 | true |
| AB_JOLOKIA_PORT | 要使用的端口(默认为 8778)。 | 5432 |
| AB_JOLOKIA_USER | 用于基本身份验证的用户。默认为 jolokia。 | myusername |
| CONTAINER_CORE_LIMIT | 计算的内核限制,如 CFS Bandwidth Control 中所述。 | 2 |
| GC_ADAPTIVE_SIZE_POLICY_WEIGHT | 为当前 Garbage Collection (GC)时间和之前的 GC 时间相比,为当前 Garbage Collection (GC)指定的权重。 | 90 |
| GC_MAX_HEAP_FREE_RATIO | GC 后可用堆的百分比上限,以避免缩减。 | 40 |
| GC_MAX_METASPACE_SIZE | 最大元空间大小。 | 100 |
| GC_TIME_RATIO_MIN_HEAP_FREE_RATIO | GC 后最小空闲堆的百分比以避免扩展。 | 20 |
| GC_TIME_RATIO | 指定垃圾回收外所花费的时间(例如,应用程序执行时间)与垃圾回收所花费的时间的比例。 | 4 |
| JAVA_DIAGNOSTICS | 将其设置为在发生情况时获取一些诊断信息以标准输出。 | true |
| JAVA_INITIAL_MEM_RATIO |
这用于计算基于最大堆内存的默认初始堆内存。默认值为 100,表示 maximal 堆的 100% 用于初始堆大小。您可以通过将此值设置为 0 来跳过此机制,在这种情况下,不会添加 | 100 |
| JAVA_MAX_MEM_RATIO |
它被用来根据容器限制计算默认的 maximal 堆内存。如果在 Docker 容器中使用,且没有容器的内存约束,则此选项不会起作用。如果有一个内存约束,则 | 40 |
| JAVA_OPTS_APPEND | 服务器启动选项. | -Dkeycloak.migration.action=export -Dkeycloak.migration.provider=dir -Dkeycloak.migration.dir=/tmp |
| MQ_SIMPLE_DEFAULT_PHYSICAL_DESTINATION |
为向后兼容,请将 设为 true 以使用 | false |
| OPENSHIFT_KUBE_PING_LABELS | 集群标签选择器. | app=sso-app |
| OPENSHIFT_KUBE_PING_NAMESPACE | 集群项目命名空间。 | myproject |
| SCRIPT_DEBUG |
如果设置为 | true |
| SSO_ADMIN_PASSWORD |
红帽单点登录服务器的 | adm-password |
| SSO_ADMIN_USERNAME |
Red Hat Single Sign-On 服务器的 | admin |
| SSO_HOSTNAME |
Red Hat Single Sign-On 服务器的自定义主机名。默认不设置。如果没有设置,则请求主机名 SPI 供应商,它使用请求标头来确定 Red Hat Single Sign-On 服务器的主机名。 | rh-sso-server.openshift.example.com |
| SSO_REALM | 如果提供了这个环境变量,则在 Red Hat Single Sign-On 服务器中创建的域名称。 | demo |
| SSO_SERVICE_PASSWORD | Red Hat Single Sign-On 服务用户的密码。 | mgmt-password |
| SSO_SERVICE_USERNAME | 用于访问 Red Hat Single Sign-On 服务的用户名。客户端用于在指定的 Red Hat Single Sign-On realm 中创建应用程序客户端。如果提供了这个环境变量,则会创建此用户。 | sso-mgmtuser |
| SSO_TRUSTSTORE | secret 中的 truststore 文件的名称。 | truststore.jks |
| SSO_TRUSTSTORE_DIR | 信任存储目录。 | /etc/sso-secret-volume |
| SSO_TRUSTSTORE_PASSWORD | 信任存储和证书的密码。 | mykeystorepass |
| SSO_TRUSTSTORE_SECRET | 包含 truststore 文件的 secret 名称。用于 sso-truststore-volume 卷。 | truststore-secret |
适用于 OpenShift 的 Red Hat Single Sign-On 的可用应用程序模板可以将 上述配置变量 与常见 OpenShift 变量(如 APPLICATION_NAME 或 SOURCE_REPOSITORY_URL)、产品特定变量(如 HORNETQ_CLUSTER_PASSWORD)或配置典型到数据库镜像(如 POSTGRESQL_MAX_CONNECTIONS)的配置变量。https://docs.openshift.com/container-platform/latest/openshift_images/using-templates.html可以根据需要调整所有这些不同类型的配置变量,以实现所部署的 Red Hat Single Sign-On-enabled 应用将尽可能与预期的用例一致。如下为 Red Hat Single Sign-On-On-enabled 应用程序的每个类别可用的配置变量列表。
5.2.3. 所有 Red Hat Single Sign-On 镜像的模板变量 复制链接链接已复制到粘贴板!
| 变量 | Description |
|---|---|
| APPLICATION_NAME | 应用程序的名称。 |
| DB_MAX_POOL_SIZE | 为配置的数据源设置 xa-pool/max-pool-size。 |
| DB_TX_ISOLATION | 为配置的数据源设置 transaction-isolation。 |
| DB_USERNAME | 数据库用户名。 |
| HOSTNAME_HTTP | http 服务路由的自定义主机名。留空,如: < application-name>.<project>.<default-domain-suffix>。 |
| HOSTNAME_HTTPS | https 服务路由的自定义主机名。留空,如: < application-name>.<project>.<default-domain-suffix>。 |
| HTTPS_KEYSTORE | 机密中密钥存储文件的名称。与 HTTPS_PASSWORD 和 HTTPS_NAME 一起定义,请启用 HTTPS,并将 SSL 证书密钥文件设置为 $JBOSS_HOME/standalone/configuration 下的相对路径。 |
| HTTPS_KEYSTORE_TYPE | 密钥存储文件的类型(JKS 或 JCEKS)。 |
| HTTPS_NAME | 与服务器证书关联的名称(例如 jboss)。与 HTTPS_PASSWORD 和 HTTPS_KEYSTORE 一起定义,请启用 HTTPS 并设置 SSL 名称。 |
| HTTPS_PASSWORD | 密钥存储和证书的密码(例如 mykeystorepass)。与 HTTPS_NAME 和 HTTPS_KEYSTORE 一起定义,请启用 HTTPS 并设置 SSL 密钥密码。 |
| HTTPS_SECRET | 包含密钥存储文件的机密的名称。 |
| IMAGE_STREAM_NAMESPACE | 安装 Red Hat Middleware 镜像的 ImageStreams 的命名空间。这些 ImageStreams 通常安装在 openshift 命名空间中。只有在安装了不同命名空间/项目的 ImageStreams 时,才需要修改它。 |
| JGROUPS_CLUSTER_PASSWORD | JGroups 集群密码. |
| JGROUPS_ENCRYPT_KEYSTORE | 机密中密钥存储文件的名称。 |
| JGROUPS_ENCRYPT_NAME | 与服务器证书关联的名称(例如 secret-key)。 |
| JGROUPS_ENCRYPT_PASSWORD | 密钥存储和证书的密码(如 )。 |
| JGROUPS_ENCRYPT_SECRET | 包含密钥存储文件的机密的名称。 |
| SSO_ADMIN_USERNAME |
Red Hat Single Sign-On 服务器的 |
| SSO_ADMIN_PASSWORD |
红帽单点登录服务器的 |
| SSO_REALM | 如果提供了这个环境变量,则在 Red Hat Single Sign-On 服务器中创建的域名称。 |
| SSO_SERVICE_USERNAME | 用于访问 Red Hat Single Sign-On 服务的用户名。客户端用于在指定的 Red Hat Single Sign-On realm 中创建应用程序客户端。如果提供了这个环境变量,则会创建此用户。 |
| SSO_SERVICE_PASSWORD | Red Hat Single Sign-On 服务用户的密码。 |
| SSO_TRUSTSTORE | secret 中的 truststore 文件的名称。 |
| SSO_TRUSTSTORE_SECRET | 包含 truststore 文件的 secret 名称。用于 sso-truststore-volume 卷。 |
| SSO_TRUSTSTORE_PASSWORD | 信任存储和证书的密码。 |
| 变量 | Description |
|---|---|
| DB_USERNAME | 数据库用户名。 |
| DB_PASSWORD | 数据库用户密码. |
| DB_JNDI | 应用程序用来解析数据源的数据库 JNDI 名称,如 java:/jboss/datasources/postgresql |
| POSTGRESQL_MAX_CONNECTIONS | 允许的最大客户端连接数。这也设置准备的事务的最大数量。 |
| POSTGRESQL_SHARED_BUFFERS | 配置专用于 PostgreSQL 缓存数据的内存数量。 |
5.2.5. 常规 eap64 和 eap71 S2I 镜像的模板变量 复制链接链接已复制到粘贴板!
| 变量 | Description |
|---|---|
| APPLICATION_NAME | 应用程序的名称。 |
| ARTIFACT_DIR | 工件目录。 |
| AUTO_DEPLOY_EXPLODED | 控制是否应该自动部署展开的部署内容。 |
| CONTEXT_DIR | 构建 Git 项目中的路径;根项目目录为空。 |
| GENERIC_WEBHOOK_SECRET | 通用构建触发器 secret。 |
| GITHUB_WEBHOOK_SECRET | GitHub 触发器 secret。 |
| HORNETQ_CLUSTER_PASSWORD | HornetQ 群集管理员密码. |
| HORNETQ_QUEUES | 队列名称。 |
| HORNETQ_TOPICS | 主题名称。 |
| HOSTNAME_HTTP | http 服务路由的自定义主机名。留空,如: < application-name>.<project>.<default-domain-suffix>。 |
| HOSTNAME_HTTPS | https 服务路由的自定义主机名。留空,如: < application-name>.<project>.<default-domain-suffix>。 |
| HTTPS_KEYSTORE_TYPE | 密钥存储文件的类型(JKS 或 JCEKS)。 |
| HTTPS_KEYSTORE | 机密中密钥存储文件的名称。与 HTTPS_PASSWORD 和 HTTPS_NAME 一起定义,请启用 HTTPS,并将 SSL 证书密钥文件设置为 $JBOSS_HOME/standalone/configuration 下的相对路径。 |
| HTTPS_NAME | 与服务器证书关联的名称(例如 jboss)。与 HTTPS_PASSWORD 和 HTTPS_KEYSTORE 一起定义,请启用 HTTPS 并设置 SSL 名称。 |
| HTTPS_PASSWORD | 密钥存储和证书的密码(例如 mykeystorepass)。与 HTTPS_NAME 和 HTTPS_KEYSTORE 一起定义,请启用 HTTPS 并设置 SSL 密钥密码。 |
| HTTPS_SECRET | 包含密钥存储文件的机密的名称。 |
| IMAGE_STREAM_NAMESPACE | 安装 Red Hat Middleware 镜像的 ImageStreams 的命名空间。这些 ImageStreams 通常安装在 openshift 命名空间中。只有在安装了不同命名空间/项目的 ImageStreams 时,才需要修改它。 |
| JGROUPS_CLUSTER_PASSWORD | JGroups 集群密码. |
| JGROUPS_ENCRYPT_KEYSTORE | 机密中密钥存储文件的名称。 |
| JGROUPS_ENCRYPT_NAME | 与服务器证书关联的名称(例如 secret-key)。 |
| JGROUPS_ENCRYPT_PASSWORD | 密钥存储和证书的密码(如 )。 |
| JGROUPS_ENCRYPT_SECRET | 包含密钥存储文件的机密的名称。 |
| SOURCE_REPOSITORY_REF | Git 分支/标签引用. |
| SOURCE_REPOSITORY_URL | 应用的 Git 源 URI。 |
5.2.6. 特定于 eap64-sso-s2i 和 eap71-sso-s2i 的模板变量用于自动客户端注册 复制链接链接已复制到粘贴板!
| 变量 | Description |
|---|---|
| SSO_URL | 红帽单点登录服务器位置. |
| SSO_REALM | 如果提供了这个环境变量,则在 Red Hat Single Sign-On 服务器中创建的域名称。 |
| SSO_USERNAME | 用于访问 Red Hat Single Sign-On 服务的用户名。这用于在指定的 Red Hat Single Sign-On realm 中创建应用程序客户端。这应当与通过 sso75- 模板指定的 SSO_SERVICE_USERNAME 匹配。 |
| SSO_PASSWORD | Red Hat Single Sign-On 服务用户的密码。 |
| SSO_PUBLIC_KEY | 红帽单点登录公钥.建议将公钥传递给模板,以避免中间人安全攻击。 |
| SSO_SECRET | 红帽单点登录客户端机密进行机密访问。 |
| SSO_SERVICE_URL | 红帽单点登录服务位置. |
| SSO_TRUSTSTORE_SECRET | 包含 truststore 文件的 secret 名称。用于 sso-truststore-volume 卷。 |
| SSO_TRUSTSTORE | secret 中的 truststore 文件的名称。 |
| SSO_TRUSTSTORE_PASSWORD | 信任存储和证书的密码。 |
| SSO_BEARER_ONLY | 红帽单点登录客户端访问类型. |
| SSO_DISABLE_SSL_CERTIFICATE_VALIDATION | 如果 EAP 和 Red Hat Single Sign-On Server 之间的 true SSL 通信是不安全的(例如,使用 curl 禁用证书验证) |
| SSO_ENABLE_CORS | 为红帽单点登录应用程序启用 CORS。 |
| 变量 | Description |
|---|---|
| SSO_SAML_CERTIFICATE_NAME | 与服务器证书关联的名称。 |
| SSO_SAML_KEYSTORE_PASSWORD | 密钥存储和证书的密码。 |
| SSO_SAML_KEYSTORE | 机密中密钥存储文件的名称。 |
| SSO_SAML_KEYSTORE_SECRET | 包含密钥存储文件的机密的名称。 |
| SSO_SAML_LOGOUT_PAGE | SAML 应用程序的 Red Hat Single Sign-On logout 页面。 |
5.3. 公开的端口 复制链接链接已复制到粘贴板!
| 端口号 | Description |
|---|---|
| 8443 | HTTPS |
| 8778 | Jolokia monitoring |