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

Quarkus:如何从OIDC租户获取已解析的issuer值

获取OIDC租户自省后的Issuer值方案

以下是几种可行的解决思路,你可以根据实际场景选择:

  • 反射绕过包私有访问限制
    这是应急方案,虽然不推荐(依赖内部实现,版本更新可能失效),但能快速解决问题。示例代码:

    // 假设已获取TenantConfigBean实例
    TenantConfigContext context = tenantConfigBean.getTenantConfigContext();
    // 反射获取包私有成员
    Field oidcProviderField = TenantConfigContext.class.getDeclaredField("oidcProvider");
    oidcProviderField.setAccessible(true);
    OidcProvider oidcProvider = (OidcProvider) oidcProviderField.get(context);
    String resolvedIssuer = oidcProvider.getIssuer();
    
  • 查找间接获取的公开API
    先检查TenantConfigBean或TenantConfigContext是否有公开方法能间接拿到issuer,比如是否提供了获取OIDC元数据(如getOidcMetadata())的接口,从元数据中提取issuer值。这种方式是官方支持的,优先使用。

  • 自定义扩展类(框架允许的情况下)
    如果框架支持替换TenantConfigContext的实现,可以继承原类并添加公开getter暴露OidcProvider:

    public class CustomTenantConfigContext extends TenantConfigContext {
        public OidcProvider getOidcProvider() {
            return super.oidcProvider; // 访问父类的包私有成员
        }
    }
    

    之后在配置中把默认的TenantConfigContext替换为自定义类,就能在CustomTenantResolver中直接调用getOidcProvider()获取issuer了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 09:35:57