1.4. 创建故障转移域


1.4.1. Elytron 中的故障转移域

您可以在 Elytron 中配置故障转移安全域 failover-realm ,其引用两个现有的安全域,以便在一个安全域失败时,Elytron 使用另一个作为备份。

Elytron 中的 failover-realm 引用两个安全域:

  • delegate-realm :要使用的主安全域。
  • failover-realm :要用作备份的安全域。

failover-realm 配置示例

/subsystem=elytron/failover-realm=exampleSecurityRealm:add(delegate-realm=exampleLDAPRealm,failover-realm=exampleFileSystemRealm)
Copy to Clipboard Toggle word wrap

在示例中,exampleLDAPRealm 是一个 ldap-realm,用作委派域, exampleFileSystemRealm 是一个 filesystem-realm,用作 failover-realm。如果 ldap-realm 失败,Elytron 将使用 filesystem-realm 进行身份验证和授权。

注意

failover-realm 中,只有当 delegate-realm 失败时才会调用 failover-realm。如果与 delegate-realm 的连接成功但没找到所需的身份,则不会调用 fail-over 域。要搜索跨多个安全域的身份,请使用 distributed-realm

1.4.2. 创建故障转移域所需的安全域的示例

以下示例演示了创建 ldap-realmfilesystem-realm。您可以在 failover-realm 中引用这些安全域。

1.4.2.1. 在 Elytron 示例中创建一个 ldap-realm

创建由轻量级目录访问协议(LDAP)身份存储支持的 Elytron 安全域,来保护 JBoss EAP 服务器接口或在服务器上部署的应用程序。

对于此过程中的示例,使用了以下 LDAP 数据交换格式(LDIF):

dn: ou=Users,dc=wildfly,dc=org
objectClass: organizationalUnit
objectClass: top
ou: Users

dn: uid=user1,ou=Users,dc=wildfly,dc=org
objectClass: top
objectClass: person
objectClass: inetOrgPerson
cn: user1
sn: user1
uid: user1
userPassword: userPassword1

dn: ou=Roles,dc=wildfly,dc=org
objectclass: top
objectclass: organizationalUnit
ou: Roles

dn: cn=Admin,ou=Roles,dc=wildfly,dc=org
objectClass: top
objectClass: groupOfNames
cn: Admin
member: uid=user1,ou=Users,dc=wildfly,dc=org
Copy to Clipboard Toggle word wrap

用于示例的 LDAP 连接参数如下:

  • LDAP URL :ldap://10.88.0.2
  • LDAP admin 密码:secret

    您需要此内容来使 Elytron 与 LDAP 服务器连接。

  • LDAP admin 可分辨名称(DN): (cn=admin,dc=wildfly,dc=org)
  • LDAP 机构:wildfly

    如果没有指定机构名称,则默认为 Example Inc

  • LDAP 域:wildfly.org

    这是当平台收到 LDAP 搜索参考时匹配的名称。

先决条件

  • 您已配置了一个 LDAP 身份存储。
  • JBoss EAP 正在运行。

流程

  1. 配置一个提供 URL 的目录上下文,以及用于连接到 LDAP 服务器的主体。

    /subsystem=elytron/dir-context=<dir_context_name>:add(url="<LDAP_URL>",principal="<principal_distinguished_name>",credential-reference=<credential_reference>)
    Copy to Clipboard Toggle word wrap

    Example

    /subsystem=elytron/dir-context=exampleDirContext:add(url="ldap://10.88.0.2",principal="cn=admin,dc=wildfly,dc=org",credential-reference={clear-text="secret"})
    {"outcome" => "success"}
    Copy to Clipboard Toggle word wrap

  2. 创建一个引用目录上下文的 LDAP 域。指定搜索基础 DN 以及用户的映射方式。

    语法

    /subsystem=elytron/ldap-realm=<ldap_realm_name>add:(dir-context=<dir_context_name>,identity-mapping=search-base-dn="ou=<organization_unit>,dc=<domain_component>",rdn-identifier="<relative_distinguished_name_identifier>",user-password-mapper={from=<password_attribute_name>},attribute-mapping=[{filter-base-dn="ou=<organization_unit>,dc=<domain_component>",filter="<ldap_filter>",from="<ldap_attribute_name>",to="<identity_attribute_name>"}]})
    Copy to Clipboard Toggle word wrap

    Example

    /subsystem=elytron/ldap-realm=exampleLDAPRealm:add(dir-context=exampleDirContext,identity-mapping={search-base-dn="ou=Users,dc=wildfly,dc=org",rdn-identifier="uid",user-password-mapper={from="userPassword"},attribute-mapping=[{filter-base-dn="ou=Roles,dc=wildfly,dc=org",filter="(&(objectClass=groupOfNames)(member={1}))",from="cn",to="Roles"}]})
    {"outcome" => "success"}
    Copy to Clipboard Toggle word wrap

