You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Wildfly 9 Realm转换为Wildfly 28 Elytron 17.0 JDBC Realm认证?

Wildfly 9 PicketBox Realm 转 Wildfly 28 Elytron 配置

以下是将你提供的Wildfly 9安全域配置适配为Elytron 17.0(对应Wildfly 28)的完整配置,每部分都与原配置一一对应:

核心配置对应关系

原PicketBox配置的核心要素在Elytron中对应如下:

  • 原Database登录模块 → Elytron的jdbc-realm
  • dsJndiName → 关联同名称的数据源JNDI地址
  • principalsQuery → JDBC Realm的principal-query SQL语句
  • rolesQuery → JDBC Realm的role-query SQL语句
  • unauthenticatedIdentity → Security Domain的default-unauthenticated-principal
  • hashAlgorithm + hashEncoding → 独立的password-encoder配置

完整Elytron配置

<subsystem xmlns="urn:wildfly:elytron:17.0" final-providers="combined-providers" disallowed-providers="OracleUcrypto">
    <!-- 密码编码器:对应原配置的SHA-256哈希算法+base64编码规则 -->
    <password-encoder name="sha256Base64Encoder" algorithm="SHA-256" encoding="base64">
        <salted with-password="false"/>
    </password-encoder>

    <!-- JDBC Realm:关联数据源并配置用户/角色查询逻辑 -->
    <jdbc-realm name="forrashazRealm" datasource="java:jboss/datasources/forrasDS" password-encoder="sha256Base64Encoder">
        <!-- 用户密码查询:对应原principalsQuery -->
        <principal-query sql="select password from v_active_user where username=?"/>
        <!-- 角色查询:对应原rolesQuery,直接映射角色名到Roles分组 -->
        <role-query sql="select group_name, 'Roles' from user_join_group where user_name=?"/>
    </jdbc-realm>

    <!-- 安全域:关联JDBC Realm并设置未认证默认用户 -->
    <security-domain name="forrashazRealm" default-realm="forrashazRealm" permission-mapper="default-permission-mapper">
        <realm name="forrashazRealm"/>
        <!-- 对应原配置的unauthenticatedIdentity -->
        <default-unauthenticated-principal name="anonymousUser"/>
    </security-domain>

    <!-- HTTP认证工厂:供Web应用调用该安全域进行认证 -->
    <http-authentication-factory name="forrashazAuthFactory" security-domain="forrashazRealm" http-server-mechanism-factory="global">
        <mechanism-configuration>
            <mechanism name="BASIC"/>
            <!-- 如需FORM表单认证,可添加<mechanism name="FORM"/>配置 -->
        </mechanism-configuration>
    </http-authentication-factory>
</subsystem>

额外配置说明

  1. 若你的密码存储时包含盐值,需要调整password-encoder的salted配置,比如设置with-password="true",并在principal-query中补充盐值查询(如select password, salt from v_active_user where username=?)
  2. 需在Undertow子系统中关联上述认证工厂,才能让Web应用生效:
<subsystem xmlns="urn:wildfly:undertow:24.0" default-server="default-server" default-virtual-host="default-host">
    <server name="default-server">
        <host name="default-host" alias="localhost">
            <!-- 关联Elytron认证工厂 -->
            <http-authentication-factory name="forrashazAuthFactory" security-domain="forrashazRealm"/>
        </host>
    </server>
</subsystem>

内容的提问来源于stack exchange,提问作者Papp Zoltán

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 10:33:17