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

quarkus-oidc-client password授权模式不支持额外授权选项问题咨询

Quarkus OIDC Client Password模式额外参数问题解答

官方支持计划

Quarkus开发团队已将Password授权模式下的自定义额外参数支持纳入版本迭代计划,该特性会在3.6及后续正式版本中原生支持,届时可直接通过配置前缀quarkus.oidc-client.grant-options.password.*传入任意服务端要求的额外授权参数。

临时可用解决方案

1. 编程式调用OidcClient场景

直接手动构造TokenGrantRequest对象传入额外参数即可,示例代码如下:

import io.quarkus.oidc.client.OidcClient;
import io.quarkus.oidc.client.Tokens;
import io.quarkus.oidc.common.runtime.TokenGrantRequest;
import jakarta.inject.Inject;
import io.smallrye.mutiny.Uni;
import java.util.Map;

public class OidcTokenService {
    @Inject
    OidcClient oidcClient;

    public Uni<Tokens> fetchPingToken(String username, String password) {
        // 传入Ping Identity要求的额外参数
        Map<String, String> extraGrantParams = Map.of("validator_id", "实际的validator_id值");
        TokenGrantRequest grantRequest = TokenGrantRequest.passwordGrant(username, password)
                .extraParams(extraGrantParams);
        return oidcClient.requestTokens(grantRequest);
    }
}

2. 声明式自动注入Tokens场景

如果你的项目使用的是框架自动注入Tokens的方式,不想手动发起授权请求,可以通过实现OidcClientConfigCustomizer全局注入额外授权参数,示例代码如下:

import io.quarkus.oidc.client.OidcClientConfig;
import io.quarkus.oidc.client.OidcClientConfigCustomizer;
import jakarta.enterprise.context.ApplicationScoped;
import org.eclipse.microprofile.config.spi.ConfigValue;

@ApplicationScoped
public class PingOidcCustomizer implements OidcClientConfigCustomizer {
    @Override
    public void customize(OidcClientConfig config) {
        // 可添加clientId判断,仅针对特定OIDC客户端生效
        if ("ping-identity".equals(config.clientId().orElse(null)) 
                && "password".equals(config.grant().type().orElse(null))) {
            config.grantOptions().put("password.validator_id", 
                    ConfigValue.builder().value("实际的validator_id值").build());
        }
    }
}

注意:如果validator_id是动态变化的值而非固定配置,推荐优先使用第一种编程式方案,灵活度更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 01:15:03