4.5. 在带有 OpenID-Connect 客户端的 Red Hat Single Sign-On 中自动注册 EAP 应用程序
本例使用 OpenID-Connect 客户端适配器为 EAP 项目准备红帽单点登录、角色和用户凭据。然后,EAP 中为 OpenShift 模板提供了这些凭证,以自动注册红帽单点登录客户端注册。部署后,可以使用 Red Hat Single Sign-On 用户进行验证和访问 JBoss EAP。
这个示例使用 OpenID-Connect 客户端,但也可以使用 SAML 客户端。如需有关 OpenID-Connect 和 SAML 客户端之间的区别的更多信息,请参阅 Red Hat Single Sign-On Clients 和 Automatic and Manual Red Hat Single Sign-On Client Registration Methods。
先决条件
- 已执行 为 OpenShift Deployment 准备红帽单点登录身份验证 部分中描述的步骤。
4.5.1. 为 OpenShift 部署准备红帽单点登录身份验证
使用包含 cluster:admin 角色的用户登录 OpenShift CLI。
创建一个新项目
$ oc new-project eap-app-demo
将
view
角色添加到default
服务帐户。这可让服务帐户查看eap-app-demo
命名空间中的所有资源,这是管理集群所必需的。$ oc policy add-role-to-user view system:serviceaccount:$(oc project -q):default
EAP 模板需要 SSL 密钥存储和 JGroups 密钥存储。
本例使用keytool
(Java Development Kit 中包含的软件包)为这些密钥存储生成自签名证书。以下命令将提示输入密码。
为 SSL 密钥存储生成安全密钥:
$ keytool -genkeypair -alias https -storetype JKS -keystore eapkeystore.jks
为 JGroups 密钥存储生成安全密钥:
$ keytool -genseckey -alias jgroups -storetype JCEKS -keystore eapjgroups.jceks
使用 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
将 EAP secret 添加到
default
服务帐户:$ oc secrets link default eap-ssl-secret eap-jgroup-secret
4.5.2. 准备红帽单点登录凭证
使用在红帽单点登录部署期间创建的 管理员帐户 登录到加密的红帽单点登录 Web 服务器 https://secure-sso-<project-name > . <hostname> /auth/admin。
流程
创建一个 Realm
- 将光标悬停在侧边栏顶部的 realm 命名空间上,然后单击 Add Realm。
- 输入 realm 名称(本例使用 eap-demo),然后点 Create。
复制公钥
在新创建的 eap-demo 域中,单击 Keys 选项卡并复制生成的公钥。这个示例为 brevity 使用变量 & lt;realm-public-key& gt;。这用于部署启用了 Red Hat Single Sign-On 的 JBoss EAP 镜像。
创建角色
在红帽单点登录中创建角色,其名称对应于示例 EAP 应用的 web.xml 中定义的 JEE 角色。此角色分配到 Red Hat Single Sign-On 应用用户,以验证对用户应用的访问权限。
- 单击 Configure 边栏中的 Roles,以列出此域的角色。这是一个新域,因此只有默认的 offline_access 角色。
- 点 Add Role。
- 输入角色名称(本例使用 role eap-user-role),然后单击 Save。
创建用户和分配角色
创建两个用户: - 为 realm-management 角色分配 域管理用户,以便在 Red Hat Single Sign-On 服务器中处理自动的 Red Hat Single Sign-On 客户端注册。- 分配在上一步中创建的应用程序用户 JEE 角色,以验证对用户应用程序的访问权限。
创建 realm 管理用户 :
- 单击 Manage sidebar 中的 Users,以查看域的用户信息。
- 单击 添加用户。
- 输入一个有效的 Username (本例使用用户 eap-mgmt-user)并单击 Save。
- 编辑用户配置。单击用户空间中的 Credentials 选项卡,然后输入用户的密码。确认密码后,您可以单击 重置密码 以设置用户密码。弹出窗口提示进行额外的确认。
- 单击 Role Mappings,以列出 realm 和 client 角色配置。在 Client Roles 下拉菜单中,选择 realm-management 并将所有可用的角色添加到用户。这提供了红帽单点登录服务器权限,供 JBoss EAP 镜像用于创建客户端。
创建应用程序用户 :
- 单击 Manage sidebar 中的 Users,以查看域的用户信息。
- 单击 添加用户。
- 输入一个有效的 Username 以及 应用程序用户 的额外可选信息,然后点 Save。
- 编辑用户配置。单击用户空间中的 Credentials 选项卡,然后输入用户的密码。确认密码后,您可以单击 重置密码 以设置用户密码。弹出窗口提示进行额外的确认。
- 单击 Role Mappings,以列出 realm 和 client 角色配置。在 Available Roles 中,添加之前创建的角色。
4.5.3. 部署启用了 Red Hat Single Sign-On 的 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 凭证:
变量 示例值 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. 使用红帽单点登录登录 JBoss EAP 服务器
流程
- 访问 JBoss EAP 应用服务器,然后单击 登录。您将被重定向到 Red Hat Single Sign-On 登录。
- 使用在示例中创建的 Red Hat Single Sign-On 用户登录。您已通过 Red Hat Single Sign-On 服务器进行身份验证,并返回给 JBoss EAP 应用服务器。