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

如何在@OpenIdAuthenticationMechanismDefinition的extraParameters中使用EL?

Jakarta EE 10中@OpenIdAuthenticationMechanismDefinition注解的EL表达式使用问题

我在Jakarta EE 10的jakarta-ee-security-api中使用@OpenIdAuthenticationMechanismDefinition注解定义参数时遇到问题,希望了解表达式语言(EL)的正确用法。

硬编码参数可行案例

硬编码参数的方式可以正常运行:

@OpenIdAuthenticationMechanismDefinition(
        clientId = "123",
        clientSecret = "xxx",
        extraParameters = { "audience=abc", "team=def" }
)
public class MyBean  {
   ...
}

单个参数EL绑定可行案例

Jakarta EE的jakarta-ee-security-api支持通过EL引用CDI Bean实现动态赋值,如下对clientId和clientSecret的设置可正常工作:

@OpenIdAuthenticationMechanismDefinition(
        clientId = "${configBean.clientId}",
        clientSecret = "${configBean.clientSecret}",
        extraParameters = { "audience=abc", "team=def" }
)
public class MyBean  {
   ...
}

数组参数EL绑定失败案例

但尝试为期望字符串数组的extraParameters属性绑定CDI Bean时失败,代码如下:

@OpenIdAuthenticationMechanismDefinition(
        clientId = "${configBean.clientId}",
        clientSecret = "${configBean.clientSecret}",
        extraParameters = "${configBean.extraParameters}"
)
public class MyBean  {
   ...
}


@ApplicationScoped
@Named
public class ConfigBean implements Serializable {
    ...
    public String getClientId() {
        return clientId;
    }
    public String getClientSecret() {
        return clientSecret;
    }
    public String[] getExtraParameters() {
        return { "audience=abc", "team=def" };
    }
}

在Wildfly 27中运行该代码会抛出异常:

jakarta.enterprise.inject.spi.DefinitionException: OpenIdAuthenticationMechanismDefinition.extraParameters() value '${configBean.extraParameters}' is not of the format key=value

问题

我想请教:

  • 如何使用EL设置extraParameters参数?
  • 另外,我注意到存在后缀为expression的extraParametersExpression参数(期望String类型),但也未找到用EL赋值的解决方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 21:24:59