4.6. 在 Red Hat Single Sign-On 中手动将 EAP 应用程序注册到 SAML 客户端


本例为 EAP 项目准备红帽单点登录域、角色和用户凭据,并为 OpenShift 部署配置 EAP。部署后,可以使用 Red Hat Single Sign-On 用户进行验证和访问 JBoss EAP。

注意

这个示例使用 SAML 客户端,但也可以使用 OpenID-Connect 客户端。如需有关 OpenID-Connect 和 SAML 客户端之间的区别的更多信息,请参阅 Red Hat Single Sign-On Clients 和 Automatic and Manual Red Hat Single Sign-On Client Registration Methods。

先决条件

4.6.1. 准备红帽单点登录凭证

流程

使用在红帽单点登录部署期间创建的 管理员帐户 登录到加密的红帽单点登录 Web 服务器 https://secure-sso-<project-name > . <hostname> /auth/admin。

创建一个 Realm

  1. 将光标悬停在域命名空间(默认为 主栏的顶部),然后单击 Add Realm。
  2. 输入 realm 名称(本例使用 saml-demo),然后点 Create。

复制公钥

在新创建的 saml-demo 域中,单击 Keys 选项卡并复制生成的公钥。本例使用变量 realm-public-key 进行 brevity。之后需要部署启用了 Red Hat Single Sign-On 的 JBoss EAP 镜像。

创建角色

在红帽单点登录中创建角色,其名称对应于示例 EAP 应用的 web.xml 中定义的 JEE 角色。此角色将分配给 Red Hat Single Sign-On 应用用户,以验证对用户应用的访问权限。

  1. 单击 Configure 边栏中的 Roles,以列出此域的角色。这是一个新域,因此只有默认的 offline_access 角色。
  2. 点 Add Role。
  3. 输入角色名称(本例使用 role saml-user-role)并点 Save。

创建用户和分配角色

创建两个用户: - 为 realm-management 角色分配 域管理用户,以便在 Red Hat Single Sign-On 服务器中处理自动的 Red Hat Single Sign-On 客户端注册。- 分配在上一步中创建的应用程序用户 JEE 角色,以验证对用户应用程序的访问权限。

创建 realm 管理用户 :

  1. 单击 Manage sidebar 中的 Users,以查看域的用户信息。
  2. 单击 添加用户。
  3. 输入一个有效的 Username (本示例使用用户 app-mgmt-user)并点 Save。
  4. 编辑用户配置。单击用户空间中的 Credentials 选项卡,然后输入用户的密码。确认密码后,您可以单击 重置密码 以设置用户密码。弹出窗口提示进行额外的确认。

创建应用程序用户 :

  1. 单击 Manage sidebar 中的 Users,以查看域的用户信息。
  2. 单击 添加用户。
  3. 输入一个有效的 Username 以及 应用程序用户 的额外可选信息,然后点 Save。
  4. 编辑用户配置。单击用户空间中的 Credentials 选项卡,然后输入用户的密码。确认密码后,您可以单击 重置密码 以设置用户密码。弹出窗口提示进行额外的确认。
  5. 单击 Role Mappings,以列出 realm 和 client 角色配置。在 Available Roles 中,添加之前创建的角色。

创建并配置 SAML 客户端 :

客户端是请求用户身份验证的红帽单点登录实体。本例配置 SAML 客户端,以处理 EAP 应用的身份验证。本节保存两个文件 keystore.jks 和 keycloak-saml-subsystem.xml,它们会在以后的过程中需要。

创建 SAML 客户端:

  1. 单击 Configure 边栏中的 Clients,以列出域中的客户端。点 Create。
  2. 输入一个有效 的客户端 ID。这个示例使用 sso-saml-demo。
  3. 在 Client Protocol 下拉菜单中选择 saml。
  4. 输入应用程序的 Root URL。这个示例使用 https://demoapp-eap-app-demo.openshift32.example.com。
  5. 点击 Save。

配置 SAML 客户端:

在 Settings 选项卡中,为新的 sso-saml-demo 客户端设置 Root URL 和 Valid Redirect URL :

  1. 对于 Root URL,请输入创建客户端时使用的相同地址。这个示例使用 https://demoapp-eap-app-demo.openshift32.example.com。
  2. 对于 有效的重定向 URL,在登录或注销时输入要重定向到的用户的地址。这个示例使用相对于 root https://demoapp-eap-app-demo.openshift32.example.com/* 的重定向地址。

