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
相关产品推荐
相关产品推荐

