2.6. 使用多个身份服务配置身份验证和授权


如果您在不同身份存储之间存储身份属性,则请使用 aggregate-realm 将身份属性加载到单个安全域中以进行身份验证和授权。

2.6.1. 在 Elytron 中聚合 Realm

通过 聚合域,您可以使用一个安全域进行身份验证,也可以使用另一个安全域聚合多个安全域,从而在 Elytron 中进行身份验证。例如,您可以将聚合域配置为使用属性域来进行身份验证,并使用 JDBC 域来进行身份验证。

在配置为聚合多个授权域的聚合域中,会创建一个身份,如下所示:

  • 加载为授权配置的每个安全域的属性值。
  • 如果在多个授权域中定义了属性,则使用属性第一次出现的值。

以下示例演示了如何在多个授权域包含相同身份属性的定义时创建身份。

示例

聚合 realm 配置:

authentication-realm=properties-realm,
authorization-realms=[jdbc-realm,ldap-realm]
  • 从 JDBC 域获取的属性值:

    e-mail: user@example.com
    groups: Supervisor, User
  • 从 ldap 域获取的属性值:

    e-mail: administrator@example.com
    phone: 0000 0000 0000

从聚合域获取的身份:

e-mail: user@example.com
groups: Supervisor, User
phone: 0000 0000 0000

在示例中,两个授权域中都定义了 e-mail 属性。JDBC 域中定义的值用于生成的聚合域中的 电子邮件 属性,因为聚合域配置为聚合授权域,即 authorization-realms=[jdbc-realm,ldap-realm]

2.6.2. 使用聚合域配置身份验证和授权

要使用聚合域配置身份验证和授权,请创建一个聚合域,并配置安全域和应用安全域以使用聚合域。

先决条件

  • 配置要聚合的安全域。

    有关配置安全域的详情,请参考 如何配置身份管理 指南中的 Elytron subsystem。

  • 配置要在安全域中使用的角色解码器。

    有关角色解码器的详情,请参阅 如何配置服务器安全 指南中的创建 Elytron Role Decoder

流程

  1. 创建聚合域:

    • 使用一个授权域创建聚合域:

      /subsystem=elytron/aggregate-realm=exampleAggregateRealm:add(authentication-realm=__SECURITY_REALM_FOR_AUTHENTICATION__, authorization-realm=__SECURITY_REALM_FOR_AUTHORIZATION__)
    • 创建具有多个授权域的聚合域:

      /subsystem=elytron/aggregate-realm=exampleAggregateRealm:add(authentication-realm=__SECURITY_REALM_FOR_AUTHENTICATION__, authorization-realms=[__SECURITY_REALM_FOR_AUTHORIZATION_1__,__SECURITY_REALM_FOR_AUTHORIZATION_2__,...,__SECURITY_REALM_FOR_AUTHORIZATION_N__])
  2. 配置 security-domain

    /subsystem=elytron/security-domain=exampleAggregateRealmSD:add(realms=[{realm=exampleAggregateRealm,role-decoder=__ROLE-DECODER__}],default-realm=exampleAggregateRealm,permission-mapper=default-permission-mapper)
  3. undertow 子系统中配置 application-security-domain

    /subsystem=undertow/application-security-domain=exampleAggregareRealmApplicationDomain:add(security-domain=exampleAggregateRealmSD)
  4. 配置应用程序的 web.xmljboss-web.xml

    您的 web.xmljboss-web.xml 必须更新为使用您在 JBoss EAP 中配置的 application-security-domain。例如,将 Web 应用程序配置为使用 Elytron 或传统安全性进行身份验证

2.6.3. Aggregate Realms 示例

使用单个授权域聚合域示例

在本例中,s properties-realm 用于身份验证,aj dbc-realm 用于授权。

您必须预配置以下域:

  • properties-realm named examplPropertiesRealm
  • jdbc-realm named exampleJdbcRealm

使用以下命令创建一个聚合域:

/subsystem=elytron/aggregate-realm:exampleSimpleAggregateRealm:add(authentication-realm=examplPropertiesRealm,authorization-realm=exampleJdbcRealm)

包含两个授权域的聚合域示例

在本例中,properties-realm 用于身份验证,并且 ldap-realmjdbc-realm 的聚合用于授权。

您必须预配置以下域:

  • properties-realm named examplPropertiesRealm
  • jdbc-realm named exampleJdbcRealm
  • ldap-realm named exampleLdapRealm

使用以下命令创建一个聚合域:

/subsystem=elytron/aggregate-realm:exampleSimpleAggregateRealm:add(authentication-realm=examplPropertiesRealm,authorization-realms=[exampleJdbcRealm,exampleLdapRealm])
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

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

让开源更具包容性

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

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部