导出 SAML 密钥:

  1. 点 sso-saml-demo 客户端空间中的 SAML Keys 标签页,点 Export。
  2. 在本例中,将 归档格式 保留为 JKS。这个示例使用 sso-saml-demo 的默认 Key Alias 和 default Realm Certificate Alias of saml-demo。
  3. 输入密钥密码 , 并输入 "存储密码 "。这个示例使用 password。
  4. 单击 Download 并保存 密钥存储-saml.jks 文件,以便稍后使用。
  5. 单击 sso-saml-demo 客户端,以返回到客户端空间以供下一步使用。

下载客户端适配器:

  1. 点击 Installation。
  2. 使用 Format Option 下拉菜单选择格式。本例使用 Keycloak SAML Wildfly/JBoss subsystem。
  3. 点 Download 并保存 keycloak-saml-subsystem.xml 文件。

keystore-saml.jks 将与下一部分中的其他 EAP 密钥存储一起使用,以创建 EAP 应用项目的 OpenShift 机密。将 密钥存储-saml.jks 文件复制到 OpenShift 节点。
keycloak-saml-subsystem.xml 将修改并在应用程序部署中使用。将它复制到应用的 /configuration 文件夹作为 secure-saml-deployments。

使用包含 cluster:admin 角色的用户登录 OpenShift CLI。

流程

  1. 创建一个新项目

    $ oc new-project eap-app-demo
  2. 将 view 角色添加到 default 服务帐户。这可让服务帐户查看 eap-app-demo 命名空间中的所有资源,这是管理集群所必需的。

    $ oc policy add-role-to-user view system:serviceaccount:$(oc project -q):default
  3. EAP 模板需要 SSL 密钥存储和 JGroups 密钥存储。
    本例使用 keytool (Java Development Kit 中包含的软件包)为这些密钥存储生成自签名证书。以下命令将提示输入密码。

    1. 为 SSL 密钥存储生成安全密钥:

      $ keytool -genkeypair -alias https -storetype JKS -keystore eapkeystore.jks
    2. 为 JGroups 密钥存储生成安全密钥:

      $ keytool -genseckey -alias jgroups -storetype JCEKS -keystore eapjgroups.jceks
  4. 使用 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
  5. 将 EAP 应用程序 secret 添加到之前创建的 EAP 服务帐户中:

    $ oc secrets link default eap-ssl-secret eap-jgroup-secret

4.6.3. 修改 secure-saml-deployments 文件

先决条件

  • keycloak-saml-subsystem.xml 从上一节中的 Red Hat Single Sign-On 客户端导出,应该已复制到应用程序的 /configuration 文件夹中,并重命名了 secure-saml-deployments。EAP 会在启动该文件并将其复制到 Red Hat Single Sign-On SAML 适配器配置中的 standalone-openshift.xml 文件时搜索此文件。

流程

  1. 在文本编辑器中打开 /configuration/secure-saml-deployments 文件。
  2. 将 secure-deployment name 标签的 YOUR-WAR.war 值替换为应用程序的 .war 文件。本例使用 sso-saml-demo.war。
  3. 将 logout page 标签的 SPECIFY YOUR LOGOUT PAGE! 值替换为在登出应用程序时将用户重新导向的 url。这个示例使用 /index.jsp。
  4. 删除 & lt;PrivateKeyPem& gt; 和 < CertificatePem > 标签和密钥,并将它替换为密钥存储信息:

    ...
    <Keys>
      <Key signing="true">
        <KeyStore file= "/etc/eap-secret-volume/keystore-saml.jks" password="password">
          <PrivateKey alias="sso-saml-demo" password="password"/>
          <Certificate alias="sso-saml-demo"/>
        </KeyStore>
      </Key>
    </Keys>

    keystore-saml.jks 的挂载路径(本例中为 /etc/eap-secret-volume/keystore-saml.jks)可使用 EAP_HTTPS_KEYSTORE_DIR 参数在应用程序模板中指定。
    当从 Red Hat Single Sign-On 客户端导出 SAML 密钥时,配置的 PrivateKey 和 Certificate 的别名和密码。

  5. 删除第二个 & lt;CertificatePem > 标签和密钥,并将其替换为 realm 证书信息:

    ...
    <Keys>
      <Key signing="true">
        <KeyStore file="/etc/eap-secret-volume/keystore-saml.jks" password="password">
          <Certificate alias="saml-demo"/>
        </KeyStore>
      </Key>
    </Keys>
    ...

    从 Red Hat Single Sign-On 客户端导出 SAML 密钥时,会配置证书别名和密码。

  6. 保存并关闭 /configuration/secure-saml-deployments 文件。

客户端类型还必须由应用程序 web.xml 中的 <auth-method > 键指定。在部署时,该文件由镜像读取。

打开应用程序 web.xml 文件,并确保它包括以下内容:

...
<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 登录应用程序。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

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

让开源更具包容性

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

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部