现在,您可以使用这个域来创建安全域,或与 failover-realmdistributed-realmaggregate-realm 中的其它域合并。您还可以为 ldap-realm 配置一个 caching-realm 来缓存查找的结果,并提高性能。

1.4.2.2. 在 Elytron 示例中创建一个 filesystem-realm

创建一个由基于文件系统的身份存储支持的 Elytron 安全域,来保护 JBoss EAP 服务器接口或在服务器上部署的应用程序。

先决条件

  • JBoss EAP 正在运行。

流程

  1. 在 Elytron 中创建一个 filesystem-realm

    语法

    /subsystem=elytron/filesystem-realm=<filesystem_realm_name>:add(path=<file_path>)
    Copy to Clipboard Toggle word wrap

    Example

    /subsystem=elytron/filesystem-realm=exampleFileSystemRealm:add(path=fs-realm-users,relative-to=jboss.server.config.dir)
    {"outcome" => "success"}
    Copy to Clipboard Toggle word wrap

  2. 将用户添加到域,并配置用户的角色。

    1. 添加用户。

      语法

      /subsystem=elytron/filesystem-realm=<filesystem_realm_name>:add-identity(identity=<user_name>)
      Copy to Clipboard Toggle word wrap

      Example

      /subsystem=elytron/filesystem-realm=exampleFileSystemRealm:add-identity(identity=user1)
      {"outcome" => "success"}
      Copy to Clipboard Toggle word wrap

    2. 设置用户的密码。

      语法

      /subsystem=elytron/filesystem-realm=<filesystem_realm_name>:set-password(identity=<user_name>, clear={password=<password>})
      Copy to Clipboard Toggle word wrap

      Example

      /subsystem=elytron/filesystem-realm=exampleFileSystemRealm:set-password(identity=user1, clear={password="passwordUser1"})
      {"outcome" => "success"}
      Copy to Clipboard Toggle word wrap

    3. 为用户设置角色。

      语法

      /subsystem=elytron/filesystem-realm=<filesystem_realm_name>:add-identity-attribute(identity=<user_name>,name=<roles_attribute_name>, value=[<role_1>,<role_N>])
      Copy to Clipboard Toggle word wrap

      Example

      /subsystem=elytron/filesystem-realm=exampleFileSystemRealm:add-identity-attribute(identity=user1, name=Roles, value=["Admin","Guest"])
      {"outcome" => "success"}
      Copy to Clipboard Toggle word wrap

现在,您可以使用这个域来创建一个安全域,或与 failover-realmdistributed-realmaggregate-realm 中的另一个域合并。

1.4.3. 在 Elytron 中创建一个 failover-realm

在 Elytron 中创建一个故障转移安全域,它将现有安全域引用为委派域、要使用的默认域以及故障转移域。Elytron 在委派域失败时使用配置的故障转移域。使用安全域创建安全域,来向管理接口或服务器上部署的应用程序添加身份验证和授权。

先决条件

  • JBoss EAP 正在运行。
  • 您已创建了域来用作委派和故障转移域。

流程

  1. 从现有的安全域创建一个 failover-realm

    语法

    /subsystem=elytron/failover-realm=<failover_realm_name>:add(delegate-realm=<realm_to_use_by_default>,failover-realm=<realm_to_use_as_backup>)
    Copy to Clipboard Toggle word wrap

    Example

    /subsystem=elytron/failover-realm=exampleSecurityRealm:add(delegate-realm=exampleLDAPRealm,failover-realm=exampleFileSystemRealm)
    {"outcome" => "success"}
    Copy to Clipboard Toggle word wrap

  2. 创建一个角色解码器,来将属性映射到角色。

    语法

    /subsystem=elytron/simple-role-decoder=<role_decoder_name>:add(attribute=<attribute>)
    Copy to Clipboard Toggle word wrap

    Example

    /subsystem=elytron/simple-role-decoder=from-roles-attribute:add(attribute=Roles)
    {"outcome" => "success"}
    Copy to Clipboard Toggle word wrap

  3. 创建一个引用 failover-realm 和角色解码器的安全域。

    语法

    /subsystem=elytron/security-domain=<security_domain_name>:add(default-realm=<failover_realm_name>,permission-mapper=default-permission-mapper,realms=[{realm=<failover_realm_name>,role-decoder="<role_decoder_name>"}])
    Copy to Clipboard Toggle word wrap

    Example

    /subsystem=elytron/security-domain=exampleSecurityDomain:add(default-realm=exampleSecurityRealm,permission-mapper=default-permission-mapper,realms=[{realm=exampleSecurityRealm,role-decoder="from-roles-attribute"}])
    {"outcome" => "success"}
    Copy to Clipboard Toggle word wrap

现在,您可以使用创建的安全域来向管理界面和应用程序添加身份验证和授权。如需更多信息,请参阅 保护管理界面和应用程序

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat