第 9 章 JBoss EAP 中的 OpenID Connect


使用 JBoss EAP 原生 OpenID Connect (OIDC)客户端通过外部 OpenID 供应商保护应用程序。OIDC 是一个身份层,它允许客户端(如 JBoss EAP)根据 OpenID 供应商身份验证验证用户身份。例如,您可以使用 Red Hat Single Sign-On 作为 OpenID 供应商来保护 JBoss EAP 应用程序。

9.1. JBoss EAP 中的 OpenID Connect 配置

当您使用 OpenID 供应商保护应用程序时,您不需要在本地配置任何安全域资源。elytron-oidc-client 子系统在 JBoss EAP 中提供原生 OpenID Connect (OIDC)客户端,以与 OpenID 供应商连接。JBoss EAP 根据您的 OpenID 提供程序配置自动为您的应用程序创建虚拟安全域。

重要

建议您在 Red Hat Single Sign-On 中使用 OIDC 客户端。如果可将其他 OpenID 供应商配置为使用 JSON Web 令牌(JWT)的访问令牌,并可配置为使用 RS256、RS384、RS512、ES256、ES384 或 ES512 签名算法。

要启用 OIDC 的使用,您可以配置 elytron-oidc-client 子系统或应用程序本身。JBoss EAP 激活 OIDC 身份验证,如下所示:

  • 当您将应用程序部署到 JBoss EAP 时,elytron-oidc-client 子系统会扫描部署,以检测是否需要 OIDC 身份验证机制。
  • 如果子系统在 elytron-oidc-client 子系统或应用程序部署描述符中检测到部署的 OIDC 配置,JBoss EAP 为应用启用 OIDC 身份验证机制。
  • 如果子系统在两个位置检测到 OIDC 配置,则 elytron-oidc-client 子系统 secure-deployment 属性中的配置优先于应用程序部署描述符中的配置。
注意

使用 Red Hat Single Sign-On 保护应用程序 keycloak-client-oidc 层已在 JBoss EAP XP 4.0.0 中弃用。使用 elytron-oidc-client 子系统提供的原生 OIDC 客户端。

部署配置

要使用部署描述符使用 OIDC 保护应用程序,请更新应用程序的部署配置,如下所示:

  • WEB-INF 目录中创建一个名为 oidc.json 的文件,其中包含 OIDC 配置信息。

    oidc.json 内容示例

    {
      "client-id" : "customer-portal", 
    1
    
      "provider-url" : "http://localhost:8180/auth/realms/demo", 
    2
    
      "ssl-required" : "external", 
    3
    
       "credentials" : {
          "secret" : "234234-234234-234234" 
    4
    
       }
    }
    Copy to Clipboard Toggle word wrap

    1
    使用 OpenID 供应商标识 OIDC 客户端的名称。
    2
    OpenID 提供程序 URL。
    3
    对外部请求需要 HTTPS。
    4
    与 OpenID 供应商注册的客户端 secret。
  • 在应用程序部署描述符 web.xml 文件中将 auth-method 属性设置为 OIDC

部署描述符更新示例

<login-config>
    <auth-method>OIDC</auth-method>
</login-config>
Copy to Clipboard Toggle word wrap

子系统配置

您可以通过使用以下方法配置 elytron-oidc-client 子系统来保护使用 OIDC 的应用程序:

  • 如果您为每个应用程序使用相同的 OpenID 供应商,请为多个部署创建一个单一配置。
  • 如果您将不同的 OpenID 供应商用于不同的应用程序,请为每个部署创建不同的配置。

单个部署的 XML 配置示例:

<subsystem xmlns="urn:wildfly:elytron-oidc-client:1.0">
    <secure-deployment name="DEPLOYMENT_RUNTIME_NAME.war"> 
1

        <client-id>customer-portal</client-id> 
2

        <provider-url>http://localhost:8180/auth/realms/demo</provider-url> 
3

        <ssl-required>external</ssl-required> 
4

        <credential name="secret" secret="0aa31d98-e0aa-404c-b6e0-e771dba1e798" /> 
5

    </secure-deployment
</subsystem>
Copy to Clipboard Toggle word wrap
1
部署运行时名称。
2
使用 OpenID 供应商标识 OIDC 客户端的名称。
3
OpenID 提供程序 URL。
4
对外部请求需要 HTTPS。
5
与 OpenID 供应商注册的客户端 secret。

要使用同一 OpenID 供应商保护多个应用程序,请单独配置 提供程序,如下例所示:

<subsystem xmlns="urn:wildfly:elytron-oidc-client:1.0">
    <provider name="${OpenID_provider_name}">
        <provider-url>http://localhost:8080/auth/realms/demo</provider-url>
        <ssl-required>external</ssl-required>
    </provider>
    <secure-deployment name="customer-portal.war"> 
1

        <provider>${OpenID_provider_name}</provider>
        <client-id>customer-portal</client-id>
        <credential name="secret" secret="0aa31d98-e0aa-404c-b6e0-e771dba1e798" />
    </secure-deployment>
    <secure-deployment name="product-portal.war"> 
2

        <provider>${OpenID_provider_name}</provider>
        <client-id>product-portal</client-id>
        <credential name="secret" secret="0aa31d98-e0aa-404c-b6e0-e771dba1e798" />
    </secure-deployment>
</subsystem>
Copy to Clipboard Toggle word wrap
1
一个部署: customer-portal.war
2
另一个部署: product-portal.war
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat