搜索

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

download PDF

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

注意

这个示例使用 SAML 客户端,但也可以使用 OpenID-Connect 客户端。如需有关 OpenID-Connect 和 SAML 客户端之间的区别的更多信息,请参阅 Red Hat Single Sign-On ClientsAutomatic 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.jkskeycloak-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 URLValid 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

4.6.2. 为 OpenShift 部署准备红帽单点登录身份验证

使用包含 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 密钥时,配置的 PrivateKeyCertificate 的别名和密码。

  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 文件。

4.6.4. 在应用程序 web.xml中配置 SAML 客户端注册

客户端类型还必须由应用程序 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 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

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

© 2024 Red Hat, Inc.