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

WildFly31中使用credential-reference配置数据源凭证的方法

问题

在WildFly 26中,可在数据源的<security>标签内使用<user-name>和<password>标签配置凭证,同时结合<credential-reference>引用存储的密码,该配置可正常运行。但升级至WildFly 31后,上述标签被提示无效,疑似已被弃用或不再支持。尝试按文档将用户名和密码作为<security>标签的属性配置,却未生效。现需了解如何在WildFly 31的<security>标签内使用credential-reference配置用户名和密码,以实现凭证的安全隐藏。

WildFly 26 有效配置

<datasource enabled="true" jndi-name="java:/jdbc/bankstate_kghs" jta="true" pool-name="jdbc/bankstate_kghs" statistics-enabled="true" use-ccm="true" use-java-context="true" xmlns="urn:jboss:domain:datasources:7.0">
    <connection-url>jdbc:sqlserver://piligerwest1:1433;databaseName=master;trustServerCertificate=true;applicationName=bankstate</connection-url>
    <driver>bankstate</driver>
    <pool>
        <min-pool-size>0</min-pool-size>
        <max-pool-size>100</max-pool-size>
        <use-strict-min>false</use-strict-min>
        <prefill>false</prefill>
    </pool>
    <security>
        <user-name>admin</user-name>
        <credential-reference alias="bankstate-admin" store="bankstate_cred_store"/>
    </security>
    <validation>
        <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker"/>
        <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLExceptionSorter"/>
        <background-validation-millis>120000</background-validation-millis>
        <background-validation>true</background-validation>
    </validation>
    <timeout>
        <idle-timeout-minutes>1</idle-timeout-minutes>
    </timeout>
</datasource>

WildFly 31 未生效的尝试配置

<datasource enabled="true" jndi-name="java:/jdbc/bankstate_gts" jta="true" pool-name="jdbc/bankstate_gts" statistics-enabled="true" use-ccm="true" use-java-context="true" xmlns="urn:jboss:domain:datasources:7.1">
    <connection-url>jdbc:sqlserver://piligerwest1:1433;databaseName=master;applicationName=bankstate</connection-url>
    <driver>bankstate10</driver>
    <pool>
        <min-pool-size>0</min-pool-size>
        <max-pool-size>100</max-pool-size>
        <use-strict-min>false</use-strict-min>
        <prefill>false</prefill>
    </pool>
    <security username="admin" password="Ajndnjenekdek">
    
    </security>
    <validation>
        <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker"/>
        <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLExceptionSorter"/>
        <background-validation-millis>120000</background-validation-millis>
        <background-validation>true</background-validation>
    </validation>
    <timeout>
        <idle-timeout-minutes>1</idle-timeout-minutes>
    </timeout>
</datasource>

解决方案

WildFly 31对数据源配置的XML Schema进行了更新,移除了<security>标签下的<user-name>和<password>子元素,需采用以下两种方式配置:

方式1:明文用户名 + 凭证存储密码

如果用户名无需隐藏,仅密码通过凭证存储引用,可将用户名作为<security>标签的属性,同时保留<credential-reference>元素引用密码:

<datasource enabled="true" jndi-name="java:/jdbc/bankstate_gts" jta="true" pool-name="jdbc/bankstate_gts" statistics-enabled="true" use-ccm="true" use-java-context="true" xmlns="urn:jboss:domain:datasources:7.1">
    <connection-url>jdbc:sqlserver://piligerwest1:1433;databaseName=master;applicationName=bankstate</connection-url>
    <driver>bankstate10</driver>
    <pool>
        <min-pool-size>0</min-pool-size>
        <max-pool-size>100</max-pool-size>
        <use-strict-min>false</use-strict-min>
        <prefill>false</prefill>
    </pool>
    <security username="admin">
        <credential-reference alias="bankstate-admin" store="bankstate_cred_store"/>
    </security>
    <validation>
        <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker"/>
        <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLExceptionSorter"/>
        <background-validation-millis>120000</background-validation-millis>
        <background-validation>true</background-validation>
    </validation>
    <timeout>
        <idle-timeout-minutes>1</idle-timeout-minutes>
    </timeout>
</datasource>

方式2:用户名和密码均通过凭证存储引用

如果用户名也需要隐藏,可为用户名和密码分别指定凭证存储的别名,并通过type属性区分类型:

<datasource enabled="true" jndi-name="java:/jdbc/bankstate_gts" jta="true" pool-name="jdbc/bankstate_gts" statistics-enabled="true" use-ccm="true" use-java-context="true" xmlns="urn:jboss:domain:datasources:7.1">
    <connection-url>jdbc:sqlserver://piligerwest1:1433;databaseName=master;applicationName=bankstate</connection-url>
    <driver>bankstate10</driver>
    <pool>
        <min-pool-size>0</min-pool-size>
        <max-pool-size>100</max-pool-size>
        <use-strict-min>false</use-strict-min>
        <prefill>false</prefill>
    </pool>
    <security>
        <credential-reference alias="bankstate-admin-username" store="bankstate_cred_store" type="username"/>
        <credential-reference alias="bankstate-admin-password" store="bankstate_cred_store" type="password"/>
    </security>
    <validation>
        <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker"/>
        <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLExceptionSorter"/>
        <background-validation-millis>120000</background-validation-millis>
        <background-validation>true</background-validation>
    </validation>
    <timeout>
        <idle-timeout-minutes>1</idle-timeout-minutes>
    </timeout>
</datasource>

注意事项

  • 确保WildFly配置中已正确定义凭证存储bankstate_cred_store,且对应别名已存储正确的用户名/密码值。
  • 若之前直接使用password属性未生效,需检查凭证存储的配置是否正确,或是否存在权限问题导致无法读取凭证。

内容的提问来源于stack exchange,提问作者john smith

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 20:06